R / Richie全部文章 ↑

Linux · 2 分钟阅读

Linux 系统性能优化

性能优化的第一原则:先量后调。盲调 sysctl 是大忌。

评估指标

uptime                          # 1/5/15 分钟负载
top                             # 实时 CPU
htop                            # top 的升级版
free -h                         # 内存
vmstat 1                        # 综合
iostat -dx 1                    # 磁盘 I/O
mpstat -P ALL 1                 # 每核 CPU

CPU

# 调整优先级
nice -n 19 <command>
renice 19 -p <pid>

# CPU 亲和
taskset -pc 0-2 <pid>

# 调度器
cat /sys/block/sda/queue/scheduler
echo mq-deadline > /sys/block/sda/queue/scheduler

桌面 / 交互用 scsi_mq / none,服务器用 mq-deadline,NVMe 用 none。

内存

# /etc/sysctl.d/99-memory.conf
vm.swappiness = 10
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
# 清理缓存(仅调试用)
echo 3 > /proc/sys/vm/drop_caches

sysctl -w vm.vfs_cache_pressure=50

磁盘

# 文件系统检查
e2fsck -f /dev/sda1

# 挂载参数
mount -o noatime,nodiratime /dev/sda1 /mnt

# 队列调整
echo 1024 > /sys/block/sda/queue/nr_requests

网络

# /etc/sysctl.d/99-network.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 4096
# 网卡多队列
ethtool -L eth0 combined 4
ethtool -G eth0 rx 2048 tx 2048

一些原则

  • 先测量再优化:perf / bpftrace 抓热点,不要凭感觉
  • 改 sysctl 先在测试机验证,生产一刀切容易翻车
  • 滚动重启 + 监控 比"调完一次大改"安全
  • 多数性能问题出在应用层,不在内核参数

推荐工具

工具 用途
perf CPU 采样、火焰图
bpftrace / bcc 内核/应用动态追踪
nicstat 网卡吞吐
iotop / biotop 进程级 I/O
Prometheus + Grafana 长期可视化

参考