OOM Killer, вызванный дисковым вводом-выводом при передаче файлов

5 min

language: ja bn de en es fr hi ko pt ru zh-cn zh-tw

Здравствуйте, я некомпетентен.
Прошло несколько дней с тех пор, как я собрал домашний сервер в своем новом доме по дешевке. Проблема, которая меня беспокоила раньше, возникла даже при большом объеме памяти.

Что произошло

Моя текущая среда немного специфична, точнее, объем памяти составляет неполные 16 ГБ + 8 ГБ, но прошу понять, что я собрал ее из остатков.

Дело в том, что с 24 ГБ ОЗУ, что, возможно, сейчас является нормой, я лично считал это довольно богатым состоянием и думал, что OOM не произойдет, но затем произошел OOM, похожий на выговор от ядра Linux.

Приложения, такие как Apache, php-fpm, Redis и т. д., выделяют лишь ограниченное количество памяти каждое...

Проблемы с передачей файлов

Это произошло, когда я пытался получить файлы по scp с моего домашнего сервера, который все еще находится у моих родителей, или когда я массово сохранял изображения на 2 ТБ HDD с помощью aria2c, чтобы сохранить определенное количество изображений.
Итак, почему OOM возникает только при этой операции записи? Дело в том, что файлы сначала принимаются в память, а затем записываются в область хранения, поэтому для ускорения процесса их необходимо сначала принять в память в качестве кэша.

Похоже, что передача сотен гигабайт файлов с помощью scp -r, особенно если эти файлы включают случайные операции ввода-вывода, действительно потребляет много ресурсов.
И поскольку это не относится к использованию памяти на уровне процесса, это нельзя подтвердить, проверив с помощью top или аналогичных инструментов для одного процесса; это чисто вопрос ядра Linux, что делает его довольно трудным для определения.

Проще говоря, похоже, что это происходит потому, что объем данных, временно хранящихся в памяти из-за ожидания ввода-вывода, не успевает за процессом записи, что приводит к постепенному истощению ресурсов.

Изменяемые параметры ядра

Что касается того, что может делать ядро, похоже, можно настроить, сколько кэшировать и т. д., и я попробовал настроить, но не почувствовал особого эффекта.
2.2. Параметры настройки VFS: Исследование и эксперимент Red Hat Product Documentation
Заметки о настройке операций записи/вывода путем изменения настроек кэша страниц Linux - YOMON8.NET

По сути, это похоже на то, что испытал этот человек.
OOM Killer invoked due to slow disk I/O - #17 by Whis-key - troubleshooting - Storj Community Forum (official)
Давно не видел слова Storj... хотя мой бесплатный тариф был удален без моего ведома...

Подумать только, что я буду ломать голову над исчерпанием памяти только из-за записи на HDD...
Это также относится к часто повторяемому утверждению о памяти: «Linux оптимистичен в отношении ОЗУ, Windows пессимистична». Хотя я понимаю намерение полностью использовать память для более эффективной производительности, я очень хочу найти способ справиться с этой проблемой, вызванной ожиданием ввода-вывода.

Related Posts