It's OK if some of them are only available as root.
Memory
Total memory
Total DIMMS
Individual DIMM's:
Serial numbers
Vendor Name
Model
Memory Frequency
Notes:
For Memory, I would suggest have a single object for each node and list the DIMM details as attributes for that object.
Most of the DIMM related data is provided by the SMBIOS tables. 'dmidecode' provides a lot of this information.
I'm not sure you can map a specific DIMM to a specific address within a NUMA region. However, we can at least add the DIMMs to the root-object attributes. In addition, you can certainly map a DIMM to a specific DIMM socket, and I believe that means you can map it to a given NUMA region even if you can't say where it is within that region. Have to verify that.
(Intel Haswell) lshw only report DIMM info when run as root, which I suspect would point them to accessing DMI information via /dev/mem.
Memory info is available from lshw, though they are a GPL code:
Speed (Both supported and currently negociated link speed => ethtool)
Serial Number (if applicable)
MAC address
Network Adapters (Infiniband)
Model
Speed
Serial Number (if applicable)
MAC address
Host Bus Adapters
Manufacturer
Serial Number
MAC address
Notes:
HBAs are also more like non-infiniband network interfaces (which are called HCAs usually), which include fiber optic, eSATA, etc. But work done should be similar to the previous section for network interfaces.
Coprocessors
Manufacturer
Serial Number
Other PCI Devices
Device ID
Device Serial number (if applicable)
Notes
The serial number isn't standardized anywhere in the PCI config space, this item is likely impossible.
HardDrive
Model, Form factor, etc.
Vendor
Serial Number
Size
Notes
For hard drives, we can have similar objects for each SATA0.., etc node, whose lanes are usually connected via the PCH to a single socket. Each hard drive can have its own object, and all the attributes of the hard drive can be stored within that object.
there's a struct hd_driveid in linux/hdreg.h that you get with ioctl HDIO_GET_IDENTITY on the device.
There's also a libblkid that may help.
The application hdparm provides a lot of information about hard drives. I glanced over their code, and it seems like they also udev to retrieve the information.
Intel would like to get many new attributes. Summary of discussion and comments gathered from http://www.open-mpi.org/community/lists/hwloc-devel/2014/09/4226.php
It's OK if some of them are only available as root.