首页 > 系统相关 >linux性能优化实践1

linux性能优化实践1

时间:2024-09-28 11:00:54浏览次数:6  
标签:负载 平均 性能 系统 实践 linux 进程 优化 CPU

理解应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体系统性能的全局观。
你不需要了解每个组件的所有实现细节,只要能理解它们最基本的工作原理和协作方式。

性能指标:
应用负载的视角:高并发、响应快,影响产品终端用户体验
系统资源的视角:资源使用率、饱和度

性能问题的本质:系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。
性能分析:找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多的请求。这包含了一系列的步骤,比如下面这六个步骤。
选择指标评估应用程序和系统的性能;
为应用程序和系统设置性能目标;
进行性能基准测试;
性能分析定位瓶颈;
优化系统和应用程序;
性能监控和告警。

stat、iotop、blktrace等工具分析磁盘I/O的瓶颈。

工具只是解决问题的手段,关键在于你的用法。只有真正理解了它们背后的原理,并且结合具体场景,融会贯通系统的不同组件,你才能真正掌握它们。

系统平均负载,执行top或uptime命令。
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系。

所谓可运行状态的进程,是指正在使用CPU或者正在等待CPU的进程,也就是我们常用ps命令看到的,处于R状态(Running 或 Runnable)的进程。

不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的I/O响应,也就是我们在ps命令中看到的D状态(Uninterruptible Sleep,也称为Disk Sleep)的进程。

比如,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。

所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制

因此,你可以简单理解为,平均负载其实就是平均活跃进程数。平均活跃进程数,直观上的理解就是单位时间内的活跃进程数,但它实际上是活跃进程数的指数衰减平均值。这个“指数衰减平均”的详细含义你不用计较,这只是系统的一种更快速的计算方式,你把它直接当成活跃进程数的平均值也没问题。

既然平均的是活跃进程数,那么最理想的,就是每个CPU上都刚好运行着一个进程,这样每个CPU都得到了充分利用。比如当平均负载为2时,意味着什么呢?
在只有2个CPU的系统上,意味着所有的CPU都刚好被完全占用。
在4个CPU的系统上,意味着CPU有50%的空闲。
而在只有1个CPU的系统中,则意味着有一半的进程竞争不到CPU。

平均负载最理想的情况是等于 CPU个数
CPU个数查询执行命令grep 'model name' /proc/cpuinfo | wc -l
有了CPU 个数,我们就可以判断出,当平均负载比 CPU 个数还大的时候,系统已经出现了过载。

三个不同时间间隔的平均值,其实给我们提供了,分析系统负载趋势的数据来源,让我们能更全面、更立体地理解目前的负载状况。

如果1分钟、5分钟、15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
但如果1分钟的值远小于15 分钟的值,就说明系统最近1分钟的负载在减少,而过去15分钟内却有很大的负载。
反过来,如果1分钟的值远大于 15 分钟的值,就说明最近1分钟的负载在增加,这种增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。一旦1分钟的平均负载接近或超过了CPU的个数,就意味着系统正在发生过载的问题,这时就得分析调查是哪里导致的问题,并要想办法优化了。

在我看来,当平均负载高于 CPU 数量70%的时候,你就应该分析排查负载高的问题了。一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能。
但70%这个数字并不是绝对的,最推荐的方法,还是把系统的平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势。当发现负载有明显升高趋势时,比如说负载翻倍了,你再去做分析和调查。

我们还是要回到平均负载的含义上来,平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。

而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。比如:
CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
大量等待 CPU 的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。

预先安装 stress 和 sysstat 包,如 apt install stress sysstat。
stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到这个包的两个命令 mpstat 和 pidstat。
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有CPU的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。





平均负载提供了一个快速查看系统整体性能的手段,反映了整体的负载情况。但只看平均负载本身,我们并不能直接发现,到底是哪里出现了瓶颈。所以,在理解平均负载时,也要注意:
平均负载高有可能是 CPU 密集型进程导致的;
平均负载高并不一定代表 CPU 使用率高,还有可能是 I/O 更繁忙了;
当发现负载高的时候,你可以使用 mpstat、pidstat 等工具,辅助分析负载的来源。

标签:负载,平均,性能,系统,实践,linux,进程,优化,CPU
From: https://www.cnblogs.com/seamy/p/18437138

相关文章

  • [正点原子-I.MX6ULL]嵌入式 Linux 通过 nfs 下载出现 T T T T
    [正点原子-I.MX6ULL]嵌入式Linux通过nfs下载出现TTTT问题叙述但是有几个地方要注意1.安装驱动应该是2.修改GRUB_DEFAULT时,后面的引号是英文字符,直接复制过去会有语法报错3.最后就是重启linux时,如果你是在vmware上运行的,记得按shift进入boot界面问题叙述其实......
  • 结构型设计模式详解与对比:优化你的系统设计
    结构型设计模式(StructuralDesignPatterns)主要关注类和对象的组合,以形成更大的结构。它们通过识别实体之间的关系,帮助设计师确保系统的各个部分能够协同工作。以下是几种常见的结构型设计模式及其详细介绍和对比:一,代理模式(ProxyPattern)用途:为另一个对象提供一个替身......
  • 在Linux上安装Cliosoft SOS的具体步骤是什么?
    在Linux上安装ClioSoftSOS的具体步骤如下。这些步骤包括了从下载软件包到完成安装的全过程,确保您能够顺利地在Linux系统上安装和配置SOS。1.准备工作检查系统要求:确保您的Linux系统满足SOS的硬件和软件要求。创建安装目录:建议使用一个专用目录来存放SOS的安装文件。例如:......
  • Linux 进程控制
    目录1.fork函数2.getpid/getppid函数3.父进程与子进程创建子进程:PID和PPID:资源继承:独立性:执行流程:退出和终止:僵尸进程:孤儿进程:进程组和会话:fork()的用途:4.父进程与子进程的应用场景:1.fork函数    一个进程,包括代码,数据和分配给进程的资源。    ......
  • Linux:环境变量
    一、环境变量1.1PATH的引入问题1:为什么我们平时输入的指令可以直接运行,但是自己编译出来的程序却要加./?——>因为指令所需要的相关程序是存储在系统能够查找得到的底下,而我们自己编译出来的程序是在当前的工作目录的,系统并不能直接找到。问题2:凭什么系统可以找到指令的......
  • 代码生成器实践总结
    最近,又用我的脚本管理,写了一个代码生成器。用在一个.netcoreWeb MVC项目中,想要把原来的一些Area,拷贝替换表名。业务上来说是:把推广模块,单独复制出一个推广-外部渠道的模块。专门给公司外部的推广人员用,但是不影响原来的功能。本质结构代码生成器= 模板+ 替换结论先......
  • 要优化和配置Windows蓝牙设备的注册表设置,可以创建一个.reg文件,帮助修改相关的注册表
    要优化和配置Windows蓝牙设备的注册表设置,可以创建一个.reg文件,帮助修改相关的注册表项。以下是详细说明及示例代码。1.创建 .reg 文件您可以使用文本编辑器(如记事本)来创建一个.reg文件。下面是一些常见的蓝牙相关注册表路径和设置。2.常用蓝牙注册表路径蓝牙服务设置:......
  • 开普勒优化算法:一种开普勒行星运动定律的元启发式算法
    目录1.摘要2.算法原理3.结果展示4.参考文献5.代码获取1.摘要这项研究介绍了开普勒优化算法(KOA),这是一种基于物理的新元启发式算法,灵感来源于开普勒行星运动定律。KOA通过模拟行星的位置和速度来寻找优化问题的解决方案,其中每个行星代表一个候选解,这些候选解会根据......
  • 一个示例 .reg 文件,用于优化和调优 Realtek High Definition Audio 声卡的设置。请根
    一个示例.reg文件,用于优化和调优RealtekHighDefinitionAudio声卡的设置。请根据需要进行调整。创建 .reg 文件打开记事本。复制以下内容:CopyCodeWindowsRegistryEditorVersion5.00;优化RealtekHighDefinitionAudio设置[HKEY_LOCAL_MACHINE\SOFTW......
  • 【网站架构部署与优化】Tomcat优化、Tomcat多实例部署
    文章目录Tomcat优化Tomcat配置文件参数优化示例配置TomcatJVM参数配置参数解释注意总结Tomcat配置文件参数优化(`server.xml`)1.线程池参数2.网络连接参数3.性能优化参数Java虚拟机(JVM)调优1.堆内存设置2.新生代和老年代设置3.垃圾收集器设置4.其他性能优......