针对具有几个 TCP 客户端的单个应用程序的 Red Hat Linux 调整

ste*_*reo 6 linux optimization tuning redhat centos

我知道 Linux 是为多用户/并发进程而构建的,但在公司级别,其中许多用于单个(但很大)的应用程序以支持内部服务,其中仅服务于很少的客户端。

在这样的用例中,我们应该如何调整系统或内核(特别是 Red Hat Linux、Fedora、CentOS)以针对该场景进行优化?为了最大限度地减少延迟,减少上下文切换,本地磁盘 I/O 非常少。

会话长度可以是持久的(因为客户端的数量只是几个),数据大小交换很小,但是非常频繁,例如每秒 1k 到 2k 的消息,大小从 40 到 100 字节。

HBr*_*ijn 6

性能调优既是一门黑色艺术,也是一门科学。已经写了关于它的完整书籍,包括相当多的内容作为供应商文档的一部分

您从良好的监控开始,增加负载,获得基线,然后才开始调整和观察您的调整是否达到预期结果。
冲洗并重复,直到获得最佳结果。

你没有提到你的主要 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 调优,Brandan Gregg制作了许多可视化图表,说明在系统的哪个部分使用哪个工具可以制作非常好的备忘单:

工具:

性能可观察性

使用哪些选项sar进行监控:

<code>sar</code> 选项

并密切相关:

Linux 基准测试工具

将观察结果转化为调整:

调优工具