Linux 性能调优技巧

  • 推荐学习文档
    • golang应用级os框架,欢迎star
    • golang应用级os框架使用案例,欢迎star
    • 案例:基于golang开发的一款超有个性的旅游计划app经历
    • golang实战大纲
    • golang优秀开发常用开源库汇总
    • 想学习更多golang知识,这里有免费的golang学习笔记专栏

文章目录

    • 引言
    • CPU 性能调优
      • 1.查看 CPU 使用情况
      • 2.调整进程优先级
      • 3.CPU 频率调整(针对支持动态频率调整的 CPU)
    • 内存性能调优
      • 1.查看内存使用情况
      • 2.优化内存缓存
    • 磁盘性能调优
      • 1.查看磁盘 I/O 情况
      • 2.磁盘调度算法调整
    • 网络性能调优
      • 1.查看网络使用情况
      • 2.调整网络参数
    • 总结

引言

Linux 作为一种广泛使用的操作系统,在服务器、桌面和移动设备等多种场景下运行。优化 Linux 系统的性能可以提高应用程序的响应速度、提升系统资源利用率以及增强整体的用户体验。本文将详细介绍一些 Linux 性能调优的技巧,并提供相关的代码示例。

CPU 性能调优

1.查看 CPU 使用情况

  • 使用top命令可以实时查看系统的 CPU 使用情况。在命令行中输入top,可以看到各个进程占用 CPU 的百分比、CPU 负载等信息。
  • 另外,mpstat命令可以提供更详细的多 CPU 核心使用信息。例如,mpstat -P ALL 1命令将每秒显示所有 CPU 核心的统计信息,包括用户态、内核态、空闲等时间占比。

2.调整进程优先级

  • 在 Linux 中,可以使用nice命令调整进程的优先级。nice值的范围是 -20(最高优先级)到 19(最低优先级)。默认情况下,进程的nice值为 0。
  • 例如,要以较低的优先级运行一个长时间运行的脚本long_running_script.sh,可以使用以下命令:
nice -n 10./long_running_script.sh

如果要调整已经运行的进程的优先级,可以使用renice命令。例如,要将进程 ID 为 1234 的进程的优先级调整为 5,可以使用:

renice -n 5 -p 1234

3.CPU 频率调整(针对支持动态频率调整的 CPU)

  • 现代 CPU 支持动态频率调整以节省能源。可以使用cpufreq -utils工具包来管理 CPU 频率。
  • 首先,安装cpufreq -utils(在基于 Debian 或 Ubuntu 的系统上,可以使用sudo apt-get install cpufreq -utils)。
  • 然后,可以使用cpufreq -info查看 CPU 频率相关信息。
  • 要将 CPU 设置为最高性能模式,可以使用sudo cpufreq -set -g performance。
  • 要将 CPU 设置为节能模式,可以使用sudo cpufreq -set -g powersave。

内存性能调优

1.查看内存使用情况

  • free命令是查看内存使用情况的常用工具。输入free -h可以以人类可读的格式(如 KB、MB、GB 等)显示系统的总内存、已使用内存、空闲内存、缓存和缓冲区等信息。
  • vmstat命令也可以提供内存相关的统计信息,如内存交换(swap)活动等。例- 如,vmstat 1将每秒显示一次内存相关的统计信息。

2.优化内存缓存

  • Linux 内核使用内存缓存来提高文件系统和磁盘 I/O 的性能。有时候,可以通过调整swappiness参数来优化内存使用。swappiness的值表示将内存数据交换到磁盘交换空间(swap)的倾向程度,取值范围是 0 - 100。
  • 要查看当前的swappiness值,可以使用cat /proc/sys/vm/swappiness。
  • 可以通过编辑/etc/sysctl.conf文件并添加或修改vm.swappiness = [新的值](例如,将swappiness设置为 10 以减少不必要的内存交换),然后运行sudo sysctl -p使设置生效。

磁盘性能调优

1.查看磁盘 I/O 情况

  • iostat命令可以用于查看磁盘 I/O 的统计信息。例如,iostat -x 1将每秒显示一次扩展的磁盘 I/O 统计信息,包括每秒读写次数、每秒读写数据量、平均等待时间等。
  • iotop命令可以实时查看哪些进程正在进行磁盘 I/O 操作以及它们的读写速度。

2.磁盘调度算法调整

  • Linux 内核支持多种磁盘调度算法,如cfq(完全公平队列)、deadline和noop。不同的算法适用于不同的工作负载。
  • 可以使用cat /sys/block/sda/queue/scheduler(假设sda是要查看的磁盘设备)来查看当前磁盘使用的调度算法。
  • 要临时将磁盘调度算法设置为deadline(例如,对于数据库服务器可能更适合),可以使用sudo echo deadline > /sys/block/sda/queue/scheduler。
  • 要永久修改磁盘调度算法,可以在/etc/rc.local文件中添加相应的命令(在系统启动时执行)。

网络性能调优

1.查看网络使用情况

  • ifconfig命令可以查看网络接口的基本信息,如 IP 地址、MAC 地址、接收和发送的数据包数量等。
  • netstat命令可以查看网络连接状态、端口监听情况等。例如,netstat -tuln可以显示正在监听的 TCP 和 UDP 端口。
  • nethogs命令可以实时查看每个进程的网络带宽使用情况。

2.调整网络参数

  • 可以通过调整/etc/sysctl.conf文件中的网络参数来优化网络性能。例如:
  • 增大网络接收缓冲区和发送缓冲区大小。添加或修改以下内容:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

然后运行sudo sysctl -p使设置生效。

总结

Linux 性能调优是一个复杂而持续的过程,需要根据系统的具体需求和负载情况来选择合适的调优技巧。通过对 CPU、内存、磁盘和网络等方面进行优化,可以显著提高 Linux 系统的性能,从而更好地满足用户和应用程序的需求。

请注意,在进行任何系统调优操作之前,最好先备份相关的配置文件,并在测试环境中进行充分的测试,以确保调优操作不会对系统造成负面影响。

希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。

关注我看更多有意思的文章哦!👉👉

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

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

相关文章

原码、反码、补码极简理解

原码、反码、补码 1、概述 计算机里都是以补码的形式存储数据,单纯给我们补码形式的数据,我们是不认识的,只有把补码转换成原码,我们才能知道这份数据的意思 2、基本介绍 原码:最高位为符号位,0 代表正数…

关闭IDM自动更新

关闭IDM自动更新 1 打开注册表2 找到IDM注册表路径 1 打开注册表 winR regedit 2 找到IDM注册表路径 计算机\HKEY_CURRENT_USER\Software\DownloadManager 双击LstCheck,把数值数据改为0 完成 感谢阅读

【代码随想录Day33】动态规划Part02

62.不同路径 题目链接/文章讲解:代码随想录 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili class Solution {public int uniquePaths(int m, int n) {int[][] dp new int[m][n];for (int i …

c基础面试题

1.static和const的作用 static意为静态的,在C语言中可以修饰变量。如果是全局变量则只能在当前文件范围访问。 如果是函数内的局部变量则延长生命周期到整个程序。这意味着如果函数被多次调用,这个变量不会被重新初始化,而是保留上次调用结…

【C语言】函数栈帧的创建和销毁

文章目录 前言函数栈帧相关寄存器相关汇编指令内存函数栈帧的创建销毁过程 前言 为了更好的了解函数里面变量是如何创建,为什么创建的变量是随机值和函数怎么传参和顺序是怎样的、以及实参和形参的关系,还要函数之间的调用、返回和销毁的过程。我们今天…

Linux中环境变量

基本概念 环境变量Environmental variables一般是指在操作系统中用来指定操作系统运行环境一些参数。 我们在编写C、C代码时候,在链接的时候从来不知道我们所链接的动态、静态库在哪里。但是还是照样可以链接成功。生成可执行程序。原因就是相关环境变量帮助编译器…

ARM Assembly 6: Shift 和 Rotate

基础概念 LSL(Logical Shift Left) 功能: 将寄存器中的位向左移动,右边用零填充。左移相当于对二进制数进行乘以2的幂的操作。 语法: LSL{S} Rd, Rn, #shamt Rd: 结果存储的目标寄存器。 Rn: 要进行位移的源寄存器。 #shamt: 位移的位数&…

电子信息类专业技术学习及比赛路线总结(大一到大三)

本文主要是总结到目前为止电子信息类的专业技能、比赛路线,以后会持续更新,希望能为那些热爱电子技术或渴望学习课本之外知识的小伙伴们提供帮助,参加学科竞赛和找工作必备。(毕竟很多课本上的内容都没什么用 ) 1.单片…

初识算法 · 滑动窗口(1)

目录 前言: 长度最小的子数组 题目解析 算法原理 算法编写 无重复长度的最小字符串 题目解析 算法原理 算法编写 前言: 本文开始,介绍的是滑动窗口算法类型的题目,滑动窗口本质上其实也是双指针,但是呢&#…

HTB:Preignition[WriteUP]

连接至HTB服务器并启动靶机 靶机IP:10.129.157.49 分配IP:10.10.16.12 1.Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (…

基于VirtualBox和Ubuntu的虚拟环境搭建

VirtualBox简介 VirtualBox 是一款开源虚拟机软件。 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。简单易用,可虚拟的系统包括Windows&…

【网路通信基础与实践番外二】TCP协议的流量控制和拥塞控制以及二者区别和例题

TCP协议是端对端的协议,因此在数据进行传输的过程受发送方,数据通道,接收方三方状态的影响。我们用水龙头来比喻数据发送方,水管来比喻数据通道,水桶来表示数据接收方。 图(a)表示水桶太小,来不及接受注入…

大数据分析的具体步骤

大数据分析的具体步骤 大数据 java python hadoop 1. 明确分析目的和思路: - 确定分析目标:思考为什么要开展数据分析,要解决什么问题。比如,企业想要分析用户购买行为,以便优化产品推荐策略;政府部门…

超好用的element的el-pagination分页组件二次封装-附源码及讲解

前言:在很多后台管理系统开发时总会有很多分页组件的使用,如果我们每次都用elementui官网的el-pagination去写的话,调整所有分页的样式就会很麻烦,而且页面内容也会很累赘繁琐。 讲解一个我经常使用的二次封装el-pagination组件&…

数据库简单介绍

数据库是现代信息技术中用于存储、管理和检索数据的重要工具。数据库技术的发展经历了多个阶段,从早期的层次模型和网状模型,到关系型数据库的兴起,再到NoSQL和NewSQL的多样化发展。数据库系统已经成为现代信息系统的核心和基础设施。 数据库…

cat用来查看文件内容、合并文件,或者将文件内容输出到终端

cat 是 Unix 和 Linux 系统中的一个命令,它的名称来源于 “concatenate”(连接),主要用来查看文件内容、合并文件,或者将文件内容输出到终端。 常用用法 查看文件内容 cat filename输出 filename 的内容到终端中。 例…

归并排序:递归、非递归实现、文件排序(归并排序实现)

目录 归并排序递归实现 1.归并排序基本思想 2.归并排序单趟思路 3.代码思路步骤 3.1.归并排序实现思路步骤 3.2.总结 3.2.1.数组归并与链表归并的差异 (1)数组归并 (2)链表归并 (3)总结 3.2.2.归并排序的递归实现总结 4.归并排序递归实现代码 5.归并排序递归递归展…

OpenCV视频I/O(15)视频写入类VideoWriter之标识视频编解码器函数fourcc()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将 4 个字符拼接成一个 FourCC 代码。 在 OpenCV 中,fourcc() 函数用于生成 FourCC 代码,这是一种用于标识视频编解码器的…

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制,个性飞扬二、多元风格,创意无限 百度文心智能体平台为你开启。百度文心智能体平台,创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台,集成了先进的自然语言处理技术和人工智能技术&…