Я хотел бы знать, возможно ли перенести страницы из определенного процесса в основную память, или установить параметры для данного процесса или класса процесса, чтобы он не был выгружен.
2 ответа
Вы можете отменить процесс, прочитав все его страницы памяти.
Обычно это было бы немного обременительно (чтение /proc/…/maps
чтобы узнать, где находятся выделенные страницы, затем чтение этих страниц из /proc/…/mem
просмотра man proc
для более подробной информации), но, к счастью, есть программа, которая уже делает это: gcore
. Его цель - сбросить файлы ядра, и в процессе gcore
необходимо прочитать всю эту память. Поскольку нас не интересует файл ядра, мы можем просто попросить его сохранить его в /dev/null
(файлы ядра могут быть большими, поэтому их запись на диск сделает его намного медленнее). Пример:
gcore 22382 -o /dev/null
Если то, что вы пытаетесь сделать, это улучшить производительность процесса, я бы рекомендовал nice
.
Вы также можете повлиять на склонность ядра к обмену в целом, установив его перестановку.
Вы также можете найти этот вопрос и его ответы полезными.