自学内容网 自学内容网

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)!