imbajin commented on code in PR #535:
URL: https://github.com/apache/hugegraph-doc/pull/535#discussion_r4357920994


##########
content/en/docs/quickstart/hugegraph/hugegraph-hstore.md:
##########
@@ -209,8 +210,8 @@ This file contains only `rocksdb` and Actuator exposure 
settings.
 
 | Key | Master distribution value | Code default | Meaning |
 |-----|---------|--------------|---------|
-| `rocksdb.total_memory_size` | `32000000000` | `51539607552` | Memory budget 
shared by all RocksDB instances on this node. When absent or `0`, the node uses 
the JVM max heap instead. |
-| `rocksdb.write_buffer_size` | `32000000` | `33554432` | Memtable size in 
bytes. When absent or `0`, the node uses `total_memory_size / 1000`. |
+| `rocksdb.total_memory_size` | `0` | Auto-sized, see Meaning | Memory budget 
in bytes shared by all RocksDB instances on this node, split into the write 
cache and the block cache by `write_buffer_ratio`. Both caches are off-heap, so 
`-Xmx` does not limit them, and a fixed 1 GiB Raft log cache comes on top; the 
Raft log memtables of all partitions share a 256 MiB write buffer charged to 
that cache, so they don't add to it. The budget is a sizing target, not a hard 
cap: with `rocksdb.write_buffer_allow_stall` at its default `false`, writes are 
not stalled when the write cache is full, so native memory can exceed the 
budget under heavy writes and a container can still be OOM-killed. Setting it 
to `true` holds the cap more firmly at the cost of write latency. When absent 
or `0`, the node uses half of the memory left after the JVM max heap, 
`MaxDirectMemorySize` (counted as the heap size when unset; 
`bin/start-hugegraph-store.sh` sets it to the heap it picks unless `-j` sets 
`-Xmx`, `-X
 X:MaxHeapSize` or the cap itself) and a 1.5 GiB reserve, clamped to 256 MiB to 
32 GB. In a container the starting point is the cgroup memory limit when one is 
set, including a limit set only on a parent cgroup the Store can see; otherwise 
it is the host's memory. If neither the JVM nor the cgroup files report a 
usable memory size, the budget falls back to the JVM max heap, clamped to the 
same 256 MiB to 32 GB. An `application-pd.yml` kept from an earlier release 
still sets `32000000000`; set it to `0` to auto-size. In PD mode also check the 
copy PD keeps (KV key `S:FS`), which the first Store uploads and every Store 
whose local file isn't newer then loads and writes over its local file: change 
the value there, or set `HG_STORE_ROCKSDB_TOTAL_MEMORY_SIZE` or 
`-Drocksdb.total_memory_size` on each Store, which the Store keeps above PD's 
copy. A positive value is used as given and must be plain bytes, at least 
`1048576` (1 MiB); a smaller value or one such as `4GB` stops startup. |

Review Comment:
   ⚠️ Important: Updating `S:FS` alone does not apply this upgrade. 
`PdConfigureListener` watches only `S:Timestamp`, and it loads PD's copy at 
startup only when that timestamp is at least the local file's modification 
time. The initial upload creates no timestamp, and an ordinary KV put updates 
and notifies only the supplied key. Consequently, changing the value here can 
leave existing Stores on the old 32 GB budget even after a restart. Please 
document publishing `S:Timestamp` through the configuration update procedure 
after changing `S:FS` (including the resulting Store restarts), or recommend 
the per-Store overrides as the supported upgrade path. Mirror the instruction 
in Chinese.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to