Почему некоторые процессы используют swap, а другие - нет?

Я испытываю время от времени, когда я сильно работаю, что мои системы (Ubuntu 13.10) замерзают. Syslog говорит, что процесс должен был быть убит до нехватки памяти.

Killed process 4693 (chromium-browse) total-vm:1386284kB, anon-rss:31688kB, file-rss:3424kB

Это происходит, даже если мой своп довольно пуст. У меня есть 4 ГБ оперативной памяти и раздел подкачки 4 ГБ.

Вверх говорит:

KiB Mem:   3932056 total,  2828880 used
KiB Swap:  4079612 total,   332492 used,

Так много доступного места. Но потом я узнал, что некоторые процессы вообще не используют swap. Кажется, они едят всю мою физическую RAM, даже не рассматривая возможность замены некоторых страниц на диск. Я использовал «верхний» SWAP-столбец для проверки использования SWAP для каждого процесса.

Это, например, Браузера Chromium и VirtualBox. Другие, такие как Firefox, Netbeans и т. Д., Меняют.

Итак, кто «решает», какой процесс меняет, а что нет? По моему мнению, это делается ядром, потому что из перспективы перспективы приложения память - это не различие между свопами и физической оперативной памятью. Это правда или у разработчика Chromium есть приложение, использующее только физическое ОЗУ?

Спасибо за вашу помощь!

1
задан 21 March 2014 в 23:27

1 ответ

Ядро Linux «решает» это. Он делает это с настраиваемым параметром, называемым swappiness.

0
ответ дан 24 May 2018 в 10:33
  • 1
    Хорошо, я попробовал это. Но даже с swappiness = 100 процессов, таких как VirtualBox, также не будут заменены. – Tim 22 March 2014 в 03:28
  • 2
    @Tim. Независимо от того, как вы указали в своем вопросе код пользовательского режима, нельзя управлять свопом; ядро Linux управляет памятью вашей системы (физическое и виртуальное]). – Elliott Frisch 22 March 2014 в 05:12

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

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