From 6f519c9bdee9acf82e9a98a4f48815341a9533f6 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Tue, 24 Jan 2023 11:30:26 +0100 Subject: [PATCH] ps: get network data in batch mode The network functions popped up in the CPU profiles when listing 2042 containers. Not a very realistic or common use case but a nice way to get something on the CPU profiles. Listing 2042 containers now runs 1.54 times faster. [NO NEW TESTS NEEDED] Signed-off-by: Valentin Rothberg --- pkg/ps/ps.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/pkg/ps/ps.go b/pkg/ps/ps.go index 289c0bdf48..a710c175c0 100644 --- a/pkg/ps/ps.go +++ b/pkg/ps/ps.go @@ -11,6 +11,7 @@ import ( "strings" "time" + libnetworkTypes "github.com/containers/common/libnetwork/types" "github.com/containers/podman/v4/libpod" "github.com/containers/podman/v4/libpod/define" "github.com/containers/podman/v4/pkg/domain/entities" @@ -134,6 +135,8 @@ func ListContainerBatch(rt *libpod.Runtime, ctr *libpod.Container, opts entities startedTime time.Time exitedTime time.Time cgroup, ipc, mnt, net, pidns, user, uts string + portMappings []libnetworkTypes.PortMapping + networks []string ) batchErr := ctr.Batch(func(c *libpod.Container) error { @@ -167,6 +170,16 @@ func ListContainerBatch(rt *libpod.Runtime, ctr *libpod.Container, opts entities return fmt.Errorf("unable to obtain container pid: %w", err) } + portMappings, err = c.PortMappings() + if err != nil { + return err + } + + networks, err = c.Networks() + if err != nil { + return err + } + if !opts.Size && !opts.Namespace { return nil } @@ -203,16 +216,6 @@ func ListContainerBatch(rt *libpod.Runtime, ctr *libpod.Container, opts entities return entities.ListContainer{}, batchErr } - portMappings, err := ctr.PortMappings() - if err != nil { - return entities.ListContainer{}, err - } - - networks, err := ctr.Networks() - if err != nil { - return entities.ListContainer{}, err - } - ps := entities.ListContainer{ AutoRemove: ctr.AutoRemove(), Command: conConfig.Command,