【星海草稿】DPDK 后期会继续更新

发布时间:2024年01月03日

官网:

https://www.dpdk.org/

PCI 设备

[查看和列出PCI设备。]

lspci

[网卡驱动程序设置特定的参数]

modprobe  xxxx

[查看是否正常运行]

ifconfig

内存 设备

64位Linux通常使用48位来表示虚拟地址空间,43位表示物理地址。
#uname -m,然后按回车。如果输出是x86_64,那么你的系统就是64位的。如果输出是i386或者i686,那么你的系统是32位的。

用户空间和内核空间被划分为两个空间,每个空间最大支持256TB。
可以通过cat /proc/cpuinfo和cat /proc/meminfo来查看处理器和内存的信息。

CPU亲和性

在多核心CPU中,每个CPU都有自己的缓存和寄存器。为了更好地利用这些硬件资源,可以将特定进程绑定到特定的CPU上,这个过程被称为CPU亲和性设置。
可以使用 taskset 命令来实现CPU亲和性设置。

RDMA内核驱动程序

mlx4_ib、mlx5_ib或mana_ib

modprobe uio_pci_generic
modprobe igb_uio

确保IOMMU已禁用或已设置为passthrough模式。

cat /sys/class/iommu_group/iommu_group*/devices/iommu_group*/uevent

如果输出中包含"enabled",则表示IOMMU已启用。

[禁用]
echo "disabled" | sudo tee /sys/bus/platform/drivers/iommu_v2/control
[如果需要将IOMMU设置为passthrough模式,可以使用以下命令:]
echo "passthrough" | sudo tee /sys/bus/platform/drivers/iommu_v2/mode

C malloc 分配内存

#include <stdlib.h>  
  
// 分配一个足够大的缓冲区来存储数据包  
char *buffer = (char *)malloc(desired_packet_size);  
if (buffer == NULL) {  
    // 处理内存分配失败的情况  
}

mmap 分配内存

#include <sys/mman.h>  
#include <fcntl.h>  
#include <unistd.h>  
  
// 打开一个文件描述符或设备文件  
int fd = open("/path/to/file", O_RDWR);  
if (fd == -1) {  
    // 处理文件打开失败的情况  
}  
  
// 映射文件到内存中  
void *buffer = mmap(NULL, desired_packet_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);  
if (buffer == MAP_FAILED) {  
    // 处理内存映射失败的情况  
}
文章来源:https://blog.csdn.net/weixin_41997073/article/details/135350916
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。