在 Linux 中优化进程,一般从 CPU、内存、I/O、调度、系统参数 等多方面入手。下面按常见实战场景给你一个系统化的优化思路。
优化前一定要先确认瓶颈,否则是“盲目优化”。
top
htop
uptime
关注:
top -p PID
ps -eo pid,ppid,cmd,%cpu,%mem,stat
或用更专业的工具:
pidstat -u -r -d 1
nice -n 10 ./app
renice -n 5 -p PID
-20:最高优先级19:最低优先级✅ 场景:后台任务、低优先级任务
taskset -c 0,1 ./app
或:
taskset -p 0x03 PID
✅ 优点:
chrt -r -p 99 PID
常见策略:
SCHED_OTHER(默认)SCHED_FIFOSCHED_RR✅ 实时进程才用,普通进程慎用
valgrind、AddressSanitizervalgrind --leak-check=full ./app
查看:
swapon -s
free -h
降低 swap 倾向:
sysctl vm.swappiness=10
iostat -x 1
iotop
查看:
cat /sys/block/sda/queue/scheduler
设置:
echo deadline > /sys/block/sda/queue/scheduler
常见调度器:
noop:SSD / 云服务器deadline:数据库cfq:桌面系统mount -t tmpfs tmpfs /mnt/ramdisk
vmstat 1
pidstat -w 1
上下文切换过多常见原因:
ulimit -n
ulimit -n 65535
永久:
/etc/security/limits.conf
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_tw_reuse=1
vm.overcommit_memory = 1
net.core.netdev_max_backlog = 32768
| 工具 | 用途 |
|---|---|
| perf | CPU 热点分析 |
| strace | 系统调用分析 |
| ltrace | 库函数调用 |
| perf top | 实时性能 |
| bpftrace | 高级追踪 |
示例:
perf top
perf record -p PID
perf report
先定位瓶颈 → 再针对性优化 → 不要盲目调参数
如果你愿意,可以告诉我:
我可以直接给你一套可落地的优化方案。