Linux系统性能调优技巧
在Linux系统中,性能调优是为了确保系统能够高效稳定地运行,尤其在服务器环境中。
下面我将列出一些常见的Linux系统性能调优技巧:
1. CPU性能优化
1.1 查看CPU使用情况
可以使用top、htop、vmstat等工具监控CPU的使用情况,识别消耗CPU资源较高的进程。
top
htop
vmstat 1 5
1.2 调整进程优先级(nice和 renice)
nice命令可以在启动进程时调整其优先级,renice用于调整已经运行的进程优先级。优先级范围从-20到19,数值越低优先级越高。
nice -n -5 ./my_process # 以优先级-5启动进程
renice -n 10 -p 1234 # 将进程ID为1234的优先级改为10
1.3 设置CPU调度策略(cpuset 和 taskset)
- cpuset允许你为不同的进程分配特定的CPU核。
- taskset用于绑定进程到特定的CPU核。
taskset -c 0,1 ./my_process # 将进程绑定到CPU 0和1
1.4 CPU频率调节(cpufrequtils)
根据实际需求调节CPU的工作频率,可以提高性能或节省功耗。
cpufreq-set -g performance # 设置为高性能模式
cpufreq-set -g powersave # 设置为节能模式
2. 内存优化
2.1 查看内存使用情况
- free命令可以显示系统的内存使用情况。
- vmstat可以更详细地查看内存分页和交换的统计数据。
free -m
vmstat 1 5
2.2 减少交换分区的使用
可以通过调整swappiness参数来控制系统使用swap分区的频率`swappiness的值范围为0到100,值越大表示系统更倾向于使用swap。
cat /proc/sys/vm/swappiness # 查看当前swappiness值
sysctl vm.swappiness=10 # 将swappiness设置为10(减少swap使用)
2.3 调整内存缓存和缓冲区清理策略
vm.dirty_ratio和vm.dirty_background_ratio控制系统在将缓存中的数据写入磁盘之前,允许多少内存保持"脏"状态。
sysctl -w vm.dirty_ratio=15 # 达到15%时强制刷新到磁盘
sysctl -w vm.dirty_background_ratio=5 # 达到5%时后台写入磁盘
3. I/O 性能优化
3.1 文件系统优化
选择合适的文件系统和挂载选项对I/O性能至关重要。
- 使用ext4、XFS或btrfs,这些文件系统在不同的应用场景下有不同的性能表现。
- 使用合适的挂载选项,比如noatime可以避免每次读取文件时更新访问时间,从而减少I/O操作。
mount -o noatime /dev/sda1 /mnt # 禁用访问时间的更新
3.2 I/O调度器(elevator)
Linux内核支持多种I/O调度器,如cfq、deadline、noop。可以根据应用场景选择合适的调度器。
cat /sys/block/sda/queue/scheduler # 查看当前调度器
echo noop > /sys/block/sda/queue/scheduler # 设置为noop调度器
3.3 调整读写缓冲区
可以通过调整read-ahead值来优化文件系统读取性能,特别是对顺序读写的应用。
blockdev --getra /dev/sda # 查看当前值
blockdev --setra 1024 /dev/sda # 设置为1024个块
4. 网络性能优化
4.1 调整TCP参数
通过优化内核的TCP栈可以显著提高网络性能。可以调整的参数包括net.core.somaxconn、tcp_fin_timeout等。
sysctl -w net.core.somaxconn=1024 # 增加等待连接队列的长度
sysctl -w net.ipv4.tcp_fin_timeout=30 # 缩短TCP连接关闭等待时间
4.2 增加套接字缓冲区大小
为高吞吐量的网络应用程序(如数据库服务器)增加套接字缓冲区大小。
sysctl -w net.core.rmem_max=16777216 # 设置接收缓冲区大小
sysctl -w net.core.wmem_max=16777216 # 设置发送缓冲区大小
4.3 使用ethtool调整网卡参数
ethtool可以用于调整网卡的硬件特性,开启或关闭网卡的TCP分段卸载(TSO)、大帧卸载(LRO)等特性。
ethtool -K eth0 tso off # 关闭TCP分段卸载
ethtool -K eth0 gso on # 开启大帧分段卸载
5. 系统内核优化
5.1 内核参数调优
通过调整/proc/sys中的参数可以针对具体的场景调优。比如,调整进程最大文件句柄数(fs.file-max)可以避免文件句柄耗尽。
sysctl -w fs.file-max=500000 # 增加最大文件句柄数
ulimit -n 500000 # 当前会话生效
5.2 使用HugePages优化内存分配
对于内存密集型应用(如数据库),启用HugePages可以减少TLB Miss,提高性能。
sysctl -w vm.nr_hugepages=128 # 设置HugePages数量
原文地址:https://blog.csdn.net/weixin_73699318/article/details/142718199
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!