slab_size
Директива `slab_size` задаёт размер областей (slab) для выделения памяти, используемых модулем Proxy-Wasm, оптимизируя управление памятью для Wasm-модулей.
Описание
Директива slab_size настраивает управление памятью slab allocator для модулей Proxy-Wasm в NGINX. Указывая размер slab, администраторы могут контролировать, как блоки памяти выделяются для экземпляров WebAssembly, что может привести к повышению производительности и уменьшению фрагментации памяти в среде выполнения сервера. Это особенно полезно при запуске нескольких Wasm-модулей или фильтров, которые могут создавать несколько экземпляров, поскольку это позволяет более эффективно использовать доступные ресурсы памяти.
Когда задана slab_size, NGINX выделяет память в предопределённых "slabs" указанного размера, что оптимизирует скорость выделения и уменьшает накладные расходы на память. Slabs помогают управлять блоками памяти одинакового размера, обеспечивая более быстрое выделение и освобождение. Подходящие размеры slab могут минимизировать потери и максимизировать пропускную способность, особенно при нагрузке, когда может происходить быстрое создание функций или модулей Wasm. Это может заметно повлиять на общую производительность прокси-операций или динамической обработки через слой Wasm.
По сути, директива принимает один аргумент, представляющий размер в байтах, что позволяет пользователям адаптировать конфигурацию под ожидаемый размер приложения и модель использования. Администраторам следует протестировать разные размеры slab в зависимости от ожидаемых рабочих нагрузок, чтобы определить оптимальную настройку для их конкретного сценария.
Пример конфига
wasm {
slab_size 16k;
}Убедитесь, что slab size соответствует вашей нагрузке; слишком маленький может приводить к частым выделениям, а слишком большой — к избыточному потреблению памяти.
Изменение slab size может потребовать перезапуска службы NGINX, чтобы изменения вступили в силу.
Тестируйте влияние на производительность до и после изменения slab size в производственной среде.