mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
--experimental-memory-mlock support
The flag protects etcd memory from being swapped out to disk. This can happen in memory constrained systems where mmaped bbolt area is natural condidate for swapping out. This flag should provide better tail latency on the cost of higher RSS ram usage. If the experiment is successful, the logic should get moved into bbolt layer, where we can protect specific bbolt instances (e.g. avoid protecting both during defragmentation).
This commit is contained in:
@@ -316,6 +316,14 @@ func NewServer(cfg ServerConfig) (srv *EtcdServer, err error) {
|
||||
)
|
||||
}
|
||||
|
||||
if cfg.ExperimentalMemoryMlock {
|
||||
cfg.Logger.Info("mlocking memory")
|
||||
err := MlockAll()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if terr := fileutil.TouchDirAll(cfg.DataDir); terr != nil {
|
||||
return nil, fmt.Errorf("cannot access data directory: %v", terr)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user