Linux 网络性能tuning向导(2)

如果SoftIRQ没有运行足够长的时间,传入数据的速率可能超过内核足够快地耗尽缓冲区的能力。 因此,NIC缓冲区将溢出并且流量将丢失。 有时,有必要增加SoftIRQ允许在CPU上运行的时间。 这被称为netdev_budget。 预算的默认值为300.

# sysctl net.core.netdev_budget

net.core.netdev_budget = 300 

Tuned 

Tuned是一个自适应系统调优守护程序。 它可以用于将收集在一起的各种系统设置应用到称为配置文件的集合中。 调整后的配置文件可以包含诸如CPU调度器,IO调度程序和内核可调参数(如CPU调度或虚拟内存管理)的指令。 Tuned还集成了一个监视守护程序,可以控制或禁用CPU,磁盘和网络设备的节能功能。 性能调整的目的是应用能够实现最佳性能的设置。 Tuned可以自动化这项工作的很大一部分。 首先,安装调优,启动调整守护程序服务,并在启动时启用服务:

# yum -y install tuned

# service tuned start

# chkconfig tuned on

列出性能配置文件:

# tuned-adm list

Available profiles:

- throughput-performance

- default

- desktop-powersave

- enterprise-storage

...

可以在/ etc / tune-profiles /目录中查看每个配置文件的内容。 我们关心的是设置性能配置文件,如吞吐量性能,延迟性能或企业级存储

设置配置文件:

# tuned-adm profile throughput-performance

Switching to profile 'throughput-performance'

所选配置文件将在每次调谐服务启动时应用。 

The virtualization-related profiles provided as part of tuned-adm include:

virtual-guest  

Based on the enterprise-storage profile, virtual-guest also decreases the swappiness of virtual memory. This profile is available in Red Hat Enterprise Linux 6.3 and later, and is the recommended profile for guest machines.

  virtual-host  

Based on the enterprise-storage profile, virtual-host also decreases the swappiness of virtual memory and enables more aggressive writeback of dirty pages. This profile is available in Red Hat Enterprise Linux 6.3 and later, and is the recommended profile for virtualization hosts, including both KVM and Red Hat Enterprise Virtualization hosts.

 

Numad

与tuned类似,numad是一个守护进程,可以帮助在具有非统一内存访问(NUMA)架构的系统上的进程和内存管理。 Numad通过监视系统拓扑和资源使用情况来实现这一点,然后尝试定位进程以实现高效的NUMA局部性和效率,其中进程具有足够大的内存大小和CPU负载。 numad服务还需要启用cgroups(Linux内核控制组)。

默认情况下,从Red Hat Enterprise Linux 6.5开始,numad将管理使用超过300Mb内存使用率和50%一个核心CPU使用率的任何进程,并尝试使用任何给定的NUMA节点高达85%的容量。 Numad可以使用man numad中描述的指令进行更细致的调整。

CPU Power States

ACPI规范定义了各种级别的处理器功率状态或“C状态”,其中C0是操作状态,C1是停止状态,加上实现各种附加状态的处理器制造商以提供额外的功率节省和相关优点,例如较低的温度。不幸的是,在功率状态之间的转换在延迟方面是昂贵的。由于我们关注使系统的响应性尽可能高,期望禁用所有处理器“深度睡眠”状态,仅保留操作和停止。这必须首先在系统BIOS或EFI固件中完成。应禁用任何状态,如C6,C3,C1E或类似。我们可以通过在GRUB引导加载程序配置中的内核行中添加processor.max_cstate = 1来确保内核从不请求低于C1的C状态。在某些情况下,内核能够覆盖硬件设置,并且必须向具有Intel处理器的系统添加附加参数intel_idle.max_cstate = 0。处理器的睡眠状态可以通过以下方式确认:

cat /sys/module/intel_idle/parameters/max_cstate

0

较高的值表示可以输入附加的睡眠状态。 powertop实用程序的Idle Stats页面可以显示每个C状态花费的时间

使用如下脚本修改各个 CPU 调频(物理机有 16 个物理 CPU)

#!/bin/bash

for a in {0..15};

do echo $a;

echo 'performance' > /sys/devices/system/cpu/cpu$a/cpufreq/scaling_governor

cat /sys/devices/system/cpu/cpu$a/cpufreq/scaling_governor

done

BIOS 中修改

禁用物理机超线程

TurboBoost Disabled

Power Technology: Performance

Manual balancing of interrupts

对于高性能来说要关闭irqbalance,同时将irq于cpu进行绑定

Ethernet Flow Control (a.k.a. Pause Frames)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14794.html