Я планирую использовать Zram в качестве устройства для обмена.
Скрипт init-zram-swapping
, поставляемый с Ubuntu 18.04 LTS Bionic в пакете zram-config
, создает одно устройство zram для каждого процессора. https://packages.ubuntu.com/bionic/zram-config
Пакет без изменений до эо .
Почему это делается? Есть ли какое-то преимущество в том, что несколько устройств zram сконфигурированы для подкачки?
Я могу себе представить, что это поможет не блокировать сжатие при работе со свопом, но, начиная с ядра 4.7, оно всегда будет иметь несколько потоков сжатия. Один на онлайн процессор. https://github.com/torvalds/linux/commit/43209ea2d17aae1540d4e28274e36404f72702f2
Даже для более старых ядер я ожидал увидеть использование атрибута max_comp_streams
с одним устройством zram.
Так что сценарий просто не был настроен с более новыми версиями ядра или есть еще одно преимущество наличия нескольких устройств zram?
Когда подкачка происходит в памяти, принадлежащей данному ЦП (особенно в конфигурации NUMA — представьте современные процессоры EPYC с их 8-канальными контроллерами памяти и узлами NUMA), наиболее эффективно не копировать это памяти в память другого процессора (и нарушать его потоки). Так что держу пари, что это из соображений производительности.