Swappiness für aggressives Swapping

Swappiness für aggressives Swapping

Ich möchte Ubuntu 14.04 mit aggressivem Swapping-Verhalten konfigurieren. Ich verwende Linux-Kernel 3.14. Ich habe die Swappiness mit dem folgenden Befehl geändert.

echo 100 > /proc/sys/vm/swappiness

Das Betriebssystem scheint jedoch keine Seiten auszulagern, bis der Host nicht mehr genügend freien Speicher hat. Wie kann ich das Betriebssystem dazu bringen, die nicht aufgerufenen Seiten proaktiv auf das Auslagerungsgerät auszulagern?

Antwort1

Verwenden Sie den RAM für etwas anderes. Prozesse, die Speicher oder Festplatten-E/A zuweisen und versuchen, Cache zuzuweisen, verschieben ungenutzte Seiten in den Swap-Speicher, um Platz zu schaffen. Die Variable „swappiness“ bewirkt lediglich, dass das System Anwendungen bevorzugt auslagert und stattdessen RAM für den Dateisystem-Cache verwendet.

Antwort2

Warum würden Sie das jemals tun wollen?

Wie dem auch sei, wenn es das ist, was Sie wollen, dann ist es das, was Sie bekommen:

#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

verwandte Informationen