Linux系统性能调优技巧

Linux系统性能调优技巧

      • 1. **CPU 调优**
        • 1.1. 使用 CPU 亲和力 (CPU Affinity)
        • 1.2. 调整 CPU 频率调节器
      • 2. **内存调优**
        • 2.1. 优化 Swappiness
        • 2.2. 清理缓存
      • 3. **I/O 调优**
        • 3.1. 调整 I/O 调度器
        • 3.2. 提升文件系统性能
      • 4. **网络调优**
        • 4.1. 调整 TCP 参数
        • 4.2. 调整连接跟踪表大小
      • 5. **进程和服务调优**
        • 5.1. 优化系统服务
        • 5.2. 调整进程优先级 (Nice 值)
      • 6. **内核调优**
        • 6.1. 使用 HugePages
        • 6.2. 调整文件描述符限制
      • 总结

Linux 系统的性能调优涉及多个方面,包括 CPU、内存、存储、网络等资源的优化。以下是一些常见的 Linux 系统性能调优技巧:

1. CPU 调优

1.1. 使用 CPU 亲和力 (CPU Affinity)

通过设置 CPU 亲和力,可以将进程绑定到特定的 CPU 核心,从而减少上下文切换和 CPU 缓存失效。

  • 查看进程的 CPU 亲和力:

    taskset -cp <PID>
    
  • 设置进程的 CPU 亲和力:

    taskset -cp <CPU编号> <PID>
    
1.2. 调整 CPU 频率调节器

根据需要调整 CPU 的工作频率策略来提高性能或节省电源。常用的 CPU 频率调节器包括 performancepowersave

  • 查看当前 CPU 频率调节器:

    cpupower frequency-info
    
  • 设置为性能优先模式:

    cpupower frequency-set -g performance
    

2. 内存调优

2.1. 优化 Swappiness

Swappiness 是控制内存交换 (swap) 使用的参数。默认情况下,Linux 会在内存使用到一定程度时开始使用交换空间。通过调整 swappiness 值,可以控制交换的频率。

  • 查看当前 swappiness 值:

    cat /proc/sys/vm/swappiness
    
  • 临时修改 swappiness 值:

    sysctl vm.swappiness=10
    
  • 永久修改 swappiness:
    编辑 /etc/sysctl.conf,添加或修改以下内容:

    vm.swappiness = 10
    
2.2. 清理缓存

在某些情况下,手动清理缓存可以释放内存。

  • 清理页面缓存:

    sync; echo 1 > /proc/sys/vm/drop_caches
    
  • 清理目录和 inode 缓存:

    sync; echo 2 > /proc/sys/vm/drop_caches
    
  • 清理所有缓存:

    sync; echo 3 > /proc/sys/vm/drop_caches
    

3. I/O 调优

3.1. 调整 I/O 调度器

Linux 提供了多种 I/O 调度器,如 noopdeadlinecfq,根据你的系统负载选择合适的调度器可以提高性能。

  • 查看当前 I/O 调度器:

    cat /sys/block/<设备名>/queue/scheduler
    
  • 设置 I/O 调度器:

    echo deadline > /sys/block/<设备名>/queue/scheduler
    
  • 常见调度器:

    • noop:适合 SSD 等低延迟设备。
    • deadline:适合需要低延迟的环境。
    • cfq:适合一般桌面系统,提供公平的 I/O 分配。
3.2. 提升文件系统性能

使用 noatime 挂载选项可以减少文件系统的写操作。

  • 编辑 /etc/fstab,在挂载选项中添加 noatime
    /dev/sda1 / ext4 defaults,noatime 0 1
    

4. 网络调优

4.1. 调整 TCP 参数

通过调整 /etc/sysctl.conf 中的 TCP 相关参数,可以优化网络性能。

  • 增加 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_low_latency = 1
    
4.2. 调整连接跟踪表大小

如果系统需要处理大量并发连接,可以增加连接跟踪表的大小:

  • 临时调整:

    sysctl -w net.netfilter.nf_conntrack_max=65536
    
  • 永久调整:
    编辑 /etc/sysctl.conf,添加以下内容:

    net.netfilter.nf_conntrack_max=65536
    

5. 进程和服务调优

5.1. 优化系统服务

通过禁用不必要的服务可以减少资源占用,从而提高性能。

  • 查看开机启动的服务:

    systemctl list-unit-files --type=service
    
  • 禁用不必要的服务:

    sudo systemctl disable <service_name>
    
5.2. 调整进程优先级 (Nice 值)

通过调整进程的 nice 值,可以提高或降低特定进程的优先级。

  • 查看当前进程的优先级:

    ps -o pid,ni,comm -p <PID>
    
  • 提高进程的优先级(降低 nice 值):

    renice -n -10 -p <PID>
    

6. 内核调优

6.1. 使用 HugePages

HugePages 是一种内存管理技术,适用于需要高效处理大块内存的应用程序(如数据库)。

  • 查看当前 HugePages 设置:

    grep Huge /proc/meminfo
    
  • 设置 HugePages 的数量:

    echo 128 > /proc/sys/vm/nr_hugepages
    
6.2. 调整文件描述符限制

增加文件描述符的数量可以提高处理并发连接的能力。

  • 查看当前文件描述符限制:

    ulimit -n
    
  • 临时调整:

    ulimit -n 65536
    
  • 永久调整:
    编辑 /etc/security/limits.conf,添加以下内容:

    * soft nofile 65536
    * hard nofile 65536
    

总结

这些技巧帮助提升 Linux 系统的整体性能,具体调优措施需要根据你的应用场景(如服务器类型、运行负载)进行选择和调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MES的“尽头”是什么?

01 MES的发展历程 要了解MES首先需要知道其发展历程。制造执行系统&#xff08;MES&#xff09;是随着制造业的发展逐步演变和成熟起来的。以下是MES发展的几个主要阶段&#xff1a; 第一阶段&#xff1a;数据收集与报告&#xff08;1980年代 - 1990年代&#xff09; 制造业…

[苍穹外卖]-05Redis快速入门

Redis入门 Redis是一个基于内存的key-value结构数据库 基于内存存储, 读写性能高适合存储热点数据(热点商品,咨询,新闻)企业应用广泛中文官网: Redis中文网英文网: https://rsdis.io 下载安装: Redis安装包分为Windows版本和Linux版本, Redis的windows版属于绿色软件, 解压后…

python之异步任务

在 Python 中&#xff0c;异步任务通常通过使用库如 Celery 来实现。Celery 是一个简单、灵活且可靠的分布式系统&#xff0c;用于处理大量消息&#xff0c;同时提供操作控制。 在 Celery 中&#xff0c;delay 和 apply_async 是两种常用的方法来调度异步任务。 delay 方法 …

OCR技术视角:智能文档管理中的票据自动化识别与处理

在数字化转型的浪潮中&#xff0c;企业对于高效、自动化的文档管理需求日益增长。票据作为企业运营中不可或缺的部分&#xff0c;其识别与管理的智能化成为了提升工作效率的关键。本文将深入探讨智能文档系统中票据识别功能的原理、技术优势以及在不同行业中的应用实践&#xf…

观察者模式observer

允许一个对象将其状态的改变通知其他对象 当Editor调用openFile()和saveFile()时&#xff0c;它会通过EventManager的notify方法&#xff0c;通知所有订阅了这些事件的监听器。

828华为云征文|华为云Flexus X实例部署k3s与kuboard图形化管理工具

828华为云征文&#xff5c;华为云Flexus X实例部署k3s与kuboard图形化管理工具 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求&#xff0c;一定…

算法分享——《双指针》

文章目录 ✅[《移动零》](https://leetcode.cn/problems/move-zeroes/)&#x1f339;题目描述&#xff1a;&#x1f697;代码实现&#xff1a;&#x1f634;代码解析&#xff1a; ✅[《复写零》](https://leetcode.cn/problems/duplicate-zeros/)&#x1f339;题目描述&#xf…

【React】Vite 构建 React

项目搭建 vite 官网&#xff1a;Vite 跟着文档走即可&#xff0c;选择 react &#xff0c;然后 ts swc。 着重说一下 package-lock.json 这个文件有两个作用&#xff1a; 锁版本号&#xff08;保证项目在不同人手里安装的依赖都是相同的&#xff0c;解决版本冲突的问题&am…

[数据集][目标检测]石油泄漏检测数据集VOC+YOLO格式6633张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6633 标注数量(xml文件个数)&#xff1a;6633 标注数量(txt文件个数)&#xff1a;6633 标注…

吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.09.04 更新】

以前我也是通过官网使用&#xff0c;但是经常被封号&#xff0c;就非常不方便&#xff0c;后来有朋友推荐国内工具&#xff0c;用了一阵之后&#xff0c;发现&#xff1a;稳定方便&#xff0c;用着也挺好的。 最新的 GPT-4o、4o mini&#xff0c;可搭配使用~ 1、 最新模型科普&…

【Qt】qt发布Release版本,打包.exe可执行文件

前言&#xff1a;Qt编译的可执行程序&#xff0c;如果直接运行&#xff0c;会出现0xc000007b报错&#xff0c;或者“由于占不到Qt5Network.dll,无法继续执行代码。重新安装程序可能会解决此问题”的报错&#xff0c;因为缺少相关的依赖包和动态库。 1、第一步&#xff1a;找到…

从电商行业的变化引出未来技术趋势

时间&#xff1a;2024年09月08日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 音频地址&#xff1a;喜马拉雅 希望大家帮个忙&#xff01;如果大家有工作机会&#xff0c;希望帮小蒋推荐一下&#xff0c;小蒋希望遇到一个认真…

Android 系统源码项目加载预编好的so库

Android 系统源码项目加载预编好的so库 文章目录 Android 系统源码项目加载预编好的so库一、前言二、源码中加载so1、Android.mk加载so加载so的主要相关代码&#xff1a; 2、Android.bp加载so&#xff08;1&#xff09;Android.mk使用源码命令编译成Android.bp&#xff08;2&am…

【C++】STL容器详解【下】

目录 一、list容器 1.1 list基本概念 1.2 lsit构造函数 1.3 list数据元素插入和删除操作 1.4 list大小操作 1.5 list赋值操作 1.6 list数据的存取 1.7 list反转排序 二、set/multiset容器 2.1 set/multiset基本概念 2.2 set构造函数 2.3 set赋值操作 2.4 set大小操…

Hash Table、HashMap、HashSet学习

文章目录 前言Hash Table&#xff08;散列表&#xff09;基本概念散列函数散列冲突&#xff08;哈希碰撞&#xff09;拉链法红黑树时间复杂度分析 HashMap基础方法使用基本的增删改查其他的方法 实现原理 HashSet基础操作去重原理 前言 本文用于介绍关于Hash Table、HashMap、…

Unity解析XML开发随机名字生成模块

概述 在游戏开发中,自动生成具有真实感的角色名字是一项常见的需求,特别是在MMORPG或者RPG游戏中。本篇博客将介绍如何利用Unity结合XML配置文件来实现一个随机名字生成模块。我们将从头开始逐步构建这一功能,并详细解释每一步的技术细节。 技术模块介绍 1. XML解析 XML…

【qt】多线程实现倒计时

1.界面设计 设置右边的intvalue从10开始倒计时 2.新建Thread类 新建Thread类&#xff0c;使其继承QThread类&#xff0c;多态重写run函数&#xff0c;相当于线程执行函数 3.重写run函数 重写run函数&#xff0c;让另一个进程每隔1s发出一个信号&#xff0c;主线程使用conne…

uniapp 全屏日历,动态无限加载

不好用请移至评论区揍我 原创代码,请勿转载,谢谢! 注:本人仅在微信小程序测试过,未在其他app/h5尝试过,按理说应该是可以的,代码没有引用任何第三方组件 日历中每个日期下方的空白部分均可自定义,写在代码中的<view class="item">我是内容</view>…

Prometheus 服务监控

目录 Prometheus 是什么 Prometheus 的特点 Prometheus 的组件 Prometheus 的指标 Prometheus 的使用场景 Prometheus 的安装 方式一&#xff1a;压缩包方式安装 方式二&#xff1a;Docker 方式安装 Prometheus 的 Web UI 面板介绍 Prometheus 目录结构介绍 Prometh…

开源可视化大屏superset Docker环境部署

superset 开源可视化大屏Docker环境部署 前言 superset是俄罗斯开源的一款可视化大屏&#xff0c;用于数据可视化探索&#xff0c;含有丰富的图表组件&#xff0c;可以支持接入各种数据源。 接触superset就是想体验下可视化大屏功能&#xff0c;想最快速度安装成功&#xff…