DPDK的效率优化

## 硬件和内存

1. 使用Intel Xeon系列服务器CPU.

2. 内存的Channel越多越好,内存Channel对DPDK的性能有最直接影响的因素之一(one of the most direct effects on performace),每个内存Channel至少有一个DIMM插槽。测试机器有两个内存Channel,每个Channel有12个DIMM插槽。

``` dmidecode -t memory | grep Locator ```

3. 内存的频率越高越好。测试机器的CPU频率是1333MHz.

``` dmidecode -t memory | grep Speed ```

## 网卡

1. 使用DPDK支持的高性能网卡。测试机器使用的是Intel I350.

2. 使用PCIe第三代插槽,例如Gen3 x8 或 Gen3 x16插槽。Gen2的插槽不能给2个10GbE网口提供足够的带宽。使用下面的命令可以查看PCIe插槽的状态:

``` lspci -s 03:00.1 -vv | grep LnkSta ```

3. 使用多CPU的机器,要把所有网卡连到同一个CPU上。

4. 每个网卡只使用一个网口,因为网卡上的所有网口会共享PCIe总线的带宽。

5. 

## BIOS

1. 关掉一切省电模式

2. 在CPU电源管理和性能管理的选项中,选择性能的最大化

3. 关闭Turbo Boost ???

4. 把CPU的频率设置为所支持的最高频率,不要用Auto选项

5. 关闭所有的虚拟化选项。

## Linux启动命令

1. 预留1GB的大内存页, 例如,保留8个1GB的大内存页

``` default_hugepagesz=1G hugepagesz=1G hugepages=8 ```

2. 孤立CPU的核(Isolate CPU cores), 例如:

``` isolcpus=2,3,4,5,6,7,8 ```

## DPDK设置

1. 查看CPU的核, 使用``` tools/cpu_layout.py```或者```lscpu```

2. 检查网卡的ID和网卡相关CPU的Socket

2.1 查看网卡的PCI地址和设备ID

```

# List all the NICs with PCI address and device IDs

lspci -nn |  grep Eth

```

2.2 查看PCI设备对应的CPU(numa_node)

``` cat /sys/bus/pci/devices/0000\:xx\:00.x/numa_node```

2.3 将网卡绑定到对应CPU的核上(根据numa_node), 每个网口要绑定到不同核的逻辑核上。一个CPU核会分出多个逻辑核(logical cores)。

2.4 每个网口使用两个queue pairs, 每个queue pairs需要一个独立的CPU核

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值