Новая Linux-технология сжимает оперативную память в 452 раза быстрее

Cram сжатие озу Linux производительность Meta tomshardware.com

Ускорьте работу системы с CRAM! Новый метод сжатия данных в ОЗУ обеспечивает до 452x производительности по сравнению с ZRAM. Откройте для себя революционный подход к управлению памятью.

Новая модель сжатия CRAM предлагает иной подход к сжатию, полностью отказываясь от подкачки за счет хранения сжатых данных в оперативной памяти. Она обеспечивает производительность до 452 раз выше, чем ZRAM. Я был ребенком в 1990-х, когда идея казалась мне такой простой: я могу использовать PKZIP для сжатия файлов, так почему бы не сделать то же самое с ОЗУ? Действительно, я не единственный гений, и многие другие люди приходили к той же мысли, поэтому сжатие памяти уже давно является функцией большинства операционных систем. В Linux наиболее популярными вариантами являются zswap и ZRAM, но оба они по сути являются функциями уровня подкачки. CRAM — это новый подход, который, как утверждается, значительно повышает производительность.
CRAM был разработан Грегори Прайсом и его командой в *Meta. Ключевое понимание, которое, по-видимому, стимулировало разработку CRAM, заключается в том, что наибольшее снижение производительности при сжатии памяти связано не с самим сжатием (оно незначительно), а с ошибкой и поведением подкачки. Поэтому возникла мысль: «Что, если мы просто сделаем zram, но полностью в памяти, а не как подкачку?»
Это грубое упрощение чрезвычайно сложного проекта, но CRAM, похоже, использует механизмы, которые уже есть в Linux, для обеспечения радикально более высокой производительности сжатой памяти, особенно при чтении. Он использует частный узел NUMA (по сути, «призрачный процессор») вместо того, чтобы имитировать блочное устройство, что позволяет Linux продолжать использовать все свои семантические возможности управления памятью, включая миграцию и выделение памяти, для управления CRAM.
Критически важным элементом является «Chicken Bit» (бинарный флаг), который сообщает Linux о необходимости прекратить попытки использования CRAM во время управления выделением памяти. Сжатая память кажется простой до тех пор, пока вы не начнете думать о ней на практике. Сжимаемость данных сильно варьируется в зависимости от того, что вы сжимаете: от больших объемов нулей (идеально сжимаемых) до уже сжатых данных (несжимаемых). Учитывая это, как узнать, сколько у вас «логической» ОЗУ, если часть ее сжата? И как узнать, когда она закончится?
Похоже, CRAM еще не решил эту проблему; слайды, на которые я опираюсь, указывают на это как на нерешенную проблему и область текущих исследований. Но «Chicken Bit» — это один из способов, по крайней мере, предотвратить каскадные сбои (красочно названные в презентации «ядовитой бурей»), когда запись превышает возможности CRAM по их выделению.
Поскольку CRAM хранится в ОЗУ и обрабатывается как ОЗУ, с полным доступом к кэш-линиям/байтам, он может быть доступен в режиме только для чтения с минимальной задержкой — только стоимость аппаратного сжатия. В результате CRAM «работает на скорости DRAM», как говорит создатель на слайде выше. Хотя график уже выглядит впечатляюще, это логарифмическая шкала: CRAM в худшем случае выполняет 489 миллионов операций в секунду по сравнению с 1,1 миллиона у ZRAM. Это едва ли сравнимо.
Даже при включении записи CRAM по-прежнему намного быстрее ZRAM: в 5,4 раза в худшем протестированном случае с 20% записи. Это огромное падение по сравнению со случаем только для чтения (452x), но сохраняйте контекст: ускорение в 5,4 раза все еще колоссально. Массивное падение производительности при работе с записью связано с необходимостью вызывать ошибку страницы и мигрировать фолианты обратно в исходную область NUMA, поскольку вы не можете записывать непосредственно в сжатые данные — это повредит все.
Мое объяснение CRAM может быть не совсем точным; я не присутствовал на Linux Plumbers’ Conference в Праге, чтобы услышать презентацию напрямую, поэтому я опираюсь на доступные слайды с сайта с информацией о сессии (спасибо Phoronix за информацию). Однако, думаю, мне удалось уловить суть того, что имеет в виду Прайс.
Хотя очевидной целью этой работы (учитывая ее происхождение в *Meta Platforms) являются крупные серверы Linux, ZRAM и Zswap используются по всей экосистеме Linux, даже на таких ограниченных машинах, как Steam Deck. Многие дистрибутивы включают один или другой по умолчанию. CRAM может обеспечить значительное ускорение для некоторых из этих машин, поэтому, надеюсь, он найдет свое место в ядре после решения оставшихся вопросов реализации.

*Facebook, *Instagram и *WhatsApp принадлежат компании *Meta Platforms Inc., деятельность которой признана экстремистской и запрещена на территории Российской Федерации.

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

В тренде:


Похожие новости: