调优从观测开始
信创平台上的性能调优,先要能回答三个问题:瓶颈在处理器、内存还是存储;现象是持续的还是只在特定时段出现;当前指标与基线的差距有多大。没有基线数据就直接改参数,很可能把问题从一处搬到另一处,且无法证明改动是否有效。
常见抓手与顺序
处理器侧看调频策略与亲和性绑定,内存侧看 NUMA 拓扑与跨节点访问,存储侧看 IO 调度与队列深度,网络侧看中断分布与网卡多队列。调优过程本身要可控:一次只改一个变量,改完压测对比,保留可回滚的记录,避免多参数同改后无法归因。
基本信息
| 适用平台 | x86_64 与 aarch64、loongarch64 等信创服务器 |
|---|---|
| 观测工具 | lscpu、numactl、iostat、sar、pidstat |
| 调频控制 | cpupower frequency-set 或对应 sysfs 接口 |
| 调优原则 | 先采集基线,再单变量变更,最后压测验证并固化 |
典型使用场景
- 业务上线前压测,确认目标平台能否达到性能预期
- 迁移后出现吞吐下降,需要定位是配置还是平台差异
- 数据库等延迟敏感型应用需要绑定核与内存节点
- 批量任务与在线业务混跑时,用优先级与错峰减少互相干扰
- 整机验收时留存性能基线,作为后续容量规划的依据
观测入口
观测入口
lscpu | head -15 # 核心数与 NUMA 拓扑
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # 调频策略
numactl -H | head # 节点与内存分布
sar -u 1 5 2>/dev/null || mpstat 1 5 # 处理器利用率明细
iostat -x 1 3 | head -20 # 磁盘吞吐与等待常用调整(示例)
常用调整(示例)
sudo cpupower frequency-set -g performance 2>/dev/null # 改为性能优先策略
numactl --cpunodebind=0 --membind=0 ./bench # 绑定同一节点验证效果
cat /sys/block/sda/queue/scheduler # 查看 IO 调度器
cat /sys/block/sda/queue/read_ahead_kb # 预读大小
# 每次只改一项,改完立即复测并记录,不要批量下发抓手与观察点
| 抓手 | 调整对象 | 观察指标 |
|---|---|---|
| 调频策略 | 处理器频率与功耗取舍 | 单核睿频与整体吞吐变化 |
| NUMA 亲和 | 进程与内存节点绑定 | 跨节点访存占比与延迟 |
| IO 调度 | 块设备队列与预读 | 每秒读写与平均等待时间 |
| 中断分布 | 网卡多队列与中断亲和 | 单核软中断占比与丢包 |
| 并发模型 | 进程与线程池规模 | 上下文切换与运行队列长度 |
调优参数与处理器型号、内核版本强相关,同一组参数换平台未必有效。变更前记录各项基线值,压测后再决定是否固化为持久化配置。