mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
server: replace mlockall with Mlock in --experimental-memory-mlock
Implementation of `--experimental-memory-mlock` backed by `mlockall` syscall is replaced by `Mlock` flag (backed by mlock syscall) of bboltDB.
This commit is contained in:
@@ -122,6 +122,8 @@ type BackendConfig struct {
|
||||
Logger *zap.Logger
|
||||
// UnsafeNoFsync disables all uses of fsync.
|
||||
UnsafeNoFsync bool `json:"unsafe-no-fsync"`
|
||||
// Mlock prevents backend database file to be swapped
|
||||
Mlock bool
|
||||
}
|
||||
|
||||
func DefaultBackendConfig() BackendConfig {
|
||||
@@ -155,6 +157,7 @@ func newBackend(bcfg BackendConfig) *backend {
|
||||
bopts.FreelistType = bcfg.BackendFreelistType
|
||||
bopts.NoSync = bcfg.UnsafeNoFsync
|
||||
bopts.NoGrowSync = bcfg.UnsafeNoFsync
|
||||
bopts.Mlock = bcfg.Mlock
|
||||
|
||||
db, err := bolt.Open(bcfg.Path, 0600, bopts)
|
||||
if err != nil {
|
||||
@@ -381,6 +384,8 @@ func (b *backend) defrag() error {
|
||||
options.OpenFile = func(path string, i int, mode os.FileMode) (file *os.File, err error) {
|
||||
return temp, nil
|
||||
}
|
||||
// Don't load tmp db into memory regardless of opening options
|
||||
options.Mlock = false
|
||||
tdbp := temp.Name()
|
||||
tmpdb, err := bolt.Open(tdbp, 0600, &options)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user