Строка Swap в free у машины урока — одни нули. Что это за память и чего машина лишена без неё.
Кэш файлов ядро может просто выбросить: файл лежит на диске, его можно прочитать снова. Данные самих процессов — переменные, загруженные картинки, буферы — взять заново неоткуда. Им нужна или оперативная память, или swap — область на диске (раздел или файл), куда ядро выносит редко нужные страницы процессов.
Swap даёт запас, но медленный: страница со swap читается с диска. Машина, которая постоянно перекладывает страницы в swap и обратно, тормозит.
Без swap данные процессов могут жить только в оперативной памяти. Когда available на всей машине подходит к нулю и выбросить больше нечего, ядро зовёт OOM killer: он выбирает процесс и завершает его, чтобы освободить память. Проверить, есть ли swap, можно двумя командами:
swapon --show ничего не печатает — swap нет. Как добавить swap-файл, разберёшь в лабе этого модуля.
На машине без swap процесс просит ещё 200 МиБ, а available — 150 МиБ. Что произойдёт?
-
Ждать, пока другие процессы сами отдадут память, ядро не станет. Когда кэш выброшен, а памяти всё равно мало, приходит OOM killer.
-
Выносить данные процессов на диск ядро умеет только в swap, а его нет. Кэш файлов оно выбросит, но данные процесса девать некуда.
Без swap данные процессов живут только в оперативной памяти. Кэш ядро выбрасывает первым, а потом OOM killer завершает процесс, чтобы освободить память.
Главное в шаге
- Кэш файлов ядро выбрасывает по требованию, а данные процессов без swap держать негде, кроме оперативной памяти.
- Swap — область на диске для редко нужных страниц процессов: запас памяти, но медленный.
- Кончилась память и выбросить нечего — OOM killer завершает процесс.