Скинуть неиспользуемую оперативу в своп (Swap Ram)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by salopiat, 16 Sep 2010.

  1. salopiat

    salopiat New Member

    Joined:
    16 Sep 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Передо мной такая задача, нужно запустить на 1 компьютере по масимуму клиентов игры. Но чтобы не было тормозов и т. п.

    При этом никаких ресурсов игры не задействуется, кроме внутриигрового чата.

    Проблему я решил просто, нужно всю неиспользуемую память в данный момент сбросить в своп, и тогда вместо 400МБ будет нужно максимум 50-60 МБ физической памяти, без всяких тормозов и лагов.

    Делаю я это с помощью TotalCommander, там есть такая функция в диспетчере задач.

    http://i057.radikal.ru/1009/aa/0580a5aa042f.jpg


    После такой обработки на компе можно запустить в 4 раза больше клиентов без всяких тормозов :)



    Теперь моя задача это автоматизировать, а как - я не знаю, скорее всего там одна какая то WinApi вызывается.

    Буду очень благодарен если вы подскажете название этой функции, я ничего не нашёл к сожалению.

    Если кто найдет/сделает мне готовый пример на AutoIt даю пару сотен WMR.
    Можн на любом другом языке, лишь бы работало в консоли.


    В крайнем случае может быть есть консольная программа/стандартая виндовая команда для этого

    ICQ: 309765
     
    #1 salopiat, 16 Sep 2010
    Last edited: 16 Sep 2010
  2. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Когда-то использовал такой код для освобождения оперативы, при желании можешь консольную прогу сделать сам:
    Code:
    procedure TrimWorkingSet(PID: Integer);
    var
      MainHandle: THandle;
    begin
      if Win32Platform = VER_PLATFORM_WIN32_NT then
      begin
        MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, PID);
        SetProcessWorkingSetSize(MainHandle, DWORD(-1), DWORD(-1));
        CloseHandle(MainHandle);
      end;
    end;
    
     
  3. salopiat

    salopiat New Member

    Joined:
    16 Sep 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Большое спасибо, сразу всё нашлось.


    http://www.autoitscript.com/forum/index.php?showtopic=13399

    Апишка называется EmptyWorkingSet, конечно с таким названием фиг найдешь)
     
    #3 salopiat, 16 Sep 2010
    Last edited: 16 Sep 2010