Swappiness для агрессивного свопинга

Я хочу настроить Ubuntu 14.04 с агрессивным поведением свопинга. Я использую ядро Linux 3.14. Я изменил swappiness использование следующей команды.

echo 100 > /proc/sys/vm/swappiness

Однако ОС, кажется, не выгружает страницы, пока хост не разряжает свободную память. Как я могу сделать ОС для превентивной выгрузки страниц, к которым не получают доступ, к устройству свопинга?

1
задан 28 September 2015 в 16:09

2 ответа

Используйте поршень для чего-то еще. Процессы, выделяющие память или диск IO, пытающийся выделить кэш, выставят неактивные страницы для свопинга для создания места. swappiness переменная просто заставляет систему предпочесть приложениям доставки способствовать поршню использования для кэша файловой системы вместо этого.

3
ответ дан 7 December 2019 в 12:48

Почему Вы когда-либо хотели бы сделать это для?

Так или иначе, если это - то, что Вы хотите, это - то, что Вы получите:

#include <stdio.h>
#include <sys/sysinfo.h>

fGetMyRAM()
{
    FILE* fStream = popen( "head -n1 /proc/meminfo", "r" );
    std::ostringstream output;
    int iBuffer = 128;

    while( !feof( fStream ) && !ferror( fStream ))
    {
        char cBuffer[iBuffer];
        int iBytesRead = fread( cBuffer, 1, iBuffer, fStream );
        output.write( cBuffer, iBytesRead );
    }
    std::string sResult = output.str();

    std::string sLabel, sRAM;
    std::istringstream iss(sResult);
    iss >> sLabel;
    iss >> sRAM;

    return std::stoi( sRAM );
}

int main()
{
  int iMyRAM = fGetMyRAM();
  int *pMemoryHog;

  while (true)
  {
    //as malloc alocates largest contiguous memory, keep slicing down.
    iMyRam = iMyRam/2;

    printf("%d\n", iMyRam);

    pMemoryHog = (int *) malloc ((iMyRam)*sizeof(void *));

    if (pMemoryHog == 0)
    {
      printf("Yeah! NO MORE MEMORY!\n");
      return 1;
    } // end if out of memory
    strcpy(pMemoryHog, "42");
  } // end while true
  free(pMemoryHog);
  return 0;
} // end main
0
ответ дан 7 December 2019 в 12:48

Другие вопросы по тегам:

Похожие вопросы: