站长资讯网
最全最丰富的资讯网站

Linux 查看 cpu, mem, disk 和 network 信息

对于一个 Linux 服务器来说,cpu 的主频以及占用率,内存的大小以及占用率,磁盘 I/O 速率和网卡 I/O 速率极大地影响着服务器的性能。在 Linux 系统下,开发者提供了/proc 文件系统来提供系统相关的进程信息

1.查看 cpu 主频和占用率

Linux 下 CPU 的主频有两种获取方式,一种是通过读取 /proc/cpuinfo 文件,另外一种是利用 CPU 主频的计算原理编写程序获取。此处只介绍前一种方式。即使用命令 cat /proc/cpuinfo 。从下方图片可以看到,本人的电脑是双核 CPU,主频都为 2.60GHz。

  Lance# cat /proc/cpuinfo  processor       : 0  vendor_id       : GenuineIntel  cpu family      : 6  model           : 23  model name      : Pentium(R) Dual-Core  CPU      E5300  @ 2.60GHz  stepping        : 10  microcode       : 0xa0b  cpu MHz         : 1200.000  cache size      : 2048 KB  physical id     : 0  siblings        : 2  core id         : 0  cpu cores       : 2  apicid          : 0  initial apicid  : 0  fpu             : yes  fpu_exception   : yes  cpuid level     : 13  wp              : yes  flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm pti tpr_shadow vnmi flexpriority dtherm  bugs            : cpu_meltdown spectre_v1 spectre_v2  bogomips        : 5186.86  clflush size    : 64  cache_alignment : 64  address sizes   : 36 bits physical, 48 bits virtual  power management:    processor       : 1  vendor_id       : GenuineIntel  cpu family      : 6  model           : 23  model name      : Pentium(R) Dual-Core  CPU      E5300  @ 2.60GHz  stepping        : 10  microcode       : 0xa0b  cpu MHz         : 1200.000  cache size      : 2048 KB  physical id     : 0  siblings        : 2  core id         : 1  cpu cores       : 2  apicid          : 1  initial apicid  : 1  fpu             : yes  fpu_exception   : yes  cpuid level     : 13  wp              : yes  flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm pti tpr_shadow vnmi flexpriority dtherm  bugs            : cpu_meltdown spectre_v1 spectre_v2  bogomips        : 5186.86  clflush size    : 64  cache_alignment : 64  address sizes   : 36 bits physical, 48 bits virtual  power management:  

Linux 下 CPU 的使用状态可分为用户态、系统态以及空闲态。CPU 占用率可以用如下公式计算

CPU占用率 = CPU执行非系统空闲进程时间/CPU执行总时间

/proc/stat 文件对 CPU 的使用情况进行了实时的记录,如下图所示:

  Lance# cat /proc/stat  cpu  525228 16439 390034 139932703 224352 0 2010 0 0 0  cpu0 265224 6822 197250 70017169 60063 0 74 0 0 0  cpu1 260004 9617 192784 69915534 164289 0 1936 0 0 0  intr 126884204 43 2 0 0 0 0 0 1 0 3 0 0 4 0 0 0 124 0 2 1404563 0 0 0 0 955106 514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  ctxt 193899569  btime 1536131324  processes 268172  procs_running 1  procs_blocked 0  softirq 101783843 10 36600014 116255 1002291 1058479 0 263 35993177 0 27013354

其中首行的 10 个参数含义如下:

user nice system idle iowait irq softirq steal guest guest_nice
user:用户态的CPU时间
nice:低优先级程序所占用的用户态的cpu时间。
system:系统态的CPU时间
idle:CPU空闲的时间
iowait:等待IO响应的时间
irq:处理硬件中断的时间
softirq:处理软中断的时间
steal: 处理其他所花的时间
guest:运行时间为客户操作系统下的虚拟CPU控制
guest_nice:访客的低优先级程序所占用的用户态的cpu时间

余下的参数中:

intr:第一个参数表示的是自系统启动以来,发生的所有中断的次数;其他的数对应一个特定中断发生的次数

ctxt: cpu自系统启动以来发生的上下文交换次数

btime: 系统启动到现在的时间 UTC 秒

processes: 表示系统启动以来创建的进程个数

procs_running: 当前运行进程的个数

procs_blocked: 当前被阻塞的进程个数

softirq: 显示软中断情况

要计算 CPU 在某段时间内的占用率,可以分别记录下 t1 和 t2 时刻的 CPU 总的状态和空闲状态,因此:

CPU占用率 = 1 – ( idle2 – idle1 ) / (total2 – total1)

其中 total 表示 10 个参数之和。

2. 查看内存大小及占用率

/proc/meminfo 记录了内存信息。

  Lance# cat /proc/meminfo  MemTotal:        4003752 kB  MemFree:          517464 kB  MemAvailable:    3144816 kB  Buffers:          257152 kB  Cached:          2289308 kB  SwapCached:            0 kB  Active:          1455916 kB  Inactive:        1487740 kB  Active(anon):     277376 kB  Inactive(anon):   174624 kB  Active(file):    1178540 kB  Inactive(file):  1313116 kB  Unevictable:           0 kB  Mlocked:               0 kB  SwapTotal:       6253564 kB  SwapFree:        6253564 kB  Dirty:                 8 kB  Writeback:             0 kB  AnonPages:        395168 kB  Mapped:           207872 kB  Shmem:             54808 kB  Slab:             460364 kB  SReclaimable:     425200 kB  SUnreclaim:        35164 kB  KernelStack:        5376 kB  PageTables:        22064 kB  NFS_Unstable:          0 kB  Bounce:                0 kB  WritebackTmp:          0 kB  CommitLimit:     8255440 kB  Committed_AS:    2553704 kB  VmallocTotal:   34359738367 kB  VmallocUsed:           0 kB  VmallocChunk:          0 kB  HardwareCorrupted:     0 kB  AnonHugePages:      2048 kB  ShmemHugePages:        0 kB  ShmemPmdMapped:        0 kB  CmaTotal:              0 kB  CmaFree:               0 kB  HugePages_Total:       0  HugePages_Free:        0  HugePages_Rsvd:        0  HugePages_Surp:        0  Hugepagesize:       2048 kB  DirectMap4k:      113216 kB  DirectMap2M:     4044800 kB

其中:

MemTotal:表示系统可支配内存

MemAvailable:表示应用程序可用的内存

因此,内存占用率可以用如下公式计算:

Linux 查看 cpu, mem, disk 和 network 信息

3.查看磁盘 I/O占用率

安装 sysstat 工具,它的子工具 iostat 可以显示 I/O 占用率。%util 参数表示 1s内用于 I/O 请求所用时间的比例,%util 值越高,I/O 占用率越高,可直接使用这个参数来代表 I/O 占用率

  Lance# iostat -x  Linux 4.13.0-32-generic (Lance)         2018年09月13日  _x86_64_        (2 CPU)    avg-cpu:  %user   %nice %system %iowait  %steal   %idle             0.37    0.01    0.28    0.16    0.00   99.17    Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util  loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   21.41    0.00   0.00     2.44     0.00  20.89   0.00  loop1            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   44.62    0.00   0.00     1.69     0.00  11.38   0.00  loop2            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   19.93    0.00   0.00     9.65     0.00  12.31   0.00  loop3            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   41.81    0.00   0.00    14.23     0.00  18.88   0.00  loop4            0.01    0.00      0.01      0.00     0.00     0.00   0.00   0.00    6.61    0.00   0.00     1.12     0.00   0.50   0.00  loop5            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     1.60     0.00   0.00   0.00  sda              0.24    0.52      3.45     14.18     0.17     0.56  41.05  51.90    3.56   31.99   0.02    14.40    27.51   4.51   0.34

4. 查看网络带宽使用率

/proc/net/dev 文件中记录了网络相关的使用情况,其中分别记录了发送和接收的数据包总数、收发的错误包数以及收发的丢失包数等。取单位时间内发送和接 收 的 数 据 包 总 包 数 (totalPackets ), 除 以 网 络 的 基 本 带 宽 ( bandWidth ),
pnet = 100%*totalPackets/bandWidth

  Lance# cat /proc/net/dev  Inter-|   Receive                                                |  Transmit   face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed      lo: 2729345   46942    0    0    0     0          0         0  2729345   46942    0    0    0     0       0          0  enp2s0: 558026941  723202    0 11733    0     0          0    105753 23827630  275738    0    0    0     0       0          0

bytes: 接口发送或接收的总字节数

packets: 接口发送或接收的总数据包数

errs: 有设备驱动程序检测到的发送或者接收错误的总数

drop: 设备驱动程序丢弃的数据包总数

fifo: FIFO 缓冲区错误的数量

frame: 分组帧错误的数量

colls: 接口上检测到的冲突数

compressed: 设备驱动程序发送或接收的压缩数据包数

carrier: 由设备驱动程序检测到的载波损耗的数量

multicast: 设备驱动程序发送或接收的多播帧数

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号