MemCache Configs
MetaService Config
| key | value type | requirement | default | valid range | description |
|---|---|---|---|---|---|
| ock.mmc.meta_service_url | string | optional | tcp://127.0.0.1:5000 | tcp://<host><port> | host supports ip and domain, port in [1025, 65535] |
| ock.mmc.meta_service.config_store_url | string | optional | tcp://127.0.0.1:6000 | tcp://<host><port> | host supports ip and domain, port in [1025, 65535] |
| ock.mmc.meta_service.metrics_url | string | optional | http://127.0.0.1:8000 | <protocol>://<host>:<port> | protocol is http or https, host supports ip and domain, port in [1025, 65535] |
| ock.mmc.meta.ha.enable | bool | optional | false | true/false | enable meta service master/backup HA in k8s cluster |
| ock.mmc.meta_service.metrics_report_interval_seconds | integer | optional | 30 | [0, 86400] | metrics summary printing interval in seconds, 0 disables periodic metrics printing |
| ock.mmc.meta.lease_ttl_ms | integer | optional | 10000 | [1, 2147483647] | default read lease TTL in milliseconds used when meta service grants read leases; MetaService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.log_level | string | optional | info | debug/info/warn/error | log level; shared by MetaService and LocalService, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.dynamic_config.enable | bool | optional | true | true/false | Enable dynamic config polling. When enabled, MetaService periodically checks the config file for log_level, meta.lease_ttl_ms and evict_threshold_high/low changes and applies them without restart |
| ock.mmc.dynamic_config.interval | integer | optional | 5 | [1, 300] | Polling interval in seconds for dynamic config file check |
| ock.mmc.log_path | string | optional | /var/log/memcache_hybrid | relative or absolute path | log path, the absolute path is start with '/' |
| ock.mmc.log_rotation_file_size | int | optional | 20 | 1 <= n <= 500 | log rotation file size(MB) |
| ock.mmc.log_rotation_file_count | int | optional | 50 | 1 <= n <= 50 | log rotation file num |
| ock.mmc.log_output_target | string | optional | file | screen/file/both | log output target: screen (stdout only), file (rotating file only), both (stdout + file) |
| ock.mmc.evict_threshold_high | int | optional | 90 | 1 <= n <= 99 | eviction high watermark; 90 means 90%, and the maximum is 99%. The pre-allocation check uses only the current allocated size and does not include the requested allocation size. Eviction is triggered only when usedSize * 100 > totalSize * threshold; equality does not trigger. If current usage is not above the watermark but free space is smaller than the requested size, eviction is not triggered and the allocation may fail. Periodic checks use current actual usage and the same strict-greater-than condition. MetaService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.evict_threshold_low | int | optional | 80 | 1 <= n <= 98 | after evict threshold; MetaService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.evict_yield_interval | int | optional | 0 | [0, 100000] | number of evicted objects between yields in GC loop, 0 disables yield (backward compatible) |
| ock.mmc.evict_yield_duration_us | int | optional | 100 | [0, 10000] | sleep duration in microseconds during each yield, extends the lock-free window to allow blocked requests to acquire the lock |
| ock.mmc.evict_check_interval_seconds | integer | optional | 5 | [0, 86400] | periodic eviction usage check interval in seconds; 0 disables periodic checks while request-triggered checks remain active; in HA mode, only the elected leader/Master runs periodic checks, while standby and unknown-role nodes do not |
| ock.mmc.storage.prefetch.enabled | bool | optional | false | true/false | enable SSD to DRAM prefetch on read |
| ock.mmc.tls.enable | bool | optional | false | true/false | metaservice TLS switch |
| ock.mmc.tls.ca.path | string | optional | 0 <= len < 256 | Root Certificate path | |
| ock.mmc.tls.ca.crl.path | string | optional | 0 <= len < 256 | Certificate Revocation List path | |
| ock.mmc.tls.cert.path | string | optional | 0 <= len < 256 | server certificate path | |
| ock.mmc.tls.key.path | string | optional | 0 <= len < 256 | server private key path | |
| ock.mmc.tls.key.pass.path | string | optional | 0 <= len < 256 | server private key passphrase path (leave empty if the private key is not encrypted) | |
| ock.mmc.tls.package.path | string | optional | 0 <= len < 256 | openssl dynamic libraries path | |
| ock.mmc.tls.decrypter.path | string | optional | 0 <= len < 256 | the keypass decrypter library path (leave empty if the password is not encrypted) | |
| ock.mmc.config_store.tls.enable | bool | optional | false | true/false | config store TLS switch |
| ock.mmc.config_store.tls.ca.path | string | optional | 0 <= len < 256 | Root Certificate path for config store | |
| ock.mmc.config_store.tls.ca.crl.path | string | optional | 0 <= len < 256 | Certificate Revocation List path for config store | |
| ock.mmc.config_store.tls.cert.path | string | optional | 0 <= len < 256 | server certificate path for config store | |
| ock.mmc.config_store.tls.key.path | string | optional | 0 <= len < 256 | server private key path for config store | |
| ock.mmc.config_store.tls.key.pass.path | string | optional | 0 <= len < 256 | server private key passphrase path for config store (leave empty if the private key is not encrypted) | |
| ock.mmc.config_store.tls.package.path | string | optional | 0 <= len < 256 | openssl dynamic libraries path for config store | |
| ock.mmc.config_store.tls.decrypter.path | string | optional | 0 <= len < 256 | the keypass decrypter library path for config store (leave empty if the password is not encrypted) | |
| ock.mmc.metrics.tls.enable | bool | optional | false | true/false | metrics HTTP server mTLS switch |
| ock.mmc.metrics.tls.ca.path | string | optional | 0 <= len < 256 | Root Certificate path for metrics HTTP | |
| ock.mmc.metrics.tls.ca.crl.path | string | optional | 0 <= len < 256 | Certificate Revocation List path for metrics HTTP | |
| ock.mmc.metrics.tls.cert.path | string | optional | 0 <= len < 256 | server certificate path for metrics HTTP | |
| ock.mmc.metrics.tls.key.path | string | optional | 0 <= len < 256 | server private key path for metrics HTTP | |
| ock.mmc.metrics.tls.key.pass.path | string | optional | 0 <= len < 256 | server private key passphrase path for metrics HTTP (leave empty if the private key is not encrypted) | |
| ock.mmc.metrics.tls.package.path | string | optional | 0 <= len < 256 | openssl dynamic libraries path for metrics HTTP | |
| ock.mmc.metrics.tls.decrypter.path | string | optional | 0 <= len < 256 | the keypass decrypter library path for metrics HTTP (leave empty if the password is not encrypted) | |
| ock.mmc.kv_events.enable | bool | optional | false | true/false | enable KV event publisher; requires MMC_ENABLE_KV_EVENTS=ON at build time |
| ock.mmc.kv_events.endpoint | string | optional | "" | tcp://<host><port> | ZMQ PUB bind endpoint, e.g. tcp://0.0.0.0:5557 |
| ock.mmc.kv_events.model_name | string | optional | "" | 0 <= len < 256 | model name tag embedded in ZMQ topic and event payload |
| ock.mmc.kv_events.tenant_id | string | optional | default | 0 <= len < 256 | tenant identifier in event payload |
| ock.mmc.kv_events.block_size | integer | optional | 0 | [0, 4294967295] | block size hint in event payload |
| ock.mmc.kv_events.queue_capacity | integer | optional | 65536 | [1, 4294967295] | max number of events in the internal publish queue |
| ock.mmc.kv_events.hash_as_int | bool | optional | true | true/false | true: serialize seq_hashes as uint64; false: serialize as hex string |
LocalService Config
| key | value type | requirement | default | valid range | description |
|---|---|---|---|---|---|
| ock.mmc.meta_service_url | string | optional | tcp://127.0.0.1:5000 | tcp://<host><port> | host is cluster-ip/domain in HA, port in [1025, 65535]; LocalService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.local_service.config_store_url | string | optional | tcp://127.0.0.1:6000 | tcp://<host><port> | host supports ip and domain, port in [1025, 65535]; LocalService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.log_level | string | optional | info | debug/info/warn/error | log level; shared by MetaService and LocalService, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.local_service.world_size | integer | optional | 256 | [1, 1024] | The maximum supported rank count; once ranks are connected, no further modifications are allowed — a meta restart is required |
| ock.mmc.local_service.protocol | string | required | host_rdma | host_rdma/host_urma/host_tcp/host_shm/device_sdma/device_rdma/device_urma/device_uboe | host_shm requires DRAM > 0, HBM = 0, and no hcom. |
| ock.mmc.local_service.hcom_url | string | optional | tcp://127.0.0.1:7000 | tcp://<host><port> | used in dram pool, host supports ip and domain, port in [1024, 65535] |
| ock.mmc.local_service.backend_id | string | optional | 0 <= len < 256 | Backend identity for kv_event (e.g. pod IP); if empty, falls back to env var MMC_LOCAL_SERVICE_BACKEND_ID | |
| ock.mmc.local_service.dram.size | integer | required | 1GB | [0, 1TB] | Supports formats such as 134217728, 2048KB, 200MB, 2.5GB or 1TB, and automatic alignment to 2MB (host_rdma, host_tcp or host_shm) or 1GB (device_sdma, device_rdma, device_urma or device_uboe). |
| ock.mmc.local_service.hbm.size | integer | optional | 0 | [0, 1TB] | Supports formats such as 134217728, 2048KB, 200MB, 2.5GB or 1TB, and automatic alignment to 2MB (host_rdma, host_tcp or host_shm) or 1GB (device_sdma, device_rdma, device_urma or device_uboe). host_shm requires HBM to remain 0. |
| ock.mmc.local_service.max.dram.size | integer | optional | 1TB | [0, 1TB] | The MAX size of ock.mmc.local_service.dram.size in all local processes, necessary if ranks contribute different sizes of DRAM. The default 1TB is binary 1024^4 bytes. |
| ock.mmc.local_service.max.hbm.size | integer | optional | use hbm.size | [0, 1TB] | The MAX size of ock.mmc.local_service.hbm.size in all local processes, necessary if ranks contribute different sizes of HBM. |
| ock.mmc.local_service.storage.enabled | bool | optional | false | true/false | enable SSD storage on local service. When enabled, SSD read/write and data eviction to SSD are supported |
| ock.mmc.local_service.dram.best_effort.enabled | bool | optional | false | true/false | enable best-effort DRAM allocation strategy. When enabled, the system attempts to allocate DRAM |
| ock.mmc.client.retry_milliseconds | integer | optional | 0 | [0, 600000] | The total retry duration (retry interval is 200ms) when client requests meta service and the connection does not exist; LocalService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.client.timeout.seconds | integer | optional | 60 | [1, 600] | Client request timeout in seconds. |
| ock.mmc.client.read_thread_pool.size | integer | optional | 4 | [1, 64] | Number of threads in the read thread pool. |
| ock.mmc.client.write_thread_pool.size | integer | optional | 4 | [1, 64] | Number of threads in the write thread pool. |
| ock.mmc.client.aggregate.io | bool | optional | true | true/false | Whether to enable IO request aggregation for read/write operations; LocalService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.client.aggregate.num | integer | optional | 122 | [1, 131072] | Number of IO requests to aggregate in a single batch; LocalService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.client.batch_option.chunk.size | integer | optional | 8MB | [0, 1TB] | Supports formats such as 134217728, 2048KB, 200MB, 2.5GB or 1TB; LocalService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.client.batch_option.chunk.count | integer | optional | 3 | [1, 64] | During batch copy operations, the system will not perform slicing and concurrent copy operations only when the batch count is less than chunk count or the total data size is less than (chunk size * chunk count); LocalService-only, dynamically reloadable when ock.mmc.dynamic_config.enable is true |
| ock.mmc.tls.enable | bool | optional | false | true/false | metaservice TLS switch |
| ock.mmc.tls.ca.path | string | optional | 0 <= len < 256 | Root Certificate path | |
| ock.mmc.tls.ca.crl.path | string | optional | 0 <= len < 256 | Certificate Revocation List path | |
| ock.mmc.tls.cert.path | string | optional | 0 <= len < 256 | client certificate path | |
| ock.mmc.tls.key.path | string | optional | 0 <= len < 256 | client private key path | |
| ock.mmc.tls.key.pass.path | string | optional | 0 <= len < 256 | client private key passphrase path (leave empty if the private key is not encrypted) | |
| ock.mmc.tls.package.path | string | optional | 0 <= len < 256 | openssl dynamic libraries path | |
| ock.mmc.tls.decrypter.path | string | optional | 0 <= len < 256 | the keypass decrypter library path (leave empty if the password is not encrypted) | |
| ock.mmc.config_store.tls.enable | bool | optional | false | true/false | config store TLS switch |
| ock.mmc.config_store.tls.ca.path | string | optional | 0 <= len < 256 | Root Certificate path for config store | |
| ock.mmc.config_store.tls.ca.crl.path | string | optional | 0 <= len < 256 | Certificate Revocation List path for config store | |
| ock.mmc.config_store.tls.cert.path | string | optional | 0 <= len < 256 | client certificate path for config store | |
| ock.mmc.config_store.tls.key.path | string | optional | 0 <= len < 256 | client private key path for config store | |
| ock.mmc.config_store.tls.key.pass.path | string | optional | 0 <= len < 256 | client private key passphrase path for config store (leave empty if the private key is not encrypted) | |
| ock.mmc.config_store.tls.package.path | string | optional | 0 <= len < 256 | openssl dynamic libraries path for config store | |
| ock.mmc.config_store.tls.decrypter.path | string | optional | 0 <= len < 256 | the keypass decrypter library path for config store (leave empty if the password is not encrypted) | |
| ock.mmc.local_service.hcom.tls.enable | bool | optional | false | true/false | hcom TLS switch |
| ock.mmc.local_service.hcom.tls.ca.path | string | optional | 0 <= len < 256 | Root Certificate path for hcom | |
| ock.mmc.local_service.hcom.tls.ca.crl.path | string | optional | 0 <= len < 256 | Certificate Revocation List path for hcom | |
| ock.mmc.local_service.hcom.tls.cert.path | string | optional | 0 <= len < 256 | client certificate path for hcom | |
| ock.mmc.local_service.hcom.tls.key.path | string | optional | 0 <= len < 256 | client private key path for hcom | |
| ock.mmc.local_service.hcom.tls.key.pass.path | string | optional | 0 <= len < 256 | client private key passphrase path for hcom (leave empty if the private key is not encrypted) | |
| ock.mmc.local_service.hcom.tls.decrypter.path | string | optional | 0 <= len < 256 | the keypass decrypter library path for hcom (leave empty if the password is not encrypted) | |
| ock.mmc.dynamic_config.enable | bool | optional | true | true/false | Enable dynamic config polling. When enabled, LocalService periodically checks the config file for meta_service_url, config_store_url, log_level and client tunables (retry_milliseconds, aggregate.io/num, batch_option.chunk.size/count) changes and applies them without restart |
| ock.mmc.dynamic_config.interval | integer | optional | 5 | [1, 300] | Polling interval in seconds for dynamic config file check |