diff options
author | Valentin Rothberg <rothberg@redhat.com> | 2021-09-29 10:58:27 +0200 |
---|---|---|
committer | Valentin Rothberg <rothberg@redhat.com> | 2021-09-29 13:44:39 +0200 |
commit | 98176f001863fd138025c48625eda5c5adb26972 (patch) | |
tree | bc4be5ce8379ee9f6d9da1b96cf66f82f22cdae7 /libpod | |
parent | 453c49c488dd6518b33393e04c04ebc32ce61ee9 (diff) | |
download | podman-98176f001863fd138025c48625eda5c5adb26972.tar.gz podman-98176f001863fd138025c48625eda5c5adb26972.tar.bz2 podman-98176f001863fd138025c48625eda5c5adb26972.zip |
libpod: do not call (*container).Spec()
Access the container's spec field directly inside of libpod instead of
calling Spec() which in turn creates expensive JSON deep copies.
Accessing the field directly drops memory consumption of a simple
podman run --rm busybox true from ~700kB to ~600kB.
[NO TESTS NEEDED]
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container.go | 2 | ||||
-rw-r--r-- | libpod/container_internal.go | 4 | ||||
-rw-r--r-- | libpod/kube.go | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/libpod/container.go b/libpod/container.go index 5c56ff036..ffc577950 100644 --- a/libpod/container.go +++ b/libpod/container.go @@ -1095,7 +1095,7 @@ func (c *Container) AutoRemove() bool { if spec.Annotations == nil { return false } - return c.Spec().Annotations[define.InspectAnnotationAutoremove] == define.InspectResponseTrue + return spec.Annotations[define.InspectAnnotationAutoremove] == define.InspectResponseTrue } // Timezone returns the timezone configured inside the container. diff --git a/libpod/container_internal.go b/libpod/container_internal.go index e81f2ec5f..3f9738411 100644 --- a/libpod/container_internal.go +++ b/libpod/container_internal.go @@ -2004,7 +2004,7 @@ func (c *Container) setupOCIHooks(ctx context.Context, config *spec.Spec) (map[s } return nil, err } - ociHooks, err := manager.Hooks(config, c.Spec().Annotations, len(c.config.UserVolumes) > 0) + ociHooks, err := manager.Hooks(config, c.config.Spec.Annotations, len(c.config.UserVolumes) > 0) if err != nil { return nil, err } @@ -2021,7 +2021,7 @@ func (c *Container) setupOCIHooks(ctx context.Context, config *spec.Spec) (map[s return nil, err } - allHooks, err = manager.Hooks(config, c.Spec().Annotations, len(c.config.UserVolumes) > 0) + allHooks, err = manager.Hooks(config, c.config.Spec.Annotations, len(c.config.UserVolumes) > 0) if err != nil { return nil, err } diff --git a/libpod/kube.go b/libpod/kube.go index d17ca1114..f5ca74d53 100644 --- a/libpod/kube.go +++ b/libpod/kube.go @@ -424,7 +424,7 @@ func containerToV1Container(ctx context.Context, c *Container) (v1.Container, [] // NOTE: a privileged container mounts all of /dev/*. if !c.Privileged() && len(c.config.Spec.Linux.Devices) > 0 { // TODO Enable when we can support devices and their names - kubeContainer.VolumeDevices = generateKubeVolumeDeviceFromLinuxDevice(c.Spec().Linux.Devices) + kubeContainer.VolumeDevices = generateKubeVolumeDeviceFromLinuxDevice(c.config.Spec.Linux.Devices) return kubeContainer, kubeVolumes, nil, errors.Wrapf(define.ErrNotImplemented, "linux devices") } |