Loading

Linux OS性能优化调优实践

Linux 操作系统性能优化最佳实践

Linux 系统的优化涉及到硬件配置、内核调优、进程管理、文件系统管理、网络优化等多个方面。以下是一个详细的优化指南,帮助提升 Linux 系统的性能。

1. 内核优化#

a. 调整内核参数#

  • vm.swappiness:控制内存管理的策略,决定 Linux 使用 swap 区的频率。默认值为 60,可以根据需求调整。

    • 优化建议:如果系统内存充足,减少 swap 使用,可以设置为 vm.swappiness=10
    sysctl -w vm.swappiness=10
    
  • vm.dirty_ratiovm.dirty_background_ratio:控制文件系统缓存的刷新策略,避免大量 I/O 操作发生在系统繁忙时。

    • 优化建议:通过调整这些参数减少 I/O 操作。
    sysctl -w vm.dirty_ratio=20
    sysctl -w vm.dirty_background_ratio=10
    
  • fs.file-max:控制系统允许打开的最大文件数,通常用于调优大量文件操作的应用程序。

    • 优化建议:根据应用需求,增加最大文件句柄数。
    sysctl -w fs.file-max=100000
    
  • net.core.somaxconn:设置系统允许的最大连接数,用于调优高并发服务。

    • 优化建议:提高值以支持更多的并发连接。
    sysctl -w net.core.somaxconn=1024
    

b. 内核参数持久化#

  • 要使内核参数在重启后生效,可以将配置添加到 /etc/sysctl.conf 文件中。
    vm.swappiness=10
    vm.dirty_ratio=20
    fs.file-max=100000
    net.core.somaxconn=1024
    

2. CPU 优化#

a. CPU 频率调节#

  • cpufrequtils:使用 cpufrequtils 工具来调整 CPU 的频率。根据负载动态调整 CPU 频率。

    • 优化建议:启用动态频率调整,减少 CPU 空闲时的功耗。
    cpupower frequency-set --governor ondemand
    
  • taskset:将进程绑定到特定 CPU 核心,以优化 CPU 负载分布。

    • 优化建议:确保高负载进程在多核 CPU 上均匀分布。
    taskset -c 0,1 command_to_run
    

b. 中断优化#

  • irqbalance:确保 CPU 核心平衡处理硬件中断,避免某个 CPU 核心过载。
    • 优化建议:启用并配置 irqbalance 服务。
    systemctl enable irqbalance
    systemctl start irqbalance
    

3. 内存优化#

a. 内存管理#

  • vm.overcommit_memory:控制 Linux 系统如何管理内存分配,避免内存超卖。

    • 优化建议:根据应用需求设置为 1,表示允许进程分配超出实际物理内存的内存。
    sysctl -w vm.overcommit_memory=1
    
  • vm.min_free_kbytes:设置 Linux 系统保留的最小空闲内存,避免系统进入极度交换状态。

    • 优化建议:根据系统负载设置适当的值。
    sysctl -w vm.min_free_kbytes=16384
    

b. 配置 HugePages#

  • HugePages 用于大页内存的管理,能显著提高大内存应用的性能。
    • 优化建议:启用 HugePages 对于需要大量内存的应用(如数据库)。
    sysctl -w vm.nr_hugepages=1024
    

4. 磁盘和文件系统优化#

a. 文件系统类型#

  • 选择合适的文件系统:对于性能要求较高的应用,选择 ext4XFSbtrfs 等性能较好的文件系统。避免使用 ext3
    • 优化建议:根据应用选择合适的文件系统类型,ext4 是最常见的选择。

b. 文件系统挂载选项#

  • 调整挂载选项:通过 noatimenodiratime 等选项优化文件系统性能,减少磁盘的写入操作。
    • 优化建议:将文件系统挂载为 noatime,减少访问时间更新。
    /dev/sda1 / ext4 defaults,noatime 0 1
    

c. 使用 SSD 和 RAID#

  • SSD 优化:如果使用 SSD 存储,确保启用了合适的参数以最大化性能。例如,启用 discard 参数以支持 TRIM 操作。

    /dev/sda1 / ext4 defaults,discard 0 1
    
  • RAID 配置:使用 RAID 0、RAID 5 或 RAID 10 来提高磁盘读写速度。RAID 10 提供最好的性能和冗余。

    • 优化建议:选择 RAID 10 对于大多数高性能场景。

d. 磁盘 I/O 优化#

  • 调整 I/O 调度器:Linux 默认使用 CFQ(完全公平队列)调度器,在某些场景下(例如数据库),使用 deadlinenoop 调度器可能更合适。
    • 优化建议:选择合适的调度器,使用 deadline 调度器优化数据库性能。
    echo deadline > /sys/block/sda/queue/scheduler
    

5. 网络优化#

a. 网络配置#

  • TCP 优化

    • 调整 tcp_rmemtcp_wmem 参数,优化网络带宽和延迟。
    sysctl -w net.ipv4.tcp_rmem="4096 87380 4194304"
    sysctl -w net.ipv4.tcp_wmem="4096 16384 4194304"
    
  • 调整最大连接数:增加系统支持的最大文件描述符和最大连接数。

    sysctl -w net.core.somaxconn=1024
    sysctl -w fs.file-max=2097152
    

b. 网络接口优化#

  • 启用 TCP_NODELAY:禁用 Nagle 算法,减少小数据包的延迟。
    • 优化建议:在高并发小数据包的应用中,启用 TCP_NODELAY
    sysctl -w net.ipv4.tcp_nodelay=1
    

6. 服务和进程优化#

a. 控制进程和服务#

  • 禁用不必要的服务:通过 systemctl 禁用不需要的服务,减少系统资源的占用。

    systemctl disable apache2
    systemctl stop apache2
    
  • 进程优先级:使用 nicerenice 命令调整进程的优先级。

    • 优化建议:将 CPU 密集型的进程优先级调低,I/O 密集型的进程优先级调高。
    renice -n -10 -p <pid>
    

b. 使用 cgroups 限制资源#

  • cgroups:使用 Control Groups 限制进程对 CPU、内存、I/O 等资源的使用,避免进程占用过多系统资源。
    • 优化建议:使用 systemdcgexec 管理进程资源。

7. 监控与调试#

a. 性能监控工具#

  • tophtop:实时监控 CPU、内存和进程状态。htop 提供比 top 更友好的界面。
  • iotop:监控磁盘 I/O 活动,查看哪个进程占用大量磁盘带宽。
  • netstatss:查看网络连接情况,帮助识别网络瓶颈。

b. 日志分析#

  • dmesg:查看系统启动时的内核日志,帮助识别硬件和驱动程序问题。
  • journalctl:通过 systemd 查看系统日志,检查性能相关的警告和错误信息。

总结#

Linux 系统优化是一项复杂的任务,涉及多个领域的配置与调整。优化的具体措施应根据系统的硬件配置、应用需求和负载情况来选择。通过调整内核参数、优化内存管理、选择合适的文件系统、调整网络设置、精细化服务和进程管理等方法,可以显著提高系统性能。

持续的监控与调整是优化的关键,定期评估系统状态并进行必要的调整,以确保系统在不同负载下始终运行高效。

作者:Jas0n0ss

出处:https://www.cnblogs.com/Jas0n0ss/p/18669411

版权:本作品采用「MIT」许可协议进行许可。

posted @   Jas0n0ss  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示