以编程方式确定 NUMA 节点或 PCI 总线、设备、通用 PCI 设备的功能编号
Programmatically determine NUMA node or PCI bus, device, function number of generic PCI device
我非常需要和 Programmatically determine NUMA node or PCI bus, device, function number of Direct3D9Ex device
一样的东西
我正在寻找一种方法来以编程方式确定特定 PCI 设备连接到哪个 NUMA 节点,以便我可以为该节点上的主机到设备传输分配内存。
因此,我的代码打开了一个设备文件,如 /dev/mydev0
、/dev/mydev1
等。我可以拥有多个这样的设备文件,它们可以位于不同的 NUMA 节点上。我需要弄清楚的是 应用程序代码 .
中该设备所属的 NUMA 节点(如果有的话)
我正在为这些设备编写设备驱动程序。我知道 struct device
returned by device_create
的指针有字段
#ifdef CONFIG_NUMA;
int numa_node;
#endif;
我的想法是通过自定义驱动程序中的自定义 ioctl 调用导出该值。
我想问的是,是否有更标准的方法将 /dev
条目映射到 NUMA 节点,以便 应用程序 可以弄清楚并使用类似于 numa_bind
这样内存分配发生在正确的节点上。
我也知道我可以用 lspci
检查 PCI 设备的 NUMA 节点。根据 /dev
条目,我看不出如何使用它。
谢谢!
Sysfs
救援!假设您的设备是/dev/fb0
,那么
$ cat /sys/class/graphics/fb0/device/numa_node
0
会给你NUMA节点。
以文本模式打开 /sys/class/graphics/fb0/device/numa_node
并从中读取将产生 "0\n"
(0x30
、0x0A
)。
我非常需要和 Programmatically determine NUMA node or PCI bus, device, function number of Direct3D9Ex device
一样的东西我正在寻找一种方法来以编程方式确定特定 PCI 设备连接到哪个 NUMA 节点,以便我可以为该节点上的主机到设备传输分配内存。
因此,我的代码打开了一个设备文件,如 /dev/mydev0
、/dev/mydev1
等。我可以拥有多个这样的设备文件,它们可以位于不同的 NUMA 节点上。我需要弄清楚的是 应用程序代码 .
我正在为这些设备编写设备驱动程序。我知道 struct device
returned by device_create
的指针有字段
#ifdef CONFIG_NUMA;
int numa_node;
#endif;
我的想法是通过自定义驱动程序中的自定义 ioctl 调用导出该值。
我想问的是,是否有更标准的方法将 /dev
条目映射到 NUMA 节点,以便 应用程序 可以弄清楚并使用类似于 numa_bind
这样内存分配发生在正确的节点上。
我也知道我可以用 lspci
检查 PCI 设备的 NUMA 节点。根据 /dev
条目,我看不出如何使用它。
谢谢!
Sysfs
救援!假设您的设备是/dev/fb0
,那么
$ cat /sys/class/graphics/fb0/device/numa_node
0
会给你NUMA节点。
以文本模式打开 /sys/class/graphics/fb0/device/numa_node
并从中读取将产生 "0\n"
(0x30
、0x0A
)。