系统负载
w 命令用于显示目前登入系统的用户信息
语法:w [参数] [用户名]
参数
-h:不打印头信息;
-u:当显示当前进程和cpu时间时忽略用户名;
-s:使用短输出格式;
-f:显示用户从哪登录;
-V:显示版本信息。
输出结果
13:15:29 up 1 day, 15:03, 3 users, load average: 0.01, 0.07, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/2 192.168.25.1 09:55 1.00s 0.08s 0.00s w
root :0 :0 Mon10 ?xdm? 23:35 0.33s /usr/libexec/gnome-session-binary --session gnome-classic
root pts/0 :0 Mon10 2days 0.04s 0.04s bash
USER
– 登录用户名
TTY
– 登录用户使用的终端名
FROM
–登录用户来源的主机名或IP地址
LOGIN@
– 用户登录时长
IDLE
– 自用户上一次与终端进行交互以来的空闲时间
JCPU
– 附加到tty的所有进程使用的时间
PCPU
–用户当前进程所用的时间。 显示在“ WHAT”字段中的那个
WHAT
– 用户当前的进程及选项/参数
CPU
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
' 查看物理CPU数量
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
' 单个物理CPU核数
cat /proc/cpuinfo| grep "cpu cores"| uniq
' 查看逻辑CPU数量
cat /proc/cpuinfo| grep "processor"| wc -l
举例
' 物理CPU数量:4
[root@EDA ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
4
' 单个物理CPU核数:28
[root@EDA ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 28
' 逻辑CPU数量:224
[root@EDA ~]# cat /proc/cpuinfo| grep "processor"| wc -l
224
' 因此
224 = 4 × 28 × ?
? = 2
超线程数 = 2
' 超线程
` 它可使处理器中的1 颗内核(core)如2 颗(core)内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能
监控系统状态
语法:vmstat [参数] [选项]
选项:(delay)事件间隔:状态信息刷新的时间间隔;(count)次数:显示报告的
' 安装
yum install -y sysstat
' 使用
[root@EDA ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
31 0 0 852568256 9081552 1722901760 0 0 5 134 0 0 22 2 76 0 0
字段说明
procs(进程)
- r 表示运行队列(就是说多少个进程真的分配到CPU)
- b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的
memory(内存)
- swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器
- free 空闲的物理内存的大小
- buff 用作缓冲的内存大小,(即将写入磁盘的)
- cache 用作缓存的内存大小,(从磁盘中读取的);如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小
swap(交换空间,单位:KB)
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有时我们看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的
- si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常
- so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上
io(单位:块/秒)
- bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte
- bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整
system(系统)
这2个值越大,会看到由内核消耗的CPU时间会越大
- in 每秒CPU的中断次数,包括时间中断
- cs 每秒上下文切换数
cpu(以百分比表示)
us 用户进程执行时间(user time)
sy 系统进程执行时间(system time)
id 空闲时间(包括IO等待时间)
wa 等待IO时间;wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈
实战
' 这表示vmstat每2秒采集数据
vmstat 2
vmstat -s
显示进程所占系统资源
top - 14:44:28 up 1 day, 16:32, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 249 total, 1 running, 248 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995684 total, 173924 free, 526940 used, 294820 buff/cache
KiB Swap: 2097148 total, 1746940 free, 350208 used. 294060 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
44808 root 20 0 162256 2432 1580 R 0.7 0.2 0:00.28 top
1424 mysql 20 0 1174468 62824 696 S 0.3 6.3 9:20.70 mysqld
24163 zabbix 20 0 262040 2968 688 S 0.3 0.3 0:17.10 zabbix_server
24164 zabbix 20 0 260084 624 228 S 0.3 0.1 0:17.68 zabbix_server
系统运行时间和平均负载
top - 14:44:28 up 1 day, 16:32, 3 users, load average: 0.00, 0.01, 0.05
https://zhuanlan.zhihu.com/p/36995443