系统参数优化
系统参数对性能的影响主要体现在CPU模式、系统资源限制和系统自带的tuned-adm调优工具等方面。系统对用户使用资源的限制可能会导致程序不能正常运行或排队等待。某些情况下CPU和操作系统会根据负载运行情况动态调节系统运行功耗,使系统以更均衡的方式运行,这会带来一些性能损失,CPU模式和tuned-adm可以从节能配置、系统参数等方面对操作系统进行调整,使系统以更高的性能运行。
修改CPU模式为performance
CPU 动态节能技术用于降低服务器功耗,通过选择系统空闲状态不同的电源管理策略,可以实现不同程度降低服务器功耗,更低的功耗策略意味着 CPU 唤醒更慢对性能影响更大。cpufreq 是一个动态调整 cpu 频率的模块,系统启动时生成一个文件夹/sys/devices/system/cpu/cpu0/cpufreq/,里面有几个文件,其中 scaling_min_freq 代表最低频率,scaling_max_freq 代表最高频率,scalin_governor 代表 cpu 频率调整模式,用它来控制 CPU 频率。
# 查看当前的调节器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
conservative
常见的有以下两种模式:
performance: 顾名思义只注重效率,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节,这将增加计算集群中 CPU 的计算速度和响应速度。对于对时延和性能要求高的应用,需要修改为 Performance,从而关闭 CPU 的动态调节功能,禁止 CPU 休眠,把 CPU 频率固定到最高,这对于需要高计算能力和高吞吐量的工作负载非常有益,可以加速数据处理和计算密集型任务。
conservative:平滑地调整CPU频率,频率的升降是渐变式的,会自动在频率上下限调整,和ondemand的区别在于它会按需分配频率,而不是一味追求最高频率。
# 修改CPU模式
cpupower -c all frequency-set -g performance
系统资源限制-Ulimit参数设置
对于每个用户,Linux系统会限制其最大进程数等系统资源。为提高性能和避免程序错误,可以根据设备资源情况,设置各linux 用户的系统资源限制。可以用ulimit -a 来显示当前的各种用户限制。例如,对于需要做许多 socket 连接并使它们处于打开状态的应用程序而言,最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。下表中有一些较为关键的限制项。file size限制用户所能建立的最大文件,单位为区块;max locked memory限制内存锁定,因为内存的换入/换出有一定的性能损耗,所以有时候会需要将数据锁定到物理内存,该变量较小会使某些程序无法运行;open files限制进程打开文件的,如果该值过小会经常遇到Too many open files的问题;stack size限制栈空间大小,堆栈过小会导致运行报错。可以修改vim /etc/security/limits.conf文件,添加如下行:
* soft memlock unlimited
* hard memlock unlimited
* soft stack unlimited
* hard stack unlimited
* hard nofile 1000000
* soft nofile 1000000
* hard nproc 2000000
* soft nproc 2000000
将系统中系统资源限制设置为如下:
添加图片注释,不超过 140 字(可选)
系统性能优化工具-tuned
tuned 是一个用于系统性能优化的工具,它可以根据不同的工作负载和需求,动态地调整系统的各种参数和配置,以提供最佳的性能和效能。tuned 软件提供了很多个调优方案,这些方案根据不同的目标调节内核参数,如省电方案、高网络吞吐方案、低延迟方案等。管理员也可以根据自己的需求自定义调优方案。Linux系统提供了tuned-adm工具来查询和配置调优方案,可以通过如下命令查询系统支持的调优方案和目前设置的调优方案,可以看到目前为“throughput-performance”。
[root@node1 ~]# tuned-adm list
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- hpc-compute - Optimize for HPC compute workloads
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
Current active profile: throughput-performance
可用配置文件 | 描述 |
Balanced | 一般配置文件 |
desktop | 针对桌面场景进行优化 |
hpc-compute | 针对HPC计算负载进行优化 |
latency-performance | 禁用节能配置,启用sysctl模块设置来提升性能,主要改善延迟 |
network-latency | 以增加功耗为代价优化性能,重点关注低延迟网络性能 |
network-throughput | 优化网络吞吐量 |
powersave | 优化以实现低功耗 |
throughput-performance | 广泛适用的调整,可在各种工作负载中提供出色的性能。 |
virtual-guest | 适用于作为虚拟机客户机运行的设备 |
virtual-host | 适用于虚拟机的host设备 |
tuned是通过配置文件实现的调优,每个调优方法都有自己的配置文件。tuned.conf 是 tuned 调优方案的配置文件,配置文件放在
/etc/tuned/tuned.conf
/usr/lib/tuned/<profile-name tuned.conf<="" span="">
其中 /etc/tuned/ 目录的优先级更高。实际操作中可以调整调度模式为“hpc-compute”,针对hpc计算工作负载进行优化。
tuned-adm profile hpc-compute # 调整调度模式