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

Вчера мы рассказывали, как ядро Guseva OS выделяет память по запросу. Сегодня проверили следующий шаг. Когда оперативной памяти не хватает, ядро может сохранить страницу в сжатом виде и восстановить её, когда она снова понадобится программе.
В первом испытании мы записали данные во все 4096 байт страницы, создали давление на память и дождались восстановления из сжатого пула. Затем сравнили всю страницу с исходной и проверили её права доступа. Совпали и данные, и права. Для программы это означает, что после восстановления она может продолжить работу с той же страницей.
Во втором испытании мы намеренно повредили запись в сжатом пуле. Ядро обнаружило повреждение, убрало испорченную запись и остановило компонент, которому понадобилась эта страница. Два соседних компонента при этом завершили свою работу штатно.
Оба сценария прошли в QEMU с 64 МиБ оперативной памяти. Теперь предстоит измерить, сколько памяти сжатие экономит на разных данных и сколько процессорного времени занимает восстановление.
Отчёт о восстановлении страницы · Отчёт об испытании с повреждённой записью
Теги Guseva OS · Ядро · Сжатие памяти · Изоляция компонентов · QEMU