加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 综合聚焦 > Linux > 正文

Linux主要性能指标说明

发布时间:2023-02-20 10:11:42 所属栏目:Linux 来源:互联网
导读:一台 Linux 服务器的四类指标如下: cpu:使用率、平均负载(load average) RAM:used | free | buffer/cache | avaliable disk:空闲容量大

  一台 Linux 服务器的四类指标如下:
 
  cpu:使用率、平均负载(load average)
  RAM:used | free | buffer/cache | avaliable
  disk:空闲容量大小、IO 状态
  Network:网速、延迟、丢包率等
  1)cpu指标
 
  1. cpu 使用率
 
  cpu 使用率即 cpu 运行在非空闲状态的时间占比,它反应了 cpu 的繁忙程度。使用 top 命令我们可以得到如下信息:
 
  %cpu(s):  0.0 us,2.3 sy,0.0 ni,97.7 id,0.0 wa,0.0 hi,0.0 si,0.0 st
  us(user):表示 cpu 在用户态运行的时间百分比,通常用户态 cpu 高表示有应用程序比较繁忙。典型的用户态程序包括:数据库、Web 服务器等。
  sy(sys):表示 cpu 在内核态运行的时间百分比(不包括中断),通常内核态 cpu 越低越好,否则表示系统存在某些瓶颈。
  ni(nice):表示用 nice 修正进程优先级的用户态进程执行的 cpu 时间。nice 是一个进程优先级的修正值,如果进程通过它修改了优先级,则会单独统计 cpu 开销。
  id(idle):表示 cpu 处于空闲态的时间占比,此时,cpu 会执行一个特定的虚拟进程,名为 System Idle Process。
  wa(iowait):表示 cpu 在等待 I/O 操作完成的时间占比,通常该指标越低越好,否则表示 I/O 可能存在瓶颈,需要用 iostat 等命令做进一步分析。
  iowait 只考虑 Synchronous File IO,It does NOT count time spent waiting for IPC objects such as sockets,pipes,ttys,select(),poll(),sleep(),pause() etc.
  hi(hardirq):表示 cpu 处理硬中断所花费的时间。硬中断是由外设硬件(如键盘控制器、硬件传感器等)发出的,需要有中断控制器参与,特点是快速执行。
  si(softirq):表示 cpu 处理软中断所花费的时间。软中断是由软件程序(如网络收发、定时调度等)发出的中断信号,特点是延迟执行。
  st(steal):表示 cpu 被其他虚拟机占用的时间,仅出现在多虚拟机场景。如果该指标过高,可以检查下宿主机或其他虚拟机是否异常。
  2. 平均负载(Load Average)
 
  top命令的第一行输出如下:
 
  top - 21:11:00 up 8 min,0 users,load average: 0.52,0.58,0.59
  其中带有三个平均负载的值,它们的意思分别是** 1 分钟(load1)、5 分钟(load5)、15 分钟(load15)内系统的平均负载**。
 
  平均负载(Load Average)是指单位时间内,系统处于 可运行状态(Running / Runnable) 和 不可中断态 的平均进程数,也就是 平均活跃进程数。
 
  我们知道实际上一个 cpu 核只能跑一个进程,操作系统通过分时调度提供了多进程并行的假象。所以当平均负载(平均活跃进程数)不大于 cpu 逻辑核数时,系统可以正常运转。
  如果平均负载超过了核数,那就说明有一部分进程正在活跃中,但是它却没有使用到 cpu(同一时间只能有 1 个进程在使用 cpu),这只可能有两个原因:
 
  这部分进程在排队等待 cpu 空闲。
  这部分 cpu 在进行 IO 操作。
  不论是何种状况,都说明系统的负载过高了,需要考虑降负或者升级硬件。
 
  理想状态下,系统满负荷工作,此时平均负载 = cpu 逻辑核数(4核8线程 cpu 有8个逻辑核)。但是,在实际生产系统中,不建议系统满负荷运行。通用的经验法则是:平均负载 <= 0.7 * cpu 逻辑核数。
 
  当平均负载持续大于 0.7 * cpu 逻辑核数,就需要开始调查原因,防止系统恶化;
  当平均负载持续大于 1.0 * cpu 逻辑核数,必须寻找解决办法,降低平均负载;
  当平均负载持续大于 5.0 * cpu 逻辑核数,表明系统已出现严重问题,长时间未响应,或者接近死机。
  除了关注平均负载值本身,我们也应关注平均负载的变化趋势,这包含两层含义。一是 load1、load5、load15 之间的变化趋势;二是历史的变化趋势。
 
  当 load1、load5、load15 三个值非常接近,表明短期内系统负载比较平稳。此时,应该将其与昨天或上周同时段的历史负载进行比对,观察是否有显著上升。
  当 load1 远小于 load5 或 load15 时,表明系统最近 1 分钟的负载在降低,而过去 5 分钟或 15 分钟的平均负载却很高。
  当 load1 远大于 load5 或 load15 时,表明系统负载在急剧升高,如果不是临时性抖动,而是持续升高,特别是当 load5 都已超过 0.7 * cpu 逻辑核数 时,应调查原因,降低系统负载。
  日常运维时,应该重点关注上述三个负载值之间的关系。
 
  3. cpu 使用率与平均负载的关系
 
  cpu 使用率是单位时间内 cpu 繁忙程度的统计。而平均负载不仅包括正在使用 cpu 的进程,还包括等待 cpu 或 I/O 的进程(前面讲过平均负载过高的两种情况)。
 
  因此 cpu 使用率是包含在平均负载内的。这两个参数有两种组合需要注意:
 
  两个参数值都很高:需要降低 cpu 使用率!
  cpu 使用率很低,可平均负载却超过了cpu逻辑核数:IO 有瓶颈了!需要排查 内存/磁盘/网络 的问题。
  最常遇到的场景:内存用尽导致负载飙升。
  2)RAM内存指标
 
  free # 单位 kb
  free -m  # 单位 mb
  free -g  # 单位 gb
  不考虑 Swap 时,建议以 Avaliable 值为可用内存的参考,因为 buffer/cache 中的内存不一定能完全释放出来!因为:
 
  OS 本身需要占用一定 buffer/cache
  通过 tmpfs 等方式被使用的 cache 不能被回收使用
  通过 cgroups 设置的资源预留无法被别的进程回收利用。(容器资源预留)
  内存泄漏
 
  内存泄漏有多种可能,通过监控能确定的只有内存是否在无上限地上升。很难直接通过监控排查。
 
  3)disk 磁盘指标
 
  disk 的性能指标主要有:
 
  bandwidth 带宽,即每秒的 IO 吞吐量
  连续读写频繁的应用(传输大量连续的数据)重点关注吞吐量,如读写视频的应用。
  IOPS,每秒的 IO 次数
  随机读写频繁的应用需要关注 IOPS,如大量小文件(图片等)的读写。
  我们是 Web 服务器/数据库服务器,主要是随机读写,更关注 IOPS。
 
  1. IO 基准测试
 
  要监控磁盘的指标,首先得有个基准值做参考。
 
  方法一:对整块磁盘进行测试
 
  首先安装磁盘测试工具 fio(安装命令见文章开始),然后将如下内容保存为fio-rand-rw.fio(Web 服务器/数据库更关注随机读写):
 
  ; https://github.com/axboe/fio/blob/master/examples/fio-rand-RW.fio
  ; fio-rand-RW.job for fiotest
  [global]
  name=fio-rand-RW
  filename=fio-rand-RW
  rw=randrw
  rwmixread=60
  rwmixwrite=40
  bs=4K
  direct=0
  numjobs=4
  time_based=1
  runtime=900
  [file1]
  size=4G
  ioengine=libaio
  iodepth=16
  现在运行命令fio fio-rand-rw.fio以启动测试,可根据情况调整 .fio 文件中的参数,最后记录测试结果。
 
  方法二:使用 dd 进行磁盘速度测试
 
  使用 dd 测试的好处是系统自带,而且也不会破坏磁盘内容。
 
  # 写入测试,读取 /dev/zero 这个空字符流,写入到 test.dbf 中(就是只测写入)
  # 块大小为 8k,也就是说偏向随机写
  dd if=/dev/zero of=test.dbf bs=8k count=50000  oflag=dsync  # 每次写完一个 block 都同步,伤硬盘,不要没事就测
  # 读取 /dev/sda1 中的数据,写入到 /dev/null 这个黑洞中(只测读取)
  # 块大小还是 8k,即偏向随机读
  dd if=/dev/sda1 of=/dev/null bs=8k
  日常监控的数值远低于上面测得的基准值的情况下,基本就可以确定磁盘没有问题。
 
  2. 使用率
 
  通过df -h查看磁盘的使用情况。
 
  磁盘不足会导致各种问题,比如:
 
  ElasticSearch 自动将索引设为只读,禁止写入。
  k8s 报告 "disk Pressure",导致节点无法调度。
  shell 的 tab 补全无法使用,会报错。
  3. IO 带宽(吞吐量)以及 IOPS
 
  使用 iostat 查看磁盘 io 的状态(需要安装 sysstat):
 
  # 每个磁盘一列,给出所有磁盘的当前状态
  iostat -d -k 3  # 以 kb 为单位,3 秒刷新一次
  iostat -d -m 3  # 以 mb 为单位,其他不变
  # 每个进程一列,可用于排查各进程的磁盘使用状态
  iotop
  将监控值与前述测试得到的基准值进行对比,低很多的话,基本就可以确认磁盘没问题。
 
  4)Network网络指标

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读