我知道 Linux 是为多用户/并发进程而构建的,但在企业层面,它们许多用于单个(但很大)的应用程序来支持内部服务,而这些服务仅为极少数客户提供服务。
在这样的用例中,我们应该如何调整系统或内核(特别是 Red Hat Linux、Fedora、CentOS)来优化场景?尽量减少延迟,减少上下文切换,减少本地磁盘 I/O。
会话长度可以是持久的(因为客户端数量只有几个),数据大小交换很小,但非常频繁,例如每秒 1k 到 2k 的消息,大小从 40 到 100 字节。
答案1
性能调优既是一门黑魔法,也是一门科学。关于它的完整书籍已经出版,其中包括相当一部分供应商文档
首先要进行良好的监控,然后增加负载,获得基线,然后才开始调整和观察您的调整是否产生了预期结果。
反复进行,直到获得最佳结果。
您没有提到主要的 RHEL 或 CentOS 版本,但它们都包括自动调整,例如tuned
守护进程。可以从中选择预定义的性能配置文件tuned-adm list
,然后使用 激活tune-adm profile <profile-name>
。
对于您的用例,RHEL 7 配置文件latency-performance
听起来你可能会受益匪浅:
latency-performance
专注于降低延迟的服务器配置文件。此配置文件适用于延迟敏感型工作负载,这些工作负载可从 c 状态调整和透明大页面的 TLB 效率提高中受益。此配置文件通过设置intel_pstate
和来提高性能而不是节能max_perf_pct=100
。它启用透明大页面,使用cpupower
设置性能 cpufreq 调节器,并请求cpu_dma_latency
的值1
。
对于更常规的 Linux 调优布兰登·格雷格制作了许多可视化图表,说明了在系统的哪个部分应该使用哪种工具,这些图表可以作为非常好的备忘单: