← Дневник разработки

Что происходит, когда ядро сжимает страницу памяти

Стеклянные слои страницы памяти складываются в компактный блок

Вчера мы рассказывали, как ядро Guseva OS выделяет память по запросу. Сегодня проверили следующий шаг. Когда оперативной памяти не хватает, ядро может сохранить страницу в сжатом виде и восстановить её, когда она снова понадобится программе.

В первом испытании мы записали данные во все 4096 байт страницы, создали давление на память и дождались восстановления из сжатого пула. Затем сравнили всю страницу с исходной и проверили её права доступа. Совпали и данные, и права. Для программы это означает, что после восстановления она может продолжить работу с той же страницей.

Во втором испытании мы намеренно повредили запись в сжатом пуле. Ядро обнаружило повреждение, убрало испорченную запись и остановило компонент, которому понадобилась эта страница. Два соседних компонента при этом завершили свою работу штатно.

Оба сценария прошли в QEMU с 64 МиБ оперативной памяти. Теперь предстоит измерить, сколько памяти сжатие экономит на разных данных и сколько процессорного времени занимает восстановление.

Отчёт о восстановлении страницы · Отчёт об испытании с повреждённой записью

Теги Guseva OS · Ядро · Сжатие памяти · Изоляция компонентов · QEMU