我有两台 Dell R730 系统,它们的硬件配置相同,是同时购买的。两台系统都运行 RHEL6.9,它们都是从同一镜像中获取镜像的。镜像是在一月份获取的。我每月从存储库更新一次软件包,因此一般来说,系统上的所有内容应该“几乎”相同。(即,我在一个系统上更改的任何软件或设置都会在另一个系统上更改,但由于这是一个手动过程,因此可能会遗漏某些内容)
我注意到一个系统的性能比另一个系统慢 2.5 倍。我正在测试的作业是单线程 CPU 密集型的。读取一些数据文件,但根据 iostat,磁盘 io 利用率非常低。Top 显示该过程始终固定在 100%,但系统有 88 个线程,平均负载仅为 1 左右。内存利用率非常低。没有网络利用率。(它使用的所有文件都是本地的)一个是复杂的 Python 脚本,另一个是专有软件程序,两者在一个系统上的运行速度都比另一个系统慢得多。
/proc/cpuinfo 相同。BIOS 设置相同。系统上只有一个用户。较快的系统连接到互联网,较慢的系统连接到独立网络。
在我的调查中,我只发现了两个不同点。1. 较快的系统运行的是 BIOS 版本 2.25,较慢的系统运行的是 BIOS 版本 2.43 2. 较慢的系统正在运行 auditd。但是在此过程中,审计日志中没有任何活动。
我意识到这很难调试,但我不知道该寻找什么。是否有一些内置软件工具可以用来深入了解可能发生的情况?
答案1
我现在对企业硬件上的 EL6 系统的建议如下:
- 将戴尔服务器设置为“OS 控制”模式,而不是“高性能”或“动态”模式。这将使您的单线程进程能够更好地利用 Turbo Boost,并为 OS CPU 调节器提供正确的控制。
- 有什么原因不能将固件升级到相同的版本?
- 对于 EL6,你应该设置tuned-adm 配置文件至
enterprise-storage
或latency-performance
。 - 如果你的系统速度较慢,没有连接互联网,请检查 DNS 和你的/etc/hosts 文件定义以确保您不会因任何分辨率问题而减慢速度。
- 检查并比较不同系统的 /etc/sysctl.conf 设置。
- 你可以跑步
sosreport
尝试获取两个系统配置的摘要。
当然,您也可以对流程进行分析…… top
,,,。perf top
pidstat
strace
或者使用以下方式实时查看服务器网络数据并关联所有系统指标来查看瓶颈存在的位置。
我还在 /etc/profile.d/tzfix.sh 中执行以下操作有充分理由:
# Set TZ variable to reduce stat("/etc/localtime" activity
# See: https://blog.packagecloud.io/eng/2017/02/21/set-environment-variable-save-thousands-of-system-calls/
#
export TZ=:/etc/localtime
这只是一些开始的想法。
答案2
这可能与电源管理有关。请尝试将两台服务器都设置为高性能模式(禁用电源管理),然后重新进行性能测试。