pkg: reduce memory footprint

Reduce memory footprint ~7% by disabling some systemd services like
systemd-journald and systemd-udevd, those services are just consuming memory
and are not needed. For example kata-agent logs the errors through the proxy.

fixes #1339

Signed-off-by: Julio Montes <julio.montes@intel.com>
This commit is contained in:
Julio Montes 2019-03-07 08:45:52 -06:00
parent e2c17661b0
commit 2456ac52eb
3 changed files with 64 additions and 3 deletions

View File

@ -663,7 +663,7 @@ func updateRuntimeConfigShim(configPath string, tomlConf tomlConfig, config *oci
// SetKernelParams adds the user-specified kernel parameters (from the // SetKernelParams adds the user-specified kernel parameters (from the
// configuration file) to the defaults so that the former take priority. // configuration file) to the defaults so that the former take priority.
func SetKernelParams(runtimeConfig *oci.RuntimeConfig) error { func SetKernelParams(runtimeConfig *oci.RuntimeConfig) error {
defaultKernelParams := GetKernelParamsFunc(needSystemd(runtimeConfig.HypervisorConfig)) defaultKernelParams := GetKernelParamsFunc(needSystemd(runtimeConfig.HypervisorConfig), runtimeConfig.Trace)
if runtimeConfig.HypervisorConfig.Debug { if runtimeConfig.HypervisorConfig.Debug {
strParams := vc.SerializeParams(defaultKernelParams, "=") strParams := vc.SerializeParams(defaultKernelParams, "=")

View File

@ -1401,7 +1401,7 @@ func TestUpdateRuntimeConfigurationInvalidKernelParams(t *testing.T) {
GetKernelParamsFunc = savedFunc GetKernelParamsFunc = savedFunc
}() }()
GetKernelParamsFunc = func(needSystemd bool) []vc.Param { GetKernelParamsFunc = func(needSystemd, trace bool) []vc.Param {
return []vc.Param{ return []vc.Param{
{ {
Key: "", Key: "",

View File

@ -37,11 +37,72 @@ var systemdKernelParam = []vc.Param{
}, },
} }
func getKernelParams(needSystemd bool) []vc.Param { // kernel params to improve memory footprint
var noTraceKernelParam = []vc.Param{
// No logs: agent has its own logging system
{
Key: "systemd.mask",
Value: "systemd-journald.service",
},
{
Key: "systemd.mask",
Value: "systemd-journald.socket",
},
{
Key: "systemd.mask",
Value: "systemd-journal-flush.service",
},
// No udev events: agent implements udev events
{
Key: "systemd.mask",
Value: "systemd-udevd.service",
},
{
Key: "systemd.mask",
Value: "systemd-udevd.socket",
},
{
Key: "systemd.mask",
Value: "systemd-udev-trigger.service",
},
// No timesync: kata is able to setup the time and this service consume network
{
Key: "systemd.mask",
Value: "systemd-timesyncd.service",
},
// No update audit logs
{
Key: "systemd.mask",
Value: "systemd-update-utmp.service",
},
// No temporal files
{
Key: "systemd.mask",
Value: "systemd-tmpfiles-setup.service",
},
{
Key: "systemd.mask",
Value: "systemd-tmpfiles-cleanup.service",
},
{
Key: "systemd.mask",
Value: "systemd-tmpfiles-cleanup.timer",
},
// No mounts
{
Key: "systemd.mask",
Value: "tmp.mount",
},
}
func getKernelParams(needSystemd, trace bool) []vc.Param {
p := []vc.Param{} p := []vc.Param{}
if needSystemd { if needSystemd {
p = append(p, systemdKernelParam...) p = append(p, systemdKernelParam...)
if !trace {
p = append(p, noTraceKernelParam...)
}
} }
return p return p