Site Tools


software:openwrt:software:openwrt:software:openwrt:software:openwrt:squashfs_cache

Оптимизация кеша SquashFS на OpenWRT

По умолчанию настройки кеширования такие:

CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=2
CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=1024

Те кешируется 2 фрагмента по 1024кб.
Учитывая что флешка как минимум 8мб, и заполнена обычно минимум на 5мб вероятность того что 3 и более часто используемых фрагмента окажутся за пределами закешированных 2мб очень велика.
Кроме того, в случае промаха потребуется читать довольно большой блок.

Оптимальный на мой взгляд вариант для роутера с 32мб ОЗУ и 8мб флеша выглядит так:

CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=8
CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=64

8 блоков по 64кб займут 512кб оперативной памяти.
В случае промаха мимо кеша прочитать 64кб займёт мало времени.

Данная оптимизация отлично себя показала на DIR-506L: WebUI стал заметно отзывчивее.
Для роутеров у которых больше памяти я бы увеличивал CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE, но не более чем до 64 (что даст 4мб кеша), тк это более половины размера самой прошивки, которая включает в себя ещё ядро (которое кешировать не нужно, оно и так в памяти).

Ссылки

software/openwrt/software/openwrt/software/openwrt/software/openwrt/squashfs_cache.txt · Last modified: 2022/02/07 19:55 by root