Rivermax Linux性能调优指南

本编文章版权归阿波罗代码网所有,任何转载请注明出处! 这篇文章提供了使用Rivermax for Linux提高性能的指南。 它适用于Rivermax用户,应与Rivermax用户手册和Rivermax发行说明一起使用。 您可以通过调整服务器来最大化吞吐量,并通过一个Mellanox NIC实现更多的吞吐量。 这些建议大多数都经过我们的性能团队测试,但我们鼓励您测试设置参数对性能的影响。

应用介绍

本编文章版权归阿波罗代码网所有,任何转载请注明出处!

这篇文章提供了使用Rivermax for Linux提高性能的指南。 它适用于Rivermax用户,应与Rivermax用户手册和Rivermax发行说明一起使用。 您可以通过调整服务器来最大化吞吐量,并通过一个Mellanox NIC实现更多的吞吐量。 这些建议大多数都经过我们的性能团队测试,但我们鼓励您测试设置参数对性能的影响。



服务器调优

为了使服务器接收高带宽,我们需要验证PCI总线配置为支持高宽度(超过50G时,我们需要x16)。

为了查看您支持的PCI宽度,请执行以下操作


1. run

sudo mst status -v

2. 根据网络接口找到您正在使用的PCI地址

3. run

sudo lspci -vvv -s[PCI_ADDR]

4. 验证在LnkSta行下是否写入了与LnkCap行下相同的宽度

 请参阅下面的示例,其中支持和使用的宽度为x16


[root@r-aa-a]$ sudo mst status -v

MST modules:

------------

MST PCI module is not loaded

MST PCI configuration module loaded

PCI devices:

------------

DEVICE_TYPE MST PCI RDMA NET NUMA

ConnectX5(rev:0) /dev/mst/mt4121_pciconf0.1 03:00.1 mlx5_1 net-ens1f1 0

ConnectX5(rev:0) /dev/mst/mt4121_pciconf0 03:00.0 mlx5_0 net-ens1f0 0

[root@r-aa-a]$ sudo lspci -vvv -s03:00.0

LnkCap: Port #0, Speed unknown, Width x16, ASPM not supported, Exit Latency L0s unlimited, L1 unlimited

LnkSta: Speed 8GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

 

 

BIOS 调优

遵循了解BIOS配置以进行性能调整建议::

 

1. 应该禁用超线程和虚拟化。 (如果使用VM,则启用虚拟化)

2. 电源管理应集中在最小化系统干预和管理上。 设置为“最高性能配置文件”(如果服务器上可用)

3. 禁用 P-states, (unrestricted) Turbo Mode

4. Disable C-states (or change to C0/C1 preference) and T-states (对于媒体等高带宽应用非常重要)

5. Enabling Turbo mode only on minimum amount of cores is better

 

C-state

要在系统中禁用C状态,只需将此代码段添加到您的应用程序中,或在运行应用程序时以其他过程运行此代码

int set_low_latfency()
{
uint32_t lat = 0;
fd = open("/dev/cpu_dma_latency", O_RDWR);
if (fd == -1) {
fprintf(stderr, "Failed to open cpu_dma_latency: error %s", strerror(errno));
return fd;
}
write(fd, &lat, sizeof(lat));

return fd
}

disable pause frames

ethtool -A [interface] rx off tx off

CPU Frequency

检查CPU的最大可用频率(有用的命令:cpupower frequency-info,lshw,lscpu)

监视CPU的活动,并检查内核的当前频率。

 

提取CPU内核状态的有用命令

:

$ cat /proc/cpuinfo | sed -n '/^processor\|^cpu MHz/p'
$ turbostat --interval 1

我们的目标是将专用内核提高到最高可用频率,并防止OS在VMA使用它们时使用它们.

 

Core CPU Frequency not optimized Core CPU Frequency optimized

Bad CPU.jpg Good CPU.jpg

 

Linux grub.conf file 配置

grub.conf配置取决于内核版本,发行版和服务器配置。

在内核/ Linux行中添加以下参数(并非所有参数都是必需的,请单独考虑):

 

FlagExample (use carefully, depends on system)
intel_pstateintel_pstate=disable
intel_idle.max_cstateintel_idle.max_cstate =0
mcemce=ignore_ce
processor.max_cstateprocessor.max_cstate=0
idleidle=poll
isolcpus

isolcpus=1-6 (see: cpu affinity)

Isolating specific cores

nohz_full

nohz_full=1-6 (see: cpu affinity)

Frequent clock ticks cause latency - select which core you want to reduce the interrupts (can't do it on all cores)

rcu_nocbs

rcu_nocbs=1-6 (see: cpu affinity)

The specified CPUs will enter to the offloaded list

RCU never prevents offloaded CPUs from entering either dyntick-idle mode or adaptive-tick mode.

nosoftlockupNosoftlockup
nmi_watchdognmi_watchdog = 0

 

 

其他OS调优

1. 禁用不是必需任务所必需的所有服务,例如: cupsgpmip6tablesmdmonitormdmpdbluetoothiptablesirqbalancesysstat.

 

2. : cpuspeednscdcrondnt如果可用,应启用以下服务pdntpnetworktuned

 

3. Set IRQ (interrupt request) affinity, refer to What is IRQ Affinity?

 

4.设置系统配置文件,重点关注网络性能/延迟.

$ tuned-adm profile network-throughput

$ cpupower frequency-set --governor performance

 

5.为了检查调整后的运行情况并使用正确的策略

 
$ tuned-adm active


理解PCIe配置以获得最佳性能


 

6. 关闭Numa平衡

$ echo 0 > /proc/sys/kernel/numa_balancing

 

7. 配置 tuned.conf

添加到 tuned.conf:

[bootloader]

cmdline = audit=0 idle=poll nosoftlockup mce=ignore_ce

改变tuned-main.conf:

检查事件之前要睡多长时间(以秒为单位),较高的数字表示较低的开销,但响应时间较长。
sleep_interval = 1 ===>更改为100

动态调整的更新间隔(以秒为单位)。 它必须是sleep_interval的倍数。
update_interval = 10 ===>更改为10000

 

8. 减少系统调度的推荐配置:

$ echo 100000000 > /proc/sys/kernel/sched_min_granularity_ns

$ echo 50000000 > /proc/sys/kernel/sched_migration_cost_ns

 

9. 其他减少系统调度的推荐配置:

$ echo 0 > /proc/sys/vm/swappiness

$ sysctl -w vm.swappiness=0

$ sysctl -w vm.zone_reclaim_mode=0

$ echo never > /sys/kernel/mm/transparent_hugepage/enabled

 

选择正确的NUMA和核心

在具有两个NUMA的计算机上,重要的是选择最接近所用卡的NUMA。

为了找到最靠近卡的NUMA


$ sudo mst status -v

NumaSelection.jpg

 

检查哪个内核位于每个NUMA上:

$ lscpu

NUMA_and_CPU.jpg

 

Huge pages

使用大页面可以减少访问页面表条目所需的系统资源量,从而提高系统性能。

在运行Rivermax之前,请启用大页面

:

$ echo 1000000000 > /proc/sys/kernel/shmmax

$ echo 800 > /proc/sys/vm/nr_hugepages



文件列表(部分)

名称 大小 修改日期

立即下载

相关下载

[AMD服务器(EYPC CPU)如何调优以获得最佳性能] 查看系统配置 在进行CPU调优之前,我们必须检查NUMA节点配置,并查看我们的服务器是否实际运行在AMD CPU:对于性能调整过程,我们将使用与网卡离最近的CPU内核2,6,10,14,18,22,26,30。 性能调优如下: 为了最大化NIC的带宽,中断事件处理必须仅由本地CPU处理。 其内存也使用本地的内存,这样可以减少QPI开销。
[linux unzip解压中文乱码问题] 在linux环境下,用unzip解压zip文件时,若解压文件中存在中文,会出现中文乱码问题。 解决方法: 在解压命令中指定字符集
[Linux下串口编程入门] 此文档是Linux下串口编程入门。 Linux 操作系统从一开始就对串行口提供了很好的支持,文档就 Linux 下的串行口通讯编程进行简单的介绍。
[《Linux就该这么学》2018版本] 此文档是《Linux就该这么学》2018版本。 此文档适合全面学习 Linux 技术的初学人员阅读,具有一定 Linux 使用经验的用户也可以通过本书来温习自己的 Linux知识。
[linux基础学习篇2] 此文档是linux基础学习篇2。 1. 什么是 Linux 1.1 计算器:计算的辅助工具 1.2 什么是操作系统? 2. Torvalds 的 Linux 发展 ........
[linux基础学习篇] 此文档是linux基础学习篇。 第零章 计算机概论 1.计算机:辅助人脑的好工具 2.个人计算机架构和借口设备 3.数据表达方式 4.软件程序运作

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部