Linux 系统管理

系统负载

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

猜你喜欢

转载自blog.csdn.net/weixin_45791800/article/details/121832403