Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 2 из 12

Память, swap и OOM killer

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 9 · на машине · 4 мин

Swap

Строка Swap в free у машины урока — одни нули. Что это за память и чего машина лишена без неё.

Кэш файлов ядро может просто выбросить: файл лежит на диске, его можно прочитать снова. Данные самих процессов — переменные, загруженные картинки, буферы — взять заново неоткуда. Им нужна или оперативная память, или swap — область на диске (раздел или файл), куда ядро выносит редко нужные страницы процессов.

Swap даёт запас, но медленный: страница со swap читается с диска. Машина, которая постоянно перекладывает страницы в swap и обратно, тормозит.

Без swap данные процессов могут жить только в оперативной памяти. Когда available на всей машине подходит к нулю и выбросить больше нечего, ядро зовёт OOM killer: он выбирает процесс и завершает его, чтобы освободить память. Проверить, есть ли swap, можно двумя командами:

bash
swapon --show
free -h

swapon --show ничего не печатает — swap нет. Как добавить swap-файл, разберёшь в лабе этого модуля.

Проверь себя 1 вопрос

На машине без swap процесс просит ещё 200 МиБ, а available — 150 МиБ. Что произойдёт?

  • Ждать, пока другие процессы сами отдадут память, ядро не станет. Когда кэш выброшен, а памяти всё равно мало, приходит OOM killer.

  • Выносить данные процессов на диск ядро умеет только в swap, а его нет. Кэш файлов оно выбросит, но данные процесса девать некуда.

Без swap данные процессов живут только в оперативной памяти. Кэш ядро выбрасывает первым, а потом OOM killer завершает процесс, чтобы освободить память.

Главное в шаге

  • Кэш файлов ядро выбрасывает по требованию, а данные процессов без swap держать негде, кроме оперативной памяти.
  • Swap — область на диске для редко нужных страниц процессов: запас памяти, но медленный.
  • Кончилась память и выбросить нечего — OOM killer завершает процесс.
Ubuntu 24.04
Загрузка…