系统 服务器 负载、CPU、内存、进程 等信息 反应 当前服务的运行状态,top 能够获取 这些 相关信息(固然,除了 top 以外 还有 不少 工具能够获取这些 信息 -- 例如 htop、iotop ...,本文 主要介绍 top)
缓存
## 命令 很简单,直接 命令行 输入 top 按回车以后,弹出一个 交互界面 # top
top 结果咱们 从上往下,按行 依次分析
服务器
## top - 03:51:27 up 1 day, 22:17, 4 users, load average: 8.08, 8.07, 8.01 ## top -- 当前程序的名称 ## 03:51:27 -- 当前系统时间 ## up 1 day, 22:17 -- 当前系统已经运行的时间(能够 用来判断 机器最近是否关机重启) ## 4 users -- 当前登陆系统的用户数量 ## load average: 8.08, 8.07, 8.01 -- 分别对应一、五、15分钟内cpu的平均负载
load average 是对当前 CPU 工做量的度量,指运行队列的平均长度(也就是等待 CPU 的平均进程数相关的一个计算值);wikipedia 中的解释是 "the system load is a measure of the amount of work that a computer system is doing"
ide
咱们该如何看待这个load average 数据呢?假设咱们的系统是单 CPU、单内核的,把它比喻成是一条单向的桥,把CPU任务比做汽车工具
备注:CPU相关信息查看(个数、内核数)ui
## 查看物理CPU的个数 # cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l ## 每一个cpu的核心数 # cat /proc/cpuinfo | grep "physical id" | grep "0" | wc -l
## uptime 命令 获取的命令 就是 first line的内容 # uptime 10:13:18 up 35 days, 19:09, 4 users, load average: 0.18, 0.31, 0.39
## Tasks: 211 total, 9 running, 202 sleeping, 0 stopped, 0 zombie ## Tasks: 211 total -- 进程总数 ## 9 running -- 正在运行的进程数 ## 202 sleeping -- 休眠的进程数 ## 0 stopped -- 中止的进程数 ## 0 zombie -- 僵尸进程数
## %Cpu(s): 20.4 us, 77.2 sy, 9.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 2.5 si, 0.0 st ## %Cpu(s): 20.4 us -- 用户空间进程 占用 CPU百分比 ## 77.2 sy -- 内核空间 运行 占用 CPU百分比 ## 9.0 ni -- 用户进程空间内改变过优先级的进程占用CPU百分比 ## 0.0 id -- 空闲CPU百分比 ## 0.0 wa -- 等待输入输出的CPU时间百分比 ## 0.0 hi -- 硬中断(Hardware IRQ)占用CPU的百分比 ## 2.5 si -- 软中断(Software IRQ)占用CPU的百分比 ## 0.0 st -- (Steal time) 是 hypervisor 等虚拟服务中,虚拟 CPU 等待实际 CPU 的时间的百分比
备注:CPU 利用率 和 CPU Load 这两个指标并不同 CPU 利用率是对一个时间段内 CPU 使用情况的统计,经过这个指标能够看出在某一个时间段内 CPU 被占用的状况 Load Average 是 CPU 的 Load,它所包含的信息不是 CPU 的使用率情况,而是在一段时间内 CPU 正在处理以及等待 CPU 处理的进程数状况统计信息
## KiB Mem: 2048352 total, 1107672 free, 74396 used, 866284 buff/cache ## 2048352 total -- 物理内存总量 ## 1107672 free -- 使用的物理内存总量 ## 74396 used -- 空闲内存总量 ## 866284 buff/cache -- 内核缓存的内存量
备注: 系统中可用的物理内存最大值并非 free 这个单一的值,而是 free + buffers + swap 中的 cached 的和(能够参考 "Linux 内存释放(基本操做)" 一文)
## KiB Swap: 1048572 total, 959080 free, 89492 used. 1804676 avail Mer ## 1048572 total -- 交换区总量 ## 959080 free -- 空闲交换区总量 ## 89492 used -- 使用的交换区总量 ## 1804676 avail Mer -- XXXXXX
## PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ## PID -- 进程id ## USER -- 进程的所属用户 ## PR -- 进程执行的优先级 priority 值 ## NI -- 进程的 nice 值 ## VIRT -- 进程任务所使用的虚拟内存的总数 ## RES -- 进程所使用的物理内存数,也称之为驻留内存数 ## SHR -- 进程共享内存的大小 ## S -- 进程进程的状态: S=sleep R=running Z=zombie ## %CPU -- 进程CPU的利用率 ## %MEM -- 进程内存的利用率 ## TIME+ -- 进程活跃的总时间 ## COMMAND -- 进程名
PR 值表示 Priority 值叫动态优先级,是进程在内核中实际的优先级值(进程优先级的取值范围是经过一个宏定义的,这个宏的名称是 MAX_PRIO,它的值为 140)命令行
NICE 值叫作静态优先级,是用户空间的一个优先级值,其取值范围是-20至19code
备注:PR 与 NI PR 中的 100 to 139 值部分有这么一个对应 PR = 100 + 20 + (-20 to +19),这里的 -20 to +19 即是nice值,因此说两个虽然都是优先级,并且有千丝万缕的关系,可是他们的值,他们的做用范围并不相同(暂未详细探究)
任务所使用的虚拟内存的总数,其中包含全部的代码,数据,共享库和被换出 swap空间的页面等所占据空间的总数(暂未详细探究)
blog
在交互 界面,我也 也可 根据自身需求,进行 交互操做排序
### ### 边使用 边记录,后期不断完善 ### ## 按键 "h" -- 交互界面 帮助手册,按键 "q" 则 退出帮助,返回 交互界面 ## 按键 "q" -- 退出,返回命令行 ## 按键 "l" -- "first line" 显示/关闭 开关 ## 按键 "M" -- "fourth line"、"fifth line" 显示/关闭 开关
不少时候,咱们 只须要 查看 某一类 信息,不须要 查看 全部 信息,此时 咱们能够 直接 经过 命令行 参数 来进行 操做
队列
# top -h
## 进入 top 交互界面,某些 应用 不须要 每秒 更新信息,此时 top 能够 设置 时间间隔 # top -d {time_sec}
## 默认 按 %CPU 这项 降序 排列,也能够 指定 别的项 ## ## PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 任意某一项 # top -o {opt}
## 只显示 指定用户 的进程信息 # top -u {user_name}
# top -i