У меня довольно старая машина Linux с 2 ГБ оперативной памяти, без подкачки, и она работает очень хорошо, система использует каждый неиспользуемый фрагмент памяти для кеширования с большим эффектом.
Однако, когда я близок к нагрузке на память (например, выделено> 1950 МБ), она замедляется до ползания; Я подозреваю, что это потому, что не осталось дисковых буферов. Я знаю, что OOM Killer скоро вступит в силу, но обычно этого не происходит - он становится настолько медленным, что загружает до 30-40, ни один процесс не делает никакого прогресса (таким образом, не выделяет больше памяти), и Я должен перезапустить его.
Когда я пытаюсь просто убить один процесс, чтобы заставить машину реагировать, например, перейдя в консоль (через Alt-F1, войдя в систему и просто выполнив killall badprocess), он обычно работает, за исключением того, что мне приходится ждать ~ 10 минут между пользователем и паролем и получением приглашения - все, пока есть активность на диске.
Опять же, нет никакого обмена, так что это не обмен - он просто работает, потому что у него не осталось буферов.
У меня было бы около 100 МБ или около того, выделенных исключительно для дисковых буферов, которые раньше вызывали бы OOM killer (в конце концов, меньше памяти для программ), но, с другой стороны, машина всегда была бы отзывчивой.
Есть способ сделать это? Мне не удалось найти запись в / proc / kernel или / sys / vm, которая делает подобные вещи.