Suhas Karanth
06/26/2025, 8:20 AMjournalSyncData configuration option for Bookkeeper? How do I decide if it should be true or false?RunLLM
06/26/2025, 8:20 AMjournalSyncData option in BookKeeper controls whether data is fsynced (flushed to disk) before acknowledging a write. If set to true (default), BookKeeper guarantees durability by syncing data to disk before acknowledging, but this can reduce write performance. If set to false, writes are acknowledged before syncing, improving performance but risking data loss if the server crashes before the data is flushed to disk. This tradeoff is especially relevant for clusters with high write throughput or SSDs, where write amplification can occur due to alignment settings.
Choose true for maximum durability and data safety, especially in production. Set to false only if you can tolerate potential data loss (e.g., for performance testing or non-critical data), and understand the risks involved. More details are available in the official documentation: BookKeeper Journal Settings.
Would you like a deeper explanation or examples of when to use each setting?
Sources:
- BookKeeper Journal Settings
- BookKeeper Journal Settings (4.16.6)
- Pulsar GitHub Issue: I/O imbalance across bookies 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.Suhas Karanth
06/26/2025, 8:24 AMmanagedLedgerNumWorkerThreads? Is it a valid configuration option? Where would I need to configure it?RunLLM
06/26/2025, 8:24 AMmanagedLedgerNumWorkerThreads, nor does it describe how or where to configure it. If you are looking to tune thread pools related to managed ledgers in Pulsar or StreamNative, you may want to clarify whether you mean options like managedLedgerNumSchedulerThreads (which controls the number of threads for managed ledger scheduled tasks) or another similarly named parameter. Providing more context about your use case or where you encountered this option could help in giving a more precise answer. If this doesn't help, please reach out to the StreamNative support team for further assistance. 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.Suhas Karanth
06/26/2025, 8:35 AMdbStorage_writeCacheMaxSizeMb? What are the implications of leaving this configuration option blank?RunLLM
06/26/2025, 8:35 AMdbStorage_writeCacheMaxSizeMb sets the size (in MB) of the write cache for BookKeeper's DbLedgerStorage. This cache buffers entries before flushing them to disk, and memory is allocated from JVM direct memory.
If left blank, the default is 25% of the available direct memory. This is generally sufficient for most workloads, but you may want to adjust it for high-throughput scenarios or to avoid memory pressure. For more, see BookKeeper config docs.
Would you like more detail on tuning this parameter?
Sources:
- BookKeeper 4.16.6 config docs
- BookKeeper 4.15.5 config docs 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.Suhas Karanth
06/26/2025, 8:39 AMmanagedLedgerCacheEvictionFrequency? What does it mean if it is configured to 0?RunLLM
06/26/2025, 8:40 AMmanagedLedgerCacheEvictionFrequency is a deprecated configuration for controlling how often the Pulsar managed ledger cache eviction task runs (in times per second). If set to 0, it is effectively disabled and not used; newer versions use managedLedgerCacheEvictionIntervalMs instead, which directly sets the interval in milliseconds. For compatibility, if managedLedgerCacheEvictionFrequency is set and greater than 0, it may override the interval, but the recommended approach is to use managedLedgerCacheEvictionIntervalMs (see here, ServiceConfiguration.java).
Would you like more detail on how cache eviction works or how to migrate to the new setting?
Sources:
- PR: refactor ManagedLedger cacheEvictionTask implement
- ServiceConfiguration.java 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.Suhas Karanth
06/26/2025, 8:46 AMnumReadWorkerThreads?RunLLM
06/26/2025, 8:46 AMnumReadWorkerThreads in BookKeeper sets the number of threads handling read requests. The default is 8, but if set to 0, Netty threads handle reads directly. You might want to increase this value for high read throughput or on machines with many CPU cores, but setting it too high can cause resource contention (BookKeeper config docs).
Though I'm not entirely certain, it might be that you should benchmark your workload and adjust numReadWorkerThreads based on observed read latency and CPU utilization. There is no one-size-fits-all value; tuning depends on your hardware and workload (BookKeeper config docs).
Would you like more detail on how to benchmark or tune this parameter?
Sources:
- BookKeeper config docs 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.Suhas Karanth
06/26/2025, 8:52 AMdbStorage_rocksDB_blockCacheSize? What does it mean if the value is left empty?RunLLM
06/26/2025, 8:52 AMdbStorage_rocksDB_blockCacheSize sets the size (in bytes) of the RocksDB block cache used for ledger indexes in BookKeeper. For best performance, this cache should be large enough to hold a significant portion of the index database, which can reach ~2GB in some cases.
If left empty, the default is 10% of the available direct memory (BookKeeper config docs). Adjust this value if you have a large index or want to optimize memory usage.
Would you like more detail on how to calculate an optimal value?
Sources:
- BookKeeper config docs 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.