服务器开发之系统负载,负载,System Load
系统负载是什么?
System Load,系统负载,指当前正在被CPU执行和等待被CPU执行的进程数目总和,是反映系统忙闲程度的重要指标。
多核CPU情况下,完美情况是所有CPU都在使用,没有进程在等待处理.
把CPU比喻成一条(单核)马路,进程任务比喻成马路上跑着的汽车,Load则表示马路的繁忙程度:
怎么看
命令1 w
命令2 top
详解 w
当前时间 11:50:54 up 110 days 启动了110天,17:52 17.52启动的 11 users 11个用户 平均负载 0.21 0.38 0.45
1分钟平均负载 0.21 ,5分钟平均负载 0.38,15分钟平均负载0.45 系统整体负载情况低,没有任务需要排队等待。
再来看看cpu相关信息 单个物理处理器 双核 4线程 在程序里面看来是4核,负载数除以CPU核数 得出每个CPU平均负载
如果计算得出每核负载率超过1 代表过载了 要找解决方案,正常值0.7及以下 比较安全
详解top top
输入top 可以看到
输入完top 等显示出来 再按下数字1 可以看到具体的每个CPU负载情况
1.7% us 代表用户使用百分之1.7的cpu时间
1.7 sy 代表系统使用百分之1.7的cpu时间
0.0% ni(nice)是进程优先级
96.3% id(idle) 代表98%的时间是空闲的
0.0% wa(wait) 等待输入输出io的CPU时间百分比为0.0%
0.0%hi 硬中断
0.3%si 软中断(软中断说明 https://www.cnblogs.com/xuliangwei/p/10789270.html)
0.0%st 实时 只有 Linux 在作为虚拟机运行时 st 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当需要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,所以需要等待)。
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
free 显示 系统中 已用和未用的 物理内存和交换内存, 共享内存和 内核使用的 缓冲区的 总和
free -m 代表以MB为单位显示内存
total 总内存
used 已使用
free 未使用的
shared 共享的
buff/cache 用来做缓存使用的内存
availble 实际可用的内存
Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 机会非常小。
cache是高速缓存,用于CPU和内存之间的缓冲;
buffer是I/O缓存,用于内存和硬盘的缓冲