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

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

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

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

Top говорит:

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

Так много доступной комнаты. Но затем я узнал, что некоторые процессы не используют подкачку вообще. Они, кажется, едят всю мою физическую RAM, даже не рассматривая подкачивающий некоторые страницы к диску. Я использовал "главный" столбец SWAP для проверки использования ПОДКАЧКИ для каждого процесса.

Это, например, веб-браузер Хрома и VirtualBox. Другие, как Firefox, Netbeans, и т.д. подкачивают.

Таким образом, кто "решает" то, что процесс подкачивает и который нет? От моего понимания это сделано ядром, потому что с точки зрения приложения память является памятью, не различая подкачку и физическую RAM. Это верно, или разработчик Хрома устанавливали приложение, чтобы только использовать физическую RAM?

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

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

2 ответа

Я думаю, что Ваша "проблема" с VirtualBox.

Согласно Основная память Руководства

VirtualBox

Это устанавливает сумму RAM, которая выделена и дана VM, когда это работает. Указанный объем памяти будут требовать от хостовой операционной системы, таким образом, это должно будет быть доступно или сделано доступный как свободная память на хосте при попытке запустить VM и не будет доступно хосту, в то время как VM работает.

я нашел подобные комментарии к форумам VirtualBox (хотя они не были так же полезны).

См.: https://forums.virtualbox.org/viewtopic.php? f=2& t=50179

, Таким образом, я предполагаю virtualbox модуль ядра, выделяет свободную память гостю, но не достаточно вежлив для информирования хоста. Таким образом при рассмотрении свободной RAM (с инструментами такой как free -m), у Вас, кажется, есть достаточная память, НО... потому что модуль ядра не сообщает хосту ОС, хост не может соответственно справиться с подкачкой, и Ваши приложения тогда разрушают самку к отсутствию памяти (свободный или подкачка).

я предложил бы, чтобы Вы зарегистрировали отчет об ошибках, но, я предполагаю, что он был бы закрыт, поскольку "не зафиксирует"

От потока на форумах VirtualBox, связанных в комментарии Tim:

Для ответа на вопрос относительно того, если VBox может или не может использовать подкачку, нет, только операционная система может сделать это. Подкачка не является памятью, которая на самом деле применима.

1
ответ дан 11 November 2019 в 12:50

Ядро Linux "решает" это. Это делает так с настраиваемым параметром, названным swappiness.

0
ответ дан 11 November 2019 в 12:50

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

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