From 6a1e32f768d2fa3f01b58b47b3b739c441eedf4c Mon Sep 17 00:00:00 2001 From: Francesco Romani Date: Thu, 4 Feb 2021 12:54:57 +0100 Subject: [PATCH] pci: report NUMA node locality for the PCI devices We want to expose the NUMA locality of the PCI devices, much like we already do for GPU devices. This is very important for high-end, high-performance devices (NICs, storage controllers). To enable testing, we update the snapshot with another one captured with more PCI device informations. See: https://github.com/jaypipes/ghw/pull/224 Signed-off-by: Francesco Romani --- pkg/pci/pci.go | 21 ++++- pkg/pci/pci_linux.go | 26 ++++++ pkg/pci/pci_linux_test.go | 87 ++++++++++++++++++ pkg/topology/topology.go | 8 +- ...64-8581cf3a529e5d8b97ea876eade2f60d.tar.gz | Bin 32524 -> 44675 bytes 5 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 pkg/pci/pci_linux_test.go diff --git a/pkg/pci/pci.go b/pkg/pci/pci.go index 6c8ae109..c2c347bd 100644 --- a/pkg/pci/pci.go +++ b/pkg/pci/pci.go @@ -17,6 +17,7 @@ import ( "github.com/jaypipes/ghw/pkg/context" "github.com/jaypipes/ghw/pkg/marshal" "github.com/jaypipes/ghw/pkg/option" + "github.com/jaypipes/ghw/pkg/topology" "github.com/jaypipes/ghw/pkg/util" ) @@ -39,6 +40,9 @@ type Device struct { Subclass *pcidb.Subclass `json:"subclass"` // optional programming interface ProgrammingInterface *pcidb.ProgrammingInterface `json:"programming_interface"` + // Topology node that the PCI device is affined to. Will be nil if the + // architecture is not NUMA. + Node *topology.Node `json:"node,omitempty"` } type devIdent struct { @@ -116,7 +120,8 @@ func (d *Device) String() string { } type Info struct { - ctx *context.Context + arch topology.Architecture + ctx *context.Context // All PCI devices on the host system Devices []*Device // hash of class ID -> class information @@ -178,7 +183,19 @@ func AddressFromString(address string) *Address { // PCI devices on the host system func New(opts ...*option.Option) (*Info, error) { ctx := context.New(opts...) - info := &Info{ctx: ctx} + // by default we don't report NUMA information; + // we will only if are sure we are running on NUMA architecture + arch := topology.ARCHITECTURE_SMP + topo, err := topology.NewWithContext(ctx) + if err == nil { + arch = topo.Architecture + } else { + ctx.Warn("error detecting system topology: %v", err) + } + info := &Info{ + arch: arch, + ctx: ctx, + } if err := ctx.Do(info.load); err != nil { return nil, err } diff --git a/pkg/pci/pci_linux.go b/pkg/pci/pci_linux.go index 8a9c75f2..c44a1e99 100644 --- a/pkg/pci/pci_linux.go +++ b/pkg/pci/pci_linux.go @@ -16,6 +16,7 @@ import ( "github.com/jaypipes/ghw/pkg/context" "github.com/jaypipes/ghw/pkg/linuxpath" + "github.com/jaypipes/ghw/pkg/topology" "github.com/jaypipes/ghw/pkg/util" ) @@ -66,6 +67,28 @@ func getDeviceRevision(ctx *context.Context, address string) string { return string(revision) } +func getDeviceNUMANode(ctx *context.Context, address string) *topology.Node { + paths := linuxpath.New(ctx) + pciAddr := AddressFromString(address) + if pciAddr == nil { + return nil + } + numaNodePath := filepath.Join(paths.SysBusPciDevices, pciAddr.String(), "numa_node") + + if _, err := os.Stat(numaNodePath); err != nil { + return nil + } + + nodeIdx := util.SafeIntFromFile(ctx, numaNodePath) + if nodeIdx == -1 { + return nil + } + + return &topology.Node{ + ID: nodeIdx, + } +} + type deviceModaliasInfo struct { vendorID string productID string @@ -263,6 +286,9 @@ func (info *Info) GetDevice(address string) *Device { device := info.getDeviceFromModaliasInfo(address, modaliasInfo) device.Revision = getDeviceRevision(info.ctx, address) + if info.arch == topology.ARCHITECTURE_NUMA { + device.Node = getDeviceNUMANode(info.ctx, address) + } return device } diff --git a/pkg/pci/pci_linux_test.go b/pkg/pci/pci_linux_test.go new file mode 100644 index 00000000..3a6648d7 --- /dev/null +++ b/pkg/pci/pci_linux_test.go @@ -0,0 +1,87 @@ +// +// Use and distribution licensed under the Apache license version 2. +// +// See the COPYING file in the root project directory for full text. +// + +package pci_test + +import ( + "fmt" + "os" + "path/filepath" + "testing" + + "github.com/jaypipes/ghw/pkg/option" + "github.com/jaypipes/ghw/pkg/pci" + + "github.com/jaypipes/ghw/testdata" +) + +type pciNumaTestCase struct { + addr string + node int +} + +// nolint: gocyclo +func TestPCINUMANode(t *testing.T) { + if _, ok := os.LookupEnv("GHW_TESTING_SKIP_PCI"); ok { + t.Skip("Skipping PCI tests.") + } + + testdataPath, err := testdata.SnapshotsDirectory() + if err != nil { + t.Fatalf("Expected nil err, but got %v", err) + } + + multiNumaSnapshot := filepath.Join(testdataPath, "linux-amd64-intel-xeon-L5640.tar.gz") + // from now on we use constants reflecting the content of the snapshot we requested, + // which we reviewed beforehand. IOW, you need to know the content of the + // snapshot to fully understand this test. Inspect it using + // GHW_SNAPSHOT_PATH="/path/to/linux-amd64-intel-xeon-L5640.tar.gz" ghwc topology + + info, err := pci.New(option.WithSnapshot(option.SnapshotOptions{ + Path: multiNumaSnapshot, + })) + + if err != nil { + t.Fatalf("Expected nil err, but got %v", err) + } + if info == nil { + t.Fatalf("Expected non-nil PCIInfo, but got nil") + } + + tCases := []pciNumaTestCase{ + { + addr: "0000:07:03.0", + // -1 is actually what we get out of the box on the snapshotted box + node: -1, + }, + { + addr: "0000:05:11.0", + node: 0, + }, + { + addr: "0000:05:00.1", + node: 1, + }, + } + for _, tCase := range tCases { + t.Run(fmt.Sprintf("%s (%d)", tCase.addr, tCase.node), func(t *testing.T) { + dev := info.GetDevice(tCase.addr) + if dev == nil { + t.Fatalf("got nil device for address %q", tCase.addr) + } + if dev.Node == nil { + if tCase.node != -1 { + t.Fatalf("got nil numa NODE for address %q", tCase.addr) + } + } else { + if dev.Node.ID != tCase.node { + t.Errorf("got NUMA node info %#v, expected on node %d", dev.Node, tCase.node) + } + } + }) + } + +} diff --git a/pkg/topology/topology.go b/pkg/topology/topology.go index 204d2dca..a846584d 100644 --- a/pkg/topology/topology.go +++ b/pkg/topology/topology.go @@ -79,7 +79,13 @@ type Info struct { // New returns a pointer to an Info struct that contains information about the // NUMA topology on the host system func New(opts ...*option.Option) (*Info, error) { - ctx := context.New(opts...) + return NewWithContext(context.New(opts...)) +} + +// NewWithContext returns a pointer to an Info struct that contains information about +// the NUMA topology on the host system. Use this function when you want to consume +// the topology package from another package (e.g. pci, gpu) +func NewWithContext(ctx *context.Context) (*Info, error) { info := &Info{ctx: ctx} if err := ctx.Do(info.load); err != nil { return nil, err diff --git a/testdata/snapshots/linux-amd64-8581cf3a529e5d8b97ea876eade2f60d.tar.gz b/testdata/snapshots/linux-amd64-8581cf3a529e5d8b97ea876eade2f60d.tar.gz index d55a8de202e9686e26aa3a3e3d10b8e9ed3965f2..60454786f40f81288102ea44245b7be81c0d9085 100644 GIT binary patch literal 44675 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 I9e0QS15`1~hX4Qo literal 32524 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%0DW3PhqRp3dU5>)^vjZX<@GNz) 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 Ue$y?mwy*%GzMoQManQ-)KMs}OKL7v#