微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决什么是 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 举报,一经查实,本站将立刻删除。