什么是 NUMA 节点以及如何使用它分配页面

问题描述

说我想分配一页或数页。在后面的情况下,我将使用一些函数调用并将其分配给页面指针或数组,在前面的情况下,我只想要一些返回单个页面函数调用,因此我将在分配的左侧拥有页面类型。

那么我该如何分配内存 NUMA SYstem

首先我需要知道NUMA是什么? 最近内核中支持多少节点用于 NUMA 的内存使用和分配 最后如何使用NUMA分配单页和多页

在驱动程序代码中,我使用类似这样的东西来分配页面

     struct device dev=pci_dev_obj->dev;
     int node = dev_to_node(d); //<----WHAT IS THIS FUNTION?
     struct page *data;
     data = alloc_pages_node(node,GFP_KERNEL,get_order(R8169_RX_BUF_SIZE));
     
     //WHAT IS get_order() function above
     

我也可以使用 NUMA 页进行直接内存访问。 例如,realtek 的 r8169 驱动,在上面几行之后使用下面这行

      dma_addr_t mapping = dma_map_page(dev,data,R8169_RX_BUF_SIZE,DMA_FROM_DEVICE);

我认为 dma_map_page 用于返回 dma 映射地址> 什么意思?

     //This is the line afterwards
      RxDescriptor->le64_addr = cpu_to_le64(mapping);

另外,如果我没有设备怎么办,例如我没有 pci 设备或任何只需要内存分配的东西,那么我是否能够使用 NUMA 分配内存 感谢帮助 注:以上代码来自以太网网卡驱动

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)