关于CPU负载的问题:
- load = 0 的时候意味着这个桥上并没有车,CPU没有任何任务
- load < 1 的时候意味着桥上的车子并不多,一切都还是很流畅的,CPU的任务并不多,资源还很充足
- load = 1 的时候就意味着桥已经被车给占满了,没有一点空隙,CPU已经在全力工作了,所有的资源都被用完了,但是还是有大量的进程在请求,在等待。若是这个值大于2、大于3,表示进程请求超过 CPU 工作能力的 2 到 3 倍。而若是这个值 >5 说明系统已经在超负荷运作了。
查看物理CPU的个数:
cat /proc/cpuinfo |grep 'physical id'|sort |uniq|wc -l
每个CPU的核心数:
cat /proc/cpuinfo |grep "physical id"|grep 'o'|wc -l
通过上面指数可以知道 load 的临界值为 1 ,但是在实际生活中,比较有经验的运维或者系统管理员会将临界值定为 0.7 。
这里的指数都是除以核心数以后的值,不要混淆
- 若是 load<0.7 并不会去关注他
- 若是 0.7<load<1 的时候就需要稍微关注一下,虽然还可以应付,但这个值已经离临界不远了
- 若是 load=1 的时候就要警惕了,因为这个时候已经没有太多的资源,已经在全力以赴
- 若是 load>5 的时候系统已经快不行了,这时你需要加班解决问题
top 是一个前台程序,所以是一个可以交互的
常用交互命令 | 解释 |
---|---|
q | 退出程序 |
l | 切换显示 平均负载 和 启动时间 的信息 |
P | 根据 CPU 使用 百分比大小 进行排序 |
M | 根据驻留 内存大小 进行排序 |
i | 忽略闲置和僵死的进程,这是一个开关式命令 |
ps 工具的使用
ps 也是最常用的查看进程的工具之一
参数:
- -A :所有的进程均显示出来,与 -e 具有同样的效用
- -a :显示现行终端机下的所有进程,包括其它用户进程
- -u :以用户为主的进程状态
- x:通常与 a 这个参数一起使用,列出比较完整的信息
输出格式规划:
- l :较长、较详细的将该 PID 的信息列出
- j : 工作的格式(job format)
STAT 表示进程的状态,进程的状态有很多:
状态 | 解释 |
---|---|
R | Running. 运行中 |
S | Interruptible Sleep. 等待调用 |
D | Uninterruptible Sleep. 不可中断睡眠 |
T | Stoped. 暂停或者跟踪状态 |
X | Dead. 即将被撤销 |
Z | Zombie. 僵尸进程 |
W | Paging. 内存交换 |
N | 优先级低的进程 |
< | 优先级高的进程 |
s | 进程的领导者 |
L | 锁定状态 |
l | 多线程状态 |
+ | 前台进程 |
其中的 D 是不能被中断的睡眠状态,处在这种状态的进程不接受外来的人任何 signal
所以无法继续使用 kill 命令杀掉处于 D 状态的进程
无论是 kill,kill -9 还是 kill -15 。一般处于这种状态可能是进程 I/O 的时候出问题了
pstree
pstree -up
参数选择:
- -A : 各程序树之间以 ASCII 字元来连接
- -p : 同时列出每个 进程 的 PID
- -u : 同时列出每个 进程 的所属账户名称