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