← 返回首页

Linux性能调优进阶

📂 devops ⏱ 2 min 252 words

Linux性能调优进阶

性能分析方法论

USE方法

RED方法

CPU调优

CPU亲和性

# 查看CPU核心
lscpu

# 绑定进程到CPU
taskset -c 0,1 command

# 使用isolcpus内核参数
# 在GRUB中添加: isolcpus=2,3

进程优先级

# 查看nice值
ps -el | grep nginx

# 设置nice值
nice -n -10 command
renice -10 PID

中断优化

# 查看中断分布
cat /proc/interrupts

# 绑定网卡中断到CPU
echo 2 > /proc/irq/32/smp_affinity

内存调优

内核参数

# 查看内存参数
sysctl vm.swappiness
sysctl vm.dirty_ratio

# 优化内存使用
sysctl -w vm.swappiness=10
sysctl -w vm.dirty_ratio=30
sysctl -w vm.dirty_background_ratio=5

大页内存

# 启用透明大页
echo always > /sys/kernel/mm/transparent_hugepage/enabled

# 预分配大页
sysctl -w vm.nr_hugepages=1024

内存锁定

# 锁定进程内存
mlock command

# 在程序中使用
mlockall(MCL_CURRENT | MCL_FUTURE);

磁盘IO调优

IO调度器

# 查看当前调度器
cat /sys/block/sda/queue/scheduler

# 设置调度器
echo deadline > /sys/block/sda/queue/scheduler

文件系统优化

# ext4优化挂载选项
mount -o noatime,nodiratime,data=writeback /dev/sda1 /data

# 使用SSD优化
mount -o discard,noatime /dev/nvme0n1 /data

预读设置

# 查看预读值
blockdev --getra /dev/sda

# 设置预读值(KB)
blockdev --setra 4096 /dev/sda

网络调优

TCP优化

# 增加连接队列
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_max_syn_backlog=8192

# 启用TCP重用
sysctl -w net.ipv4.tcp_tw_reuse=1

# 调整端口范围
sysctl -w net.ipv4.ip_local_port_range="1024 65535"

# 启用TCP Fast Open
sysctl -w net.ipv4.tcp_fastopen=3

网卡优化

# 查看网卡信息
ethtool eth0

# 增加环形缓冲区
ethtool -G eth0 rx 4096 tx 4096

# 启用多队列
ethtool -L eth0 combined 8

实践:性能调优脚本

#!/bin/bash

echo "=== 性能调优 ==="

# 1. CPU优化
echo "优化CPU..."
sysctl -w kernel.sched_migration_cost_ns=5000000

# 2. 内存优化
echo "优化内存..."
sysctl -w vm.swappiness=10
sysctl -w vm.dirty_ratio=30
sysctl -w vm.dirty_background_ratio=5

# 3. 网络优化
echo "优化网络..."
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.ip_local_port_range="1024 65535"

# 4. 文件描述符
echo "优化文件描述符..."
ulimit -n 65535

echo "调优完成!"

性能分析工具

# CPU分析
perf top
perf record -p PID
perf report

# 内存分析
valgrind --tool=memcheck program
pmap -x PID

# IO分析
blktrace -d /dev/sda -o trace
btt -i trace.blktrace.0

# 网络分析
tcpdump -i eth0 -w capture.pcap
wireshark capture.pcap

总结

Linux性能调优需要系统性地分析和优化各个子系统。通过使用专业的分析工具和合理的调优参数,可以显著提升系统性能。