top

top 是Linux系统下的最常用性能工具,可以实时查看系统的资源使用情况,虽然是老生常谈,但作为一个必备系统状态查看工具不得不提。当系统或者应用出现问题是,很多工程师第一时间想到的就是打开 top,看一下CPU,内存这些情况,下面是top命令的运行截图:

在综合统计部分:

  • 第一行综合负载信息

    • 13:55:49 是上一次统计时间,每个一段时间会自动更新一次,比如 3 秒钟。
    • up 4 min,表示系统自从上一次启动之后的运行时间,由于我是在虚拟机里进行测试,时间比较短,这里是4分钟。线上生产环境的机器往往都是以 days 为单位。比如 up 120 days。
    • load average:系统最近1分钟,5分钟 和 15分钟的平均负载(TODO 对于负载的解释)也可以通过 uptime 获取到。
  • 第二行是进程信息:
    • total:表示已经启动的进程总数。
    • running:正在运行的进程数。
    • sleeping: 正在休眠的进程数。
    • stoped:停止运行的进程数。
    • zombile:僵尸进程总数(TODO 进一步解释)
  • 第三行是CPU信息
    • us:用户空间占用CPU百分比
    • sy:系统内核空间占用CPU百分比
    • ni:用户进程空间内改变过优先级的进程占用CPU百分比(TODO)?
    • id:空闲CPU百分比。
    • wa:等待输入输出的CPU时间百分比?
    • hi:硬中断的时间百分比
    • si:软中断的时间百分比
    • st:运行虚拟机所消耗的真实CPU时间百分比,如果没有虚拟机运行该值为0.
  • 第四、五行是内存信息,以字节为单位,total = free + used + buff/cache

    • total,可用物理内存的总的空间大小。
    • free,可用物理内存的剩余空间大小。
    • used,已经使用的物理内存的空间大小。
    • buff/cache,表示 buff 和 cache 之和,他们都是系统所使用的内存,buff 是内核使用的内存空间大小,用于速度不对等时数据传输的缓冲区,cache 是 Page Cache 和 Slab 使用的内存,用户缓存数据结果。在其他程序需要内存时,这部分空间会被释放。
    • Avail Mem ,在不进行交换的情况下, 有空多少空闲内存可使用使用的估算值, 3.14内核以上才有。
  • 第五行是交换空间信息

    • total,交换内存空间大小,一般大于物理内存空间。
    • free,空闲的交换空间大小。
    • used,已经使用的交换空间大小。

第二个区域为线程信息,另外也可以通过 top -Hpid 查看一个进程中的线程信息。

  • PID:进程ID。

  • USER:启动进程锁使用的用户名。

  • PR:进程的优先级,由系统内核动态调整,值越低,优先级越高,越容易获得CPU资源。

  • NI:进程的 NICE 值,对于普通进程,RP值是在NI基础之上加 20,该值可以由用户调节,比如使用命令 renice -10 -p

  • VIRT:进程所占用的虚拟内存大小,以 KB为单位。

  • RES:进程所用的,未被换出物理内存的大小,以KB为单位。

  • SHR:进程所占用的共享内存的大小,以KB为单位。

  • S: 表示进程的运行状态,S 代表睡眠状态,其余的值还有 D:不可中断的随眠状态,R:运行中,T:跟踪/停止,Z:僵尸状态。

  • %CPU:进程当前占用的CPU资源比例。

  • %MEM:进程当前占用内存资源比例。

  • TIME+:进程总计使用的CPU时间。

  • COMMAND:启动进程的程序或命令。

Sar

System Activity Reporter系统活动情况报告

sar 不是系统自带的工具,需要单独安装,他是 sysstat 工具包中的一个,该包中还以 iostat、mpstat、sa 等工具。

安装:

yum -y install sysstat

配置:

$ cat /etc/cron.d/sysstat 
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

(TODO,详细介绍)

tsar

TODO

vmstat

TODO

nload

nload 是一个网卡流量监控工具,可以实时监控网络吞吐量,非常简单,开箱即用,可以快速上手。

nload 的安装:通过 yum 安装需要先安装第三方 epel 仓库。

$ sudo yum -y install epel-release
$ sudo yum -y install nload

nload 的使用:其中 enp0s9 是本地的网卡名称。

$ sudo nload enp0s9

nload 显示的界面包含两部分,上半部分(Incoming)是流入网卡(通常是用户提交的请求数据)的流量,下半部分(Outgoing)是流出网卡(返回给用户的数据)的流量。每个部分都包含:当前采样周期内的流量(Curr),平均流量(Avg),最小流量(Min),最大流量(Max),总和流量(Ttl)这几个值。

nload 使用非常简单,只包含如下几个参数:

  • -a: 平均值(Avg)的计时窗口,以秒为单位,默认是300秒。
  • -i:Incoming 部分的流量图中每个柱状标记(一个竖行)的最大值,默认是 10240 kBit/s。
  • -m: 值显示统计数据,不显示流量图。
  • -o:Outgoing 部分的流量图的最大值,和 -i 类似。
  • -t:显示数据的刷新时间,以毫秒为单位,默认是500毫秒。
  • -u:Curr、Avg、Min、Max 的显示单位, h: 自动, b: Bit/s, k: kBit/s, m: MBit/s,H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc。
  • -U:设置 Ttl 的显示单位,和 -u 相同。

iftop

results matching ""

    No results matching ""