Skip to content

Commit

Permalink
Set kernel specific config on linux
Browse files Browse the repository at this point in the history
On linux systems bump up gc_thresholds so to lower the
probability of running with neighbor table overflow issues

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
  • Loading branch information
Flavio Crisciani committed Jun 1, 2017
1 parent 2e99f06 commit a59c4dc
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
30 changes: 30 additions & 0 deletions drivers/overlay/ostweaks_linux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package overlay

import (
"io/ioutil"
"path"
"strings"

"github.com/Sirupsen/logrus"
)

var sysctlConf = map[string]string{
"net.ipv4.neigh.default.gc_thresh1": "8192",
"net.ipv4.neigh.default.gc_thresh2": "49152",
"net.ipv4.neigh.default.gc_thresh3": "65536",
}

// writeSystemProperty writes the value to a path under /proc/sys as determined from the key.
// For e.g. net.ipv4.ip_forward translated to /proc/sys/net/ipv4/ip_forward.
func writeSystemProperty(key, value string) error {
keyPath := strings.Replace(key, ".", "/", -1)
return ioutil.WriteFile(path.Join("/proc/sys", keyPath), []byte(value), 0644)
}

func applyOStweaks() {
for k, v := range sysctlConf {
if err := writeSystemProperty(k, v); err != nil {
logrus.Errorf("error setting the kernel parameter %s = %s, err: %s", k, v, err)
}
}
}
5 changes: 5 additions & 0 deletions drivers/overlay/ostweaks_unsupported.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// +build !linux

package overlay

func applyOStweaks() {}
3 changes: 3 additions & 0 deletions drivers/overlay/overlay.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,9 @@ func (d *driver) configure() error {
return d.initializeVxlanIdm()
}

// Apply OS specific kernel configs if needed
d.once.Do(applyOStweaks)

return nil
}

Expand Down

0 comments on commit a59c4dc

Please sign in to comment.