度量资源使用量

  • 度量 CPU 使用量

第一个指标是 CPU 的空闲时间与工作时间之间的百分比(实际上,CPU 总是在做某些事情 — 所以,如果没有任务等待执行,就认为 CPU 是空闲的)。当空闲百分比为零时,CPU 的运行时间就达到最大。

CPU 时间的非空闲部分划分为系统时间和用户时间。系统时间 是指花费在运行内核上的时间,用户时间 是指用来执行用户所请求的工作的时间。空闲时间划分为内核由于无事可做而空闲的时间以及由于等待 I/O 而空闲的时间。

Linux 用来衡量 CPU 使用率的另一个指标是平均负载。这个指标并不与 CPU 使用率直接关联;它代表过去一分钟、5 分钟和 15 分钟内内核运行队列中基于指数加权的平均任务数量。

  • 度量内存使用量
  • 度量磁盘 I/O

用来描述磁盘的度量值有两种:空间和速度。磁盘上的空闲空间 是指磁盘上可供使用的字节数。磁盘上的 开销 包括由文件系统使用的空间或由于其他原因不可用的空间。请记住,大多数生产商用 GB 表示磁盘的大小,1 GB 是 1,000,000,000 字节;但是操作系统使用以 2 为底的指数,1 GB 是 1,073,741,824 字节;这会导致磁盘的实际空间只有标称空间的 93%。这个差距并不大,但是如果没有考虑到这一点,对磁盘空间的计算就不正确。

磁盘的第二个指标是速度,也就是磁盘返回数据的速度。

  • 度量网络 I/O

网络状态常常用每秒比特数(或千比特、兆比特、吉比特)和每秒数据包数来度量。

  • 度量防火墙和路由吞吐量
  • 映射客户机带宽使用量

度量性能

vmstat

vmstat 是一种很有帮助的工具,可以实时地显示最常用的性能指标。关于 vmstat 应该注意的最重要的一点是:它首先显示自系统启动以来的平均值,一般应该忽略这些数据。在命令行上指定重复时间(以秒为单位),就可以让 vmstat 使用当前数据重复地报告信息。# vmstat 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 3 17780 10304 18108 586076 0 0 2779 332 1 1 3 4 76 17 0 1 2 17780 10088 19796 556172 0 0 7803 3940 2257 4093 25 28 14 34 0 0 2 17780 9568 19848 577496 0 0 18060 1217 1610 910 0 3 48 49 0 0 0 17780 51696 20804 582396 0 0 9237 3490 1736 839 0 3 55 41 0

vmstat 提供了关于各种性能指标的大量信息。如果系统发生了什么问题,vmstat 是寻找问题原因的好工具。

iostat

这个命令提供每个磁盘设备的使用情况细节。可以向 iostat 传递一个表示刷新时间间隔的数值。同样,它首先输出自系统启动以来的值,因此常常忽略这些数据。 给出 iostat 的输出,时间间隔为 5 秒。

$ iostat 5 Linux 26.20-1.3002.fc6xen (bob.ertw.com) 02/08/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.85 0.13 0.35 0.75 0.01 97.90 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn hda 1.86 15.24 13351 4740568 41539964 hdd 1.85 14.69 133.51 4570088 41540256

在每个度量间隔的输出中,第一部分显示 CPU 使用情况,vmstat 也显示这些信息。但是,这里显示两位小数形式。输出的第二部分显示系统上的所有块设备(要想限制显示的设备数量,可以在命令行上传递设备的名称,比如 iostat 5 hda sda)。第一列 tps 表示在 elevator 合并请求之后的每秒传输数。没有指定传输的大小。后面 4 列以 512 字节的块为单位,分别表示每秒读的块数、每秒写的块数、读的总块数和写的总块数。如果希望看到以 KB 或 MB 为单位的值,应该分别指定 -k-m 选项。如果需要的话,可以通过指定 -p 选项显示分区级的详细数据。

mpstat

mpstat 报告关于 CPU(或多处理器机器上的所有 CPU)的详细信息。其中许多信息也可以通过某种形式的 iostatvmstat 命令获得,但是 mpstat 为所有处理器单独提供数据。清单 5 显示 mpstat 的输出,度量时间间隔为 5 秒。与 iostatvmstat 不同,不应该忽略第一行数据。

# mpstat -P 0 5 Linux 2.620-1.3002.fc6xen (bob.ertw.com) 02/09/2008 09:45:23 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 09:45:25 PM 0 77.61 21.89 0.00 0.00 0.50 0.00 0.00 0.00 155.22 09:45:27 PM 0 68.16 30.85 1.00 0.00 0.00 0.00 0.00 0.00 154.73

指定 -P 0 表示应该显示第一个 CPU(编号从 0 开始)。还可以指定 -P ALL,从而单独显示所有 CPU 的数据。mpstat 返回的字段如下:

  • %user:在用户任务上花费的时间的百分比,但是不包括 nice 任务
  • %nice:在 nice(低优先级)用户任务上花费的时间的百分比
  • %sys:在内核任务上花费的时间的百分比
  • %iowait:等待 I/O 的空闲时间的百分比
  • %irq:处理硬件中断的时间的百分比
  • %soft:处理软件中断的时间的百分比
  • %steal:系统管理程序从虚拟机偷取的时间的百分比
  • intr/s:每秒的平均中断数

pstree

在考察资源使用情况时,了解哪些进程生成了其他进程会很有帮助。了解这些情况的一种方法是使用 ps -ef 的输出并使用父进程的 id,直至找到 PID 1(init)。还可以使用 ps -efjH,这个命令会把输出排序为父-子树,并包含 CPU 时间使用数据。

pstree 实用程序以更图形化的格式显示进程树,还把相同进程的多个实例合并为一行。显示 pstree 的输出(传递 Postfix 守护进程的 PID)。


清单 6. pstree 的输出

                    
[root@sergeant ~]# pstree 7988
master─┬─anvil
├─cleanup
├─local
├─pickup
├─proxymap
├─qmgr
├─2*[smtpd]
└─2*[trivial-rewrite]

master 进程生成了其他几个进程,比如 anvilcleanuplocal。最后两行输出的格式是 N*[something],其中的 something 是进程的名称,N 是采用这个名称的子进程的数量。如果除了方括号([])之外 something 还包围在花括号({})中,N 就表示运行的线程数(ps 在一般情况下不显示线程数,除非使用 -L 选项)。

w、uptime 和 top

这些实用程序是研究系统问题时首先使用的实用程序。给出 w 命令的输出。

# w 12:14:15 up 33 days, 15:09, 2 users, load average: 0.06, 0.12, 0.09 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty2 - 17Jan08 18days 0.29s 0.04s login -- root root pts/0 bob Sat22 0.00s 0.57s 0.56s -bash

w 输出的第一行提供大量信息。第一部分 “12:14:15 up 33 days, 15:09” 是当前时间和运行时间(33 天 15 小时 9 分钟)。第二部分 “2 users” 是已经登录的用户数。最后一部分是平均负载,包括 1 分钟、5 分钟和 15 分钟的平均值。

平均负载是给定的时间段内运行队列中进程数的加权平均值。平均负载越高,就表示有更多的进程在争夺 CPU。平均负载并未按照 CPU 数量进行归一化,这意味着平均负载与 CPU 数量不相关。

要 想理解平均负载,就必须理解它的加权方式。平均负载每 5 秒更新一次,越陈旧的信息在计算中的作用越小。如果运行队列中的进程数从 0 提高到 1,那么下一分钟的 1 分钟平均负载并不是一条直线,而是一条曲线,这条曲线先快速上升,然后在 60 秒标志之前逐渐下降。

平均负载进行加权计算的目的是,避免度量期间实际负载的变化影响数据的稳定性;但是数值更多地反映当前状态,尤其是 1 分钟平均值。

第一行后面是已经登录的用户的列表,数据包括他们的登录时间、位置和 CPU 使用信息。第一个用户 root 是从 tty2(一个本地控制台)登录的,他已经空闲了 18 天。第二个用户也是 root,但是他是通过网络登录的,当前在 shell 中。JCPUPCPU 列表示这个用户已经使用的 CPU 时间;第一列包含过去的作业,而 PCPU 是用户当前使用的进程的 CPU 时间。

uptime 的输出与 w 输出的第一行完全相同,但是没有关于用户的信息。在实践中,w 更有帮助,因为它提供关于用户的信息,而且这个命令更简短。

另一个常用的命令是 top,它显示不断更新的消耗资源最多的进程列表(按照内存或 CPU 使用量排序),还显示其他一些性能指标。

free

显示 free 的输出,这里使用 -m 选项以 MB 为单位报告所有值。

# free -m total used free shared buffers cached Mem: 939 904 34 0 107 310 -/+ buffers/cache: 486 452 Swap: 2847 0 2847

free 显示几方面的内存使用信息。第一行显示与 top 相同的信息。第二行显示在不考虑缓冲区和缓存的情况下已使用的内存和空闲内存。在清单 8 中,有 452M 的内存是空闲的,可供应用程序使用;这部分内存包括空闲内存(34M)、缓冲区(107M)和缓存(310M)。

最后一行显示与 top 相同的交换统计数据。

显示网络统计数据

如果需要详细地了解负责通信流的主机,就需要使用 iftop。它通过与 top 相似的界面提供关于网络通信的信息。内核并不直接提供这些信息,所以 iftop 使用 pcap 库检查网络上传输的数据包,这需要根特权。

sar

sar 是一个很大的主题。sar 每 10 分钟对几十个指标进行一次度量,并提供获取度量值的方法。可以使用前面讨论的工具判断目前发生的情况;而 sar 可以显示本周发生的情况。注意,sar 只保留最近 7 天的数据。

配置数据收集过程需要在根的 crontab 中添加两行。 显示 sar 的典型 crontab 配置。

df

硬盘是一种有限的资源。如果一个分区的空间用光了,就会出现问题。df 命令可以显示磁盘空间状态。

参考:来自

https://www6.software.ibm.com/developerworks/cn/education/linux/l-lpic3306/section2.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值