3

Кто-нибудь знает утилиту linux, которая предотвращает выгрузку всей памяти в разветвленном процессе на диск? Я видел вызов mlockall, но взлом приложения звучит как излишнее.

Моя причина в том, что я использую Windows XP под VirtualBox на моем нетбуке с linux, и я обеспокоен тем, что в основном происходит два уровня обмена, которые на одном жестком диске неторопливого нетбука не годятся ...

3 ответа3

2

Если он действительно "поменяется" (т. Е. Сильно загружен на диске), вашей системе потребуется больше памяти.

Если оперативной памяти достаточно, операционные системы не меняются местами, кроме подкачки некоторых «утомительных» процессов, чтобы освободить больше физической памяти.

Он не дает прямого ответа на ваш вопрос, но, возможно, вы сможете получить некоторую выгоду от установки ядра с поддержкой zram/cache: это обеспечит вам некоторый объем оперативной памяти, сжатый кэш страниц и своп.

Таким образом, ваша система будет по-прежнему выводить страницу ("подкачку"), но она будет делать большую часть ее для ускорения, и благодаря сжатию количество страниц памяти, сохраняемых в физической памяти (в активной памяти или в zcache), будет больше что вы получаете от обычного несжатого барана.

0

Я считаю, что для одного процесса mlock и его родственники - единственный путь.

В масштабе всей системы вы можете обнаружить, что получаете лучшую производительность, играя с "перестановкой". Попробуйте sysctl vm.swappiness чтобы прочитать значение, и sysctl -w vm.swappiness=N чтобы установить его в N , где это некоторое меньшее число, чем в настоящее время. (Попробуйте 0, если вы хотите быть экстремальным, сообщая ядру, что оно всегда должно удалять кэшированные страницы, предпочитая замену.)

0

Вы также можете контролировать, в какой момент система начинает использовать память подкачки. Это скажет вам, какое текущее значение на вашем компьютере:

cat /proc /sys /vm /swappiness

Linux по умолчанию был 60. Грубо говоря, это означает, что компьютер начнет использовать разделы подкачки, когда используется всего лишь 40% оперативной памяти. Это было безопасное значение по умолчанию для старых машин. Однако, если у вас достаточно оперативной памяти, вы можете уменьшить перестановку.

На лету:

sudo sysctl vm.swappiness = 10

sudo swapoff -a

sudo swapon -a

Или навсегда, добавив vm.swappiness = 10 в /etc/sysctl.conf (для Debian).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .