Linux 品质解析的前 60 秒

为理解决质量难题,你登录了一台 Linux
服务器,在最早叶的一秒钟内要求查阅什么?

在 Netflix 我们有四个大幅度的 EC2 Linux
集群,还或然有相当多的质量深入分析工具来监督和应用斟酌它的性质。此中包含用于云监控的Atlas,用于实例按需剖析的 Vector。即便这么些工具扶持大家缓和了超越十分之五难点,大家有时候依然得登陆Linux 实例,运营一些正经的 Linux 质量工具来消除难题。

图片 1

在这里篇小说里,Netflix Performance Engineering 团队将使用居家常备的 Linux
规范命令行工具,演示在质量考查最初步的60秒里要干的事。

60,000 微秒内对 Linux 的质量确诊

图片 2

当你为了消除壹本性叱责题登入到一台 Linux
服务器:在第一分钟你应该检查些什么?

最起始的60秒……

运维下边12个指令,你能够在60秒内就对系统财富的选拔景况和进度的运营景况有轮廓上的垂询。无非是先查看错误音讯和饱满目标,再看下能源的使用量。这里“饱和”的情致是,某项能源不足,已经引致了央浼队列的聚成堆,或许延长了等候时间。

uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top

有一点命令须求你安装 sysstat 包。(译注:指 mpstat, pidstat,
iostat和sar,用包管理器直接设置 sysstat 就可以)
这个命令所提供的指标能够扶植您实施 USE 方法:那是一种用于固定品质瓶颈的方法论。你能够以此检查有着能源(CPU,内部存款和储蓄器,硬盘,等等)的使用量是或不是饱满,以至是不是留存不当。同不时候请小心上一遍检查平常的每13日,那将援救您减掉待深入分析的对象,并指明考查的取向。(译注:USE
方法,正是反省每一项能源的使用量(utilization)、饱和(saturation)、错误(error))

接下去的章节里我们将结合实际例子讲授那些命令。假令你想询问更加多的有关音讯,请查看它们的
man page。

在 Netflix,大家有二个庞大的 EC2 Linux
云,以致大气的质量剖析工具来监督和确诊其特性。当中囊括用于云监察和控制的
Atlas,甚至用于按需实例解析的
Vector。尽管那么些工具得以帮忙咱们缓和超过一半主题材料,但大家不时仍供给登录到二个服务器实例,并运营一些规范Linux 质量工具。

1. uptime

$ uptime
 23:51:26 up 21:31,  1 user,  load average: 30.02, 26.43, 19.02

其一命令展现了要运转的天职(进度)数,通过它能够十分的快领悟系统的平均负载。在
Linux 上,那几个数值既满含正在或策画运维在 CPU
上的进程,也囊括拥塞在不可中断 I/O(平常是磁盘
I/O)上的历程。它显得了能源负载(或必要)的光景情状,可是更为的解读还恐怕有待其余工具的助手。对它的实际数值不用太较真。

最右的多少个数值分别是1分钟、5分钟、15分钟系统负荷的移位平均值。它们一同表现了负荷随即间转移的情状。举个例子,即让你被需求去检查三个出了难题的服务器,而它近些日子1分钟的载荷远远低于15分钟的载荷,那么您很恐怕早已扑了个空。

在下边包车型大巴例子中,负载均值近期呈上涨势态,当中1分钟值高达30,而15分钟值只有19。这种光景有成都百货上千种解释,很有非常的大可能是对
CPU
的争用;该种类的第1个和第3个指令——vmstat和mpstat——能够支持大家特别规定难题所在。

在此篇随笔中,Netflix Performance Engineering
团队将会向您讲明在命令行中实行三次至上的习性解析的前 60
秒要做的事,使用的是你应有能够得到的正规 Linux 工具。

2. dmesg | tail

$ dmesg | tail
[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB
[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters.

本条命令突显了新型的十叁个系统消息,要是部分话。注意会招致质量难题的错误音信。上边包车型的士例子里就富含对过多占用内部存款和储蓄器的某经过的死缓裁断,还大概有丢掉TCP 央浼的文告。

不要漏了这一步!检查dmesg总是值得的。

前五十秒:总览

3. vmstat 1

$ vmstat 1
procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0
32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0
32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0
32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0
32  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0
^C

vmstat(8卡塔尔国,是 “virtual memory stat” 的简单的称呼,二十几年前就曾经席卷在 BSD
套件之中,长期以来都是居家常备的工具。它会逐行输出服务注重要数据的总括结果。

透过点名1当做 vmstat
的输入参数,它会输出每一秒内的总括结果。(在大家当下接受的)vmstat
输出的首先行数据是从运营到现行反革命的平平均数量据,并非后一秒的数据。所以大家得以跳过第一行,看看前边几行的情景。

检查上边各列:

r:等待 CPU 的历程数。该目的能越来越好地看清 CPU 是或不是饱满,因为它不包蕴I/O。不难地说,r 值高于 CPU 数时就象征饱和。

free:空闲的内存千字节数。要是你不胜枚举有个别许位,就证实系统内部存款和储蓄器是丰满的。接下来要讲到的第7个指令,free
-m,能够更明白地注解空闲内部存款和储蓄器的气象。

siso:沟通分区换入和换出。借使它们不为零,意味着内存已经供应无法满足须要,伊始运用交流空间的储存粮食了。

ussyidwast:它们是持有 CPU
的使用比例。它们分别表示顾客态用时(user time),系统态用时(system
time)(处于内核态的岁月),空闲(idle),I/O 等待(wait
I/O)和偷去的时辰(steal time)(被另外租户,大概是租户本身的
Xen隔开设施驱动域(isolated driver domain)所占领的时刻)。

透过相加 us 和 sy 的比重,你能够鲜明 CPU
是不是处于劳顿景观。贰个一再不改变的 I/O
等待意味着瓶颈在硬盘上,这种气象屡次伴随着 CPU
的闲暇,因为职责都卡在磁盘 I/O 上了。你能够把 I/O 等待充当 CPU
空闲的另一种方式,它额外给出了 CPU 空闲的端倪。

I/O
处理同样会损耗系统时间。二个压倒十分之四的平均系统时间,往往值得进一层发掘:只怕系统花在
I/O 的岁月太长了。

在上边的事例中,CPU
基本把日子花在客户态里面,意味着跑在上头的接纳占用了绝大相当多时辰。别的,CPU
平均使用率在十分之九以上。这不一定是个难题;检查下“r”列,看看是不是饱满了。

通过运维上面十二个指令,你就能够在三十秒内粗略地驾驭系统正在运作的经过及财富利用景况。通过翻看那些命令输出的错误新闻和财富饱和度(它们都比较轻巧看懂),你能够接下去对能源开展优化。饱和是指有些能源的载荷超过了其能够管理的界限。一旦现身饱和,它常常会在倡议队列的尺寸或等候时间上暴流露来。

4. mpstat -P ALL 1

$ mpstat -P ALL 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)

07:38:49 PM  CPU   %usr  %nice   %sys %iowait   %irq  %soft  %steal  %guest  %gnice  %idle
07:38:50 PM  all  98.47   0.00   0.75    0.00   0.00   0.00    0.00    0.00    0.00   0.78
07:38:50 PM    0  96.04   0.00   2.97    0.00   0.00   0.00    0.00    0.00    0.00   0.99
07:38:50 PM    1  97.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   2.00
07:38:50 PM    2  98.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   1.00
07:38:50 PM    3  96.97   0.00   0.00    0.00   0.00   0.00    0.00    0.00    0.00   3.03
[...]

其一命令显示每一种 CPU 的年华使用比例,你能够用它来检查 CPU
是或不是存在负载不均匀。单个过于繁忙的 CPU
可能意味着整个应用唯有单个线程在劳作。

  • uptime
  • dmesg | tail
  • vmstat 1
  • mpstat -P ALL 1
  • pidstat 1
  • iostat -xz 1
  • free -m
  • sar -n DEV 1
  • sar -n TCP,ETCP 1
  • top

5. pidstat 1

$ pidstat 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)

07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0
07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave
07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java
07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java
07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java
07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat

07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave
07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java
07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java
07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass
07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat
^C

pidstat看上去有如top,可是top的输出会覆盖掉以前的出口,而pidstat的输出则增多在早先的输出的末尾。那有助于观看数据随即间的退换情况,也低价把你看来的剧情复制粘贴到考查报告中。

地点的事例申明,CPU 重要消耗在两个 java 进程上。%CPU列是在一一 CPU
上的使用量的总和;1591%代表 java 进程消耗了临近16个 CPU。

里面一些命令必要事情发生前安装 sysstat
软件包。那个命令显示出来的音信能够帮你实行 USE
方法(一种用于固定质量瓶颈的办法),比如检查各个能源(如
CPU、内部存储器、磁盘等)的使用率、饱和度和错误消息。别的在定位难点的进度中,你能够透过选择那么些命令来肃清某个导致难点的恐怕,扶植您收缩检查范围,为下一步检查指明方向。

6. iostat -xz 1

$ iostat -xz 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          73.96    0.00    3.73    0.03    0.06   22.21

Device:   rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda        0.00     0.23    0.21    0.18     4.52     2.08    34.37     0.00    9.98   13.80    5.42   2.44   0.09
xvdb        0.01     0.00    1.02    8.94   127.97   598.53   145.79     0.00    0.43    1.78    0.28   0.25   0.25
xvdc        0.01     0.00    1.02    8.86   127.79   595.94   146.50     0.00    0.45    1.82    0.30   0.27   0.26
dm-0        0.00     0.00    0.69    2.32    10.47    31.69    28.01     0.01    3.23    0.71    3.98   0.13   0.04
dm-1        0.00     0.00    0.00    0.94     0.01     3.78     8.00     0.33  345.84    0.04  346.81   0.01   0.00
dm-2        0.00     0.00    0.09    0.07     1.35     0.36    22.50     0.00    2.55    0.23    5.62   1.78   0.03
[...]
^C

本条命令能够弄清块设备(磁盘)的现象,包含专业负荷和管理品质。注意以下种种:

r/sw/srkB/swkB/s:分别代表每秒设备读次数,写次数,读的
KB 数,写的 KB
数。它们描述了磁盘的干活负荷。可能质量难点正是由过高的负载所产生的。

await:I/O 平均时间,以纳秒作单位。它是选取中 I/O
管理所实际消耗的年月,因为内部既包蕴排队用时也富含管理用时。若是它比预料的大,就象征设备饱和了,或许配备出了难题。

avgqu-sz:分配给道具的平分恳求数。大于1意味着设备已经饱和了。(但是有一点设备能够并行管理伏乞,举个例子由八个磁盘组成的伪造设备)

%util:设备使用率。那些值显示了道具每秒内行事时间的百分比,经常都远在高位。低于三分之一索然无味是低质量的变现(也得以从
await 中看见),可是那么些得看设备的等级次序。临近百分之百平常意味着饱和。

借使有个别存款和储蓄设备是由三个大意磁盘组成的逻辑磁盘设备,百分百的使用率大概只是表示
I/O 占用。

请铭记不要忘,磁盘 I/O 品质低不自然是个难点。应用的 I/O
往往是异步的(比如预读(read-ahead)和写缓冲(buffering for
writes)),所以不必然会被卡住并直面延迟。

上面包车型地铁章节将以在三个分娩条件上施行那么些命令作为例子,简介这几个命令。若想详解那几个工具的选拔形式,请参见它们的
man 文书档案。

7. free -m

$ free -m
             total       used       free     shared    buffers     cached
Mem:        245998      24545     221453         83         59        541
-/+ buffers/cache:      23944     222053
Swap:            0          0          0

左侧的两列显示:

buffers:用于块设备 I/O 的缓冲区缓存

cached:用于文件系统的页缓存

它们的值接近于0时,往往产生较高的磁盘 I/O(能够通过 iostat
确认)和不好的质量。上边的例子里不曾这么些标题,每一列都有点 M 呢。

比起率先行,-/+ buffers/cache提供的内部存款和储蓄器使用量会越来越标准些。Linux
会把最近用不上的内部存款和储蓄器用作缓存,一旦采取须要的时候马上重新分配给它。所以有的被视作缓存的内部存款和储蓄器其实也好不轻便空闲内部存款和储蓄器,第二行以此修定了实在的内部存款和储蓄器使用量。为了表明那或多或少,
以至有人特意建了个网址: LinuxAteMyRam.com。

倘诺你在 Linux 上安装了
ZFS,正如我们在局地劳动上所做的,这点会变得极其吸引,因为 ZFS
它本身的文件系统缓存不算入free
-m。一时系统看上去已经未有微微空闲内部存款和储蓄器可用了,其实内部存款和储蓄器都待在 ZFS
的缓存里吧。

1. uptime

8. sar -n DEV 1

$ sar -n DEV 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015     _x86_64_    (32 CPU)

12:16:48 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
12:16:49 AM      eth0  18763.00   5032.00  20686.42    478.30      0.00      0.00      0.00      0.00
12:16:49 AM        lo     14.00     14.00      1.36      1.36      0.00      0.00      0.00      0.00
12:16:49 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

12:16:49 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
12:16:50 AM      eth0  19763.00   5101.00  21999.10    482.56      0.00      0.00      0.00      0.00
12:16:50 AM        lo     20.00     20.00      3.25      3.25      0.00      0.00      0.00      0.00
12:16:50 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
^C

以此命令能够用来检查网络流量的做事负荷:rxkB/s 和
txkB/s,以致它是或不是达到限额了。上面的事例中,eth0采取的流量高达
22Mbytes/s,也即 176Mbits/sec(限额是 1Gbit/sec)

作者们用的版本中还提供了%ifutil作为道具使用率(选用和发送两个中的最大值)的目的。大家也得以用
布伦达n
的 nicstat总计这么些值。一如nicstat,sar显示的这几个值不必然是没错,在此个事例里面就未能平常办事(0.00)。

$ uptime   23:51:26 up 21:31,  1 user,  load average: 30.02, 26.43, 19.02 

9. sar -n TCP,ETCP 1

$ sar -n TCP,ETCP 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)

12:17:19 AM  active/s passive/s    iseg/s    oseg/s
12:17:20 AM      1.00      0.00  10233.00  18846.00

12:17:19 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
12:17:20 AM      0.00      0.00      0.00      0.00      0.00

12:17:20 AM  active/s passive/s    iseg/s    oseg/s
12:17:21 AM      1.00      0.00   8359.00   6039.00

12:17:20 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
12:17:21 AM      0.00      0.00      0.00      0.00      0.00
^C

其一命令突显一些最首要TCP指标的汇总。在那之中包含:

active/s:本地每秒创建的 TCP 连接数(比方 concept(State of Qatar 成立的)

passive/s:远程每秒创造的 TCP 连接数(举个例子 accept(卡塔尔(قطر‎ 创制的)

retrans/s:每秒 TCP 重传次数

义不容辞连接数(active)和消沉连接数(passive)平常能够用来粗略地描述系统负荷。能够感觉主动连接是对外的,而消沉连接是对内的,即便严酷来讲不完全都以其相近子。(比方,一个从
localhost 到 localhost 的一而再再而三)

重传是互连网或种类难点的贰个频域信号;它大概是不可靠的互连网(例如公网)所招致的,也可能有望是服务器已经过载并发轫丢包。在上头的例子中,每秒只开创二个新的
TCP 连接。

那是一种用来超快查看系统平均负载的办法,它标识了系统中有微微要运转的天职(进程)。在
Linux 系统中,那一个数字带有了亟需在 CPU 中运作的过程以致正在等待
I/O(平常是磁盘
I/O)的经过。它独自是对系统负载的三个简易呈现,微微看下就可以。你还必要别的工具来更为了然具体情状。

10. top

$ top
top - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92
Tasks: 871 total,   1 running, 868 sleeping,   0 stopped,   2 zombie
%Cpu(s): 96.8 us,  0.4 sy,  0.0 ni,  2.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffers
KiB Swap:        0 total,        0 used,        0 free.   554208 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 20248 root      20   0  0.227t 0.012t  18748 S  3090  5.2  29812:58 java
  4213 root      20   0 2722544  64640  44232 S  23.5  0.0 233:35.37 mesos-slave
 66128 titancl+  20   0   24344   2332   1172 R   1.0  0.0   0:00.07 top
  5235 root      20   0 38.227g 547004  49996 S   0.7  0.2   2:02.74 java
  4299 root      20   0 20.015g 2.682g  16836 S   0.3  1.1  33:14.42 java
     1 root      20   0   33620   2920   1496 S   0.0  0.0   0:03.82 init
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd
     3 root      20   0       0      0      0 S   0.0  0.0   0:05.35 ksoftirqd/0
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S   0.0  0.0   0:06.94 kworker/u256:0
     8 root      20   0       0      0      0 S   0.0  0.0   2:38.05 rcu_sched

top命令包罗广大大家事情发生前检查过的指标。它符合用来查看比较于事情未发生前的通令输出的结果,负载有了如何改换。

不可能清晰展现数据随即间变动的气象,那是top的二个顽固的病魔。相较来讲,vmstat和pidstat的输出不会覆盖掉早前的结果,因而更契合查看数据随即间的更改意况。别的,如若你无法立时暂停top的出口(Ctrl-s
暂停,Ctrl-q 继续),只怕某个关键线索会埋没在新的出口中。

那多少个数显的是一分钟、五分钟和十四秒钟内系统的载重总数平均值根据指数比例减弱获得的结果。从当中大家能够看看系统的负载是怎么任何时候间变化的。举个例子你在自己批评贰个难点,然后看见1 分钟对应的值远远小于 15
分钟的值,那么大概评释那么些标题已经一了百了了,你未能及时观望到。

在这里未来…

有广大工具和方法论有利于你深入地开采问题。Brendan 在二〇一四年 Velocity
大会上的 Linux Performance Tools
tutorial 中列出超越36个指令,覆盖了考查、基准测量检验、调优、静态品质调优、解析(profile),和追踪(tracing)七个地方。

在上头这些例子中,系统负荷在随着年华净增,因为近日一分钟的负载值超过了
30,而 15 分钟的平分负载则独有 19。那样显明的出入富含了不计其数含义,举个例子CPU 负载。若要进一层确认的话,则要运营 vmstat 或 mpstat
命令,那七个指令请参见前面包车型大巴第 3 和第 4 章节。

2. dmesg | tail

$ dmesg | tail[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0  [...]  [1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child  [1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB  [2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters. 

那条命令显式了近期的 10
条系统音信,纵然它们存在的话。查找能够形成质量难题的不当。下边包车型大巴例子满含了
oom-killer,甚至 TCP 放任三个伸手。

相对不要失去这一步!dmesg 命令恒久值得一试。

3. vmstat 1

$ vmstat 1procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----   r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0  32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0  32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0  32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0  32  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0  ^C 

vmstat(8卡塔尔 是设想内部存款和储蓄器总计的简单称谓,其是一个常用工具(二十几年前为了 BSD
所创设)。其在每行打字与印刷一条至关心珍视要的服务器的总结摘要。

vmstat 命令内定三个参数 1 运转,来打字与印刷每一秒的总计摘要。(这么些本子的
vmstat)输出的率先行的那些列,显式的是开机以来的平均值,并不是上一秒的值。未来,大家跳过第一行,除非你想要驾驭并切记每一列。

反省这个列:

r:CPU
中正在运营和等候运行的历程的多少。其提供了叁个比平均负载更加好的能量信号来规定
CPU 是或不是饱满,因为其不分包 I/O。解释:“r”的值当先了 CPU
的数量就象征曾经饱和了。

free:以 kb
为单位显式的闲暇内部存款和储蓄器。假设数字位数居多,说明您有丰富的空余内存。“free
-m” 命令,是底下的第八个指令,其得以越来越好的辨证空闲内部存款和储蓄器的动静。

si, so:Swap-ins 和 swap-outs。假如它们不是零,则意味你的内部存款和储蓄器不足了。

us, sy, id, wa, st:那一个都以平均了具备 CPU 的 CPU
分解时间。它们各自是客商时间(user)、系统时间(内核)(system)、空闲(idle)、等待
I/O(wait)、以至占用时间(stolen)(被别的访客,或使用
Xen,来访的客人本人独自的驱动域)。

CPU 分解时间将会透过客户时间加系统时间明显 CPU 是不是为繁忙景色。等待 I/O
的刻钟一直不改变则评释了七个磁盘瓶颈;那就是 CPU
的搁置,因为职分都不通在等候挂起磁盘 I/O 上了。你能够把等待 I/O 当成是
CPU 闲置的另一种样式,其提交了干吗 CPU 闲置的一个端倪。

对于 I/O 管理的话,系统时间是很关键的。多个胜出 百分之四十的平分系统时间,能够值得进一层的探讨:恐怕根本在管理 I/O 实功用太低了。

在地点的例证中,CPU 时间大致完全花在了客商级,证明应用程序占用了太多 CPU
时间。而 CPU 的平分使用率也在 五分四以上。那不一定是三个难点;检查一下“r”列中的饱和度。

4. mpstat -P ALL 1

$ mpstat -P ALL 1Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)  07:38:49 PM  CPU   %usr  %nice   %sys %iowait   %irq  %soft  %steal  %guest  %gnice  %idle  07:38:50 PM  all  98.47   0.00   0.75    0.00   0.00   0.00    0.00    0.00    0.00   0.78  07:38:50 PM    0  96.04   0.00   2.97    0.00   0.00   0.00    0.00    0.00    0.00   0.99  07:38:50 PM    1  97.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   2.00  07:38:50 PM    2  98.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   1.00  07:38:50 PM    3  96.97   0.00   0.00    0.00   0.00   0.00    0.00    0.00    0.00   3.03  [...] 

以此命令打字与印刷每一种 CPU 的 CPU
分解时间,其可用以对一个不均匀的使用场境进行检查。二个独立 CPU
很费劲则代表了正在运作贰个单线程的应用程序。

5. pidstat 1

$ pidstat 1Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)  07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command  07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0  07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave  07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java  07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java  07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java  07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat    07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command  07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave  07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java  07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java  07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass  07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat  ^C 

pidstat 命令有一点点像 top
命令对每种过程的总结摘要,但循环打印八个滚动的总结摘要来代替 top
的刷屏。其可用于实时查看,同一时候也可将你所见到的东西(复制粘贴)到您的查验记录中。

发表评论

电子邮件地址不会被公开。 必填项已用*标注