Frage

Ich habe ein Programm, das viel Speicher benötigt, wie 2/3 aller physischen RAM. Nach einiger Laufzeit beginnt mein Betriebssystem das Programm auf der Festplatte zu tauschen. Aber ich brauche das Programm zu reagieren sehr schnell die ganze Zeit, so dass ich Paging für diesen Prozess verhindern müssen.

Wie können Sie das Betriebssystem Swap einen Prozess verhindern?

Vielen Dank für jede Hilfe!

War es hilfreich?

Lösung

Zu Beginn des Programms Aufruf:

mlockall(MCL_CURRENT | MCL_FUTURE);

(Wenn Sie die Quelle nicht auf das Programm haben, werden Sie den Prozess mit ptrace müssen debauch dies zu tun).

Bitte beachten Sie, dass dies die Chancen der Speicherzuweisungen durch den Prozess erhöht versagen.

Andere Tipps

Nun, es gibt mlock für Speicher Sperren (den Kernel sagen, es nicht sein kann, ausgelagert), aber das ist für relativ kleine Mengen an Speicher gemeint, und würde eine Modifikation des Programms erforderlich ist.

Die andere Option könnte sein, Linux „swappiness“, das heißt seine Tendenz zu tauschen Seiten einzustellen. Siehe hier für eine interessante Diskussion. Das ist nicht möglich, pro Prozess jedoch.

Ich bin nicht bekannt, dass Pro-Prozess-Lösung für Ihr Problem.

Mit mmap () anstelle von malloc, und verwenden Sie die "MAP_LOCKED" Flagge. (Arbeiten unter Linux> 2.5.37)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top