This release mainly decreases RAM usage of the node:
- Add guard code to stop connecting to loopback on p2p.
- Drop ping timeout to 30s from 10m
- Add 250 ms cache to GetBlockDagInfo
- Add a env variable divisor to decrease large cache sizes
HTND_LARGE_CACHE_DIVISOR=5maximum divisor 50. - Fix few cases removing something from cache when something is deleted from the datastore.
- Optimize pebble for less RAM usage and add following env variables for controlling pebble:
HTND_BLOOM_FILTER_LEVEL= Bloom bits/key (def: 16)HTND_MEMTABLE_SIZE_MB= Memtable size MB (def: 64)HTND_MEMTABLE_STOP_THRESHOLD= Memtable stop mult (def: 8) → write stall triggerHTND_PEBBLE_CACHE_MB= Block cache MB (def: 512)HTND_L0_COMPACTION_THRESHOLD= L0→L1 trigger files (def ~4)HTND_L0_STOP_WRITES_THRESHOLD= Hard L0 stop writes (def ~12)HTND_L0_COMPACTION_FILE_THRESHOLD= L0 file count trigger (def ~500)HTND_PEBBLE_DISABLE_FLUSH_SPLIT= Disable flush split (0=split on, def: 0)HTND_L0_COMPACTION_CONCURRENCY= Extra L0 compaction threads when pressuredHTND_COMPACTION_DEBT_CONCURRENCY_GB= GB debt → more compaction concurrencyHTND_READ_COMPACTION_RATE_KB= Read-triggered compaction pace (KB/s)HTND_READ_SAMPLING_MULTIPLIER= Read sampling aggressionHTND_PEBBLE_LOG_EVENTS= Log Pebble events (0=off, def: 0)HTND_PEBBLE_LOG_EVENTS_MIN_MS= Min event duration to log (ms)
- Use real LRU cache instead of random eviction and optimize for less mapaccess2 usage.
- Set GOMEMLIMIT by default to 4GB
- Add freeOSMemory calls to few points in the node and to run periodically every 30s.
- Add RPC stress testing tool.
- Disable GetBlock call retrying to fetch data from the node, this was used to attack nodes.
Full Changelog: V1.6.5...v1.6.6