zephyr/subsys/fs/zms/Kconfig
Riadh Ghaddab e0f0256538 zms: optimize write function by skipping unnecessary reads
when performing a write ZMS checks if the data exists in the storage to
avoid double writing the same data and save some memory cycle life time.
However this downgrades the write performance.
Enable this feature only when CONFIG_ZMS_NO_DOUBLE_WRITE is enabled.

Signed-off-by: Riadh Ghaddab <rghaddab@baylibre.com>
2024-12-19 19:55:30 +01:00

66 lines
1.9 KiB
Text

#Copyright (c) 2024 BayLibre SAS
#SPDX-License-Identifier: Apache-2.0
#Zephyr Memory Storage ZMS
config ZMS
bool "Zephyr Memory Storage"
select CRC
help
Enable support of Zephyr Memory Storage.
if ZMS
config ZMS_LOOKUP_CACHE
bool "ZMS lookup cache"
help
Enable ZMS cache to reduce the ZMS data lookup time.
Each cache entry holds an address of the most recent allocation
table entry (ATE) for all ZMS IDs that fall into that cache position.
config ZMS_LOOKUP_CACHE_SIZE
int "ZMS Storage lookup cache size"
default 128
range 1 65536
depends on ZMS_LOOKUP_CACHE
help
Number of entries in ZMS lookup cache.
It is recommended that it should be a power of 2.
Every additional entry in cache will add 8 bytes in RAM
config ZMS_DATA_CRC
bool "ZMS DATA CRC"
help
Enables DATA CRC
config ZMS_CUSTOMIZE_BLOCK_SIZE
bool "Customize the size of the buffer used internally for reads and writes"
help
ZMS uses an internal buffer to read/write and compare stored data.
Increasing the size of this buffer should be done carefully in order to not
overflow the stack.
Increasing this buffer means as well that ZMS could work with storage devices
that have larger write-block-size which decreases ZMS performance
config ZMS_CUSTOM_BLOCK_SIZE
int "ZMS internal buffer size"
default 32
depends on ZMS_CUSTOMIZE_BLOCK_SIZE
help
Changes the internal buffer size of ZMS
config ZMS_NO_DOUBLE_WRITE
bool "Avoid writing the same data again in the storage"
help
For some memory technologies, write cycles for memory cells are limited and any
unncessary writes should be avoided.
Enable this config to avoid rewriting data in the storage if it already exists.
This option will reduce write performance as it will need to do a research of the
data in the whole storage before any write.
module = ZMS
module-str = zms
source "subsys/logging/Kconfig.template.log_config"
endif # ZMS