性能优化
本文介绍 Ubuntu 26.04 中常用的性能监控工具和优化技巧,帮助你充分发挥系统硬件的性能潜力。
系统监控工具
htop - 交互式进程管理
# 安装(Ubuntu 26.04 通常已预装)
sudo apt install htop
# 启动
htophtop 常用操作:
| 快捷键 | 功能 |
|---|---|
F2 | 设置/配置界面 |
F3 | 搜索进程 |
F4 | 过滤进程 |
F5 | 树形视图 |
F6 | 排序 |
F9 | 发送信号(杀死进程) |
F10 | 退出 |
u | 按用户过滤 |
M | 按内存排序 |
P | 按 CPU 排序 |
T | 按时间排序 |
其他监控工具
# top - 基础进程监控
top
# vmstat - 虚拟内存统计
vmstat 1 5 # 每秒一次,共 5 次
# iostat - I/O 统计
sudo apt install sysstat
iostat -xz 1
# iotop - 查看进程 I/O
sudo apt install iotop
sudo iotop
# nmon - 综合性能监控
sudo apt install nmon
nmon
# glances - 现代化系统监控
sudo apt install glances
glances
# btop - 美观的资源监控
sudo apt install btop
btop查看系统资源信息
# CPU 信息
lscpu
cat /proc/cpuinfo | grep "model name" | head -1
# 内存信息
free -h
cat /proc/meminfo
# 磁盘使用
df -h
# 负载平均值
uptime
cat /proc/loadavg
# 网络连接
ss -tunaplCPU 优化
CPU 频率管理
# cpufrequtils 已废弃,改用 cpupower(随 linux-tools 提供)
sudo apt install linux-tools-common linux-tools-generic
# 查看当前 CPU 频率与调节器
cpupower frequency-info
# 查看可用的频率调节器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# 设置为性能模式
sudo cpupower frequency-set -g performance
# 设置为节能模式
sudo cpupower frequency-set -g powersave桌面环境也可使用更高层的电源配置工具 power-profiles-daemon:
# 查看可用电源配置
powerprofilesctl list
# 切换到性能模式
powerprofilesctl set performance进程优先级
# 使用 nice 启动进程(-20 到 19,值越小优先级越高)
nice -n 10 /path/to/task.sh
# 修改运行中进程的优先级
renice -n 5 -p PID
# 设置实时优先级
sudo chrt -f 50 /path/to/realtime-task
# 绑定进程到特定 CPU 核心
taskset -c 0,1 /path/to/task.sh内存优化
Swap 调优
# 查看当前 swap 使用情况
swapon --show
free -h
# 查看当前 swappiness 值(默认 60)
cat /proc/sys/vm/swappinessswappiness 参数说明:
| 值 | 适用场景 |
|---|---|
| 0-10 | 桌面系统 / 有充足内存的服务器,尽量少用 swap |
| 30-40 | 服务器通用场景 |
| 60 | 默认值 |
| 80-100 | 内存紧张的系统,积极使用 swap |
# 临时修改 swappiness
sudo sysctl vm.swappiness=10
# 永久修改
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.d/99-performance.conf
sudo sysctl --system其他内存参数
# 缓存压力(默认 100,减小值可保留更多目录和 inode 缓存)
echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.d/99-performance.conf
# 脏页写回策略
echo "vm.dirty_ratio=15" | sudo tee -a /etc/sysctl.d/99-performance.conf
echo "vm.dirty_background_ratio=5" | sudo tee -a /etc/sysctl.d/99-performance.conf
# 应用所有修改
sudo sysctl --system清理缓存
# 释放页面缓存
sudo sync; echo 1 | sudo tee /proc/sys/vm/drop_caches
# 释放 dentry 和 inode 缓存
sudo sync; echo 2 | sudo tee /proc/sys/vm/drop_caches
# 释放所有缓存
sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_cachesI/O 调度器
查看和修改 I/O 调度器
# 查看当前 I/O 调度器
cat /sys/block/sda/queue/scheduler
# 输出示例: [mq-deadline] kyber bfq none
# 临时修改
echo "bfq" | sudo tee /sys/block/sda/queue/schedulerI/O 调度器选择
| 调度器 | 适用场景 |
|---|---|
mq-deadline | 通用场景,适合大多数 HDD 和 SSD |
bfq | 桌面系统,提供更好的交互响应 |
kyber | 高性能 NVMe SSD |
none | NVMe SSD 直接访问,最低延迟 |
持久化 I/O 调度器设置
创建 udev 规则:
sudo nano /etc/udev/rules.d/60-scheduler.rules# HDD 使用 mq-deadline
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="mq-deadline"
# SSD 使用 none 或 mq-deadline
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# NVMe 使用 none
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"sudo udevadm control --reload-rulesSSD 优化
启用 TRIM
TRIM 允许操作系统通知 SSD 哪些数据块不再使用,有助于维持 SSD 性能和延长寿命。
# 检查 SSD 是否支持 TRIM
sudo hdparm -I /dev/sda | grep TRIM
# 手动执行 TRIM
sudo fstrim -v /
# 查看定时 TRIM 服务
systemctl status fstrim.timer
# 启用定时 TRIM(每周自动执行)
sudo systemctl enable --now fstrim.timerfstab 中的 SSD 优化选项
# 推荐的 SSD 挂载选项
UUID=xxxx / ext4 defaults,noatime,discard 0 1| 选项 | 说明 |
|---|---|
noatime | 不记录文件访问时间,减少写入 |
discard | 实时 TRIM(或使用 fstrim.timer 替代) |
commit=60 | 延长提交间隔,减少写入次数 |
减少不必要的磁盘写入
# 将 /tmp 挂载到内存
# 在 /etc/fstab 中添加:
# tmpfs /tmp tmpfs defaults,noatime,size=2G 0 0
# 减少日志写入
sudo nano /etc/systemd/journald.conf
# 设置: Storage=volatile (仅存内存,重启后丢失)
# 或: SystemMaxUse=100M (限制日志大小)网络优化
TCP 参数调优
sudo nano /etc/sysctl.d/99-network.conf# TCP 缓冲区大小
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
# TCP 连接优化
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_mtu_probing=1
net.ipv4.tcp_congestion_control=bbr
# 连接队列
net.core.somaxconn=65535
net.core.netdev_max_backlog=65535
# TIME_WAIT 优化
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=15# 启用 BBR 拥塞控制
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.d/99-network.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.d/99-network.conf
sudo sysctl --system
# 验证 BBR 是否生效
sysctl net.ipv4.tcp_congestion_control文件系统优化
ext4 优化
# 查看文件系统参数
sudo tune2fs -l /dev/sda2
# 减少预留空间(默认 5%,大分区可以减少)
sudo tune2fs -m 1 /dev/sda2文件描述符限制
# 查看当前限制
ulimit -n
# 临时增加限制
ulimit -n 65535
# 永久修改
sudo nano /etc/security/limits.conf# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535系统级别:
echo "fs.file-max=2097152" | sudo tee -a /etc/sysctl.d/99-performance.conf
sudo sysctl --system启动优化
# 分析启动耗时
systemd-analyze
# 查看各服务启动时间
systemd-analyze blame
# 查看关键启动路径
systemd-analyze critical-chain
# 禁用不需要的服务
sudo systemctl disable bluetooth.service # 不使用蓝牙
sudo systemctl disable cups.service # 不使用打印
sudo systemctl disable ModemManager.service # 不使用调制解调器
# 查看启动日志中的错误
journalctl -b -p err性能基准测试
# 磁盘性能测试
sudo apt install fio
# 顺序读取测试
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --runtime=30
# 随机读写测试
fio --name=randreadwrite --rw=randrw --bs=4k --size=1G --numjobs=4 --runtime=30
# 简单的磁盘写入速度测试
dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 oflag=direct
# 内存带宽测试
sudo apt install sysbench
sysbench memory run
# CPU 基准测试
sysbench cpu --threads=$(nproc) run
# 网络性能测试
sudo apt install iperf3
# 服务端: iperf3 -s
# 客户端: iperf3 -c server_ipLast updated on