Аннотация:
Разработчик Linux Осама Ариф отправил в список рассылки ядра два патча, направленные на уменьшение конфликтов запросов, когда zswap загружает страницы подкачки. Zswap — это механизм сжатия кэша Linux. Он сжимает страницы, подлежащие выгрузке, и временно сохраняет их в памяти. Если страницы можно прочитать из кэша сжатия, доступ к устройству подкачки может быть ограничен, что особенно полезно для снижения нагрузки на дисковый ввод-вывод при нехватке памяти.

Проблема в том, что существующий код заставляет сжатые записи и сжатые чтения совместно использовать асинхронные запросы сжатия для каждого процессора и блокировки мьютексов. Если задача записи с низким приоритетом вытесняется во время периода блокировки, задача чтения с высоким приоритетом также может быть вынуждена ждать. Первый патч устанавливает запросы, объекты ожидания и блокировки мьютексов для сжатия и распаковки соответственно, так что чтение больше не блокируется задачами записи; второй патч позволяет синхронному алгоритму программного сжатия использовать запросы в стеке для дальнейшего обхода блокировки zswap. Алгоритмы, требующие асинхронной обработки или дополнительного контекста запроса, по-прежнему используют запросы для каждого процессора и блокировки мьютексов.
Сравнительные тесты, опубликованные автором патча, показывают, что в среде с одним виртуальным процессором медианная самая медленная задержка чтения за раунд снизилась с 22,3 миллисекунды до 0,97 миллисекунды; в среде с 8 виртуальными процессорами оно снизилось с 314 миллисекунд до 7 миллисекунд. Каждый тест проводился в течение 5 раундов, используя компрессор zstd, виртуальную машину и диск памяти в качестве устройств переключения и создавая нагрузку посредством различных приоритетных задач; количество чтений, превышающих 10 миллисекунд, также было снижено с 26 до 35 раз за раунд в одноядерном режиме до нуля, а в многоядерной среде — с 3 до 18 раз за раунд до максимум одного раза. Авторы утверждают, что тесты и тестовые программы пишутся с помощью больших языковых моделей.
Эти цифры отражают улучшение задержки чтения в конкретных стресс-тестах и не означают, что все устройства Linux или ежедневные рабочие нагрузки будут иметь одинаковое общее ускорение.
Патч все еще находится на стадии проверки списка рассылки ядра и еще не включен в основную ветку ядра:
https://lore.kernel.org/lkml/
[email protected]
/
Комментарии