如何检查Linux系统中的CPU使用/利用率

时间:2020-02-23 14:37:47  来源:igfitidea点击:

介绍

时间待时,当你在日常角色管理服务器时,我们想检查系统的CPU如何特别是如果我们怀疑某些东西可能会消耗超过它。
为了能够这样做,有许多Linux工具可以检查它是如何实际执行的。

在我们继续之前,可以使用LSCPU命令查看CPU详细信息。

# lscpu
 Architecture:        x86_64
 CPU op-mode(s):      32-bit, 64-bit
 Byte Order:          Little Endian
 CPU(s):              8
 On-line CPU(s) list: 0-7
 Thread(s) per core:  2
 Core(s) per socket:  4
 Socket(s):           1
 Vendor ID:           GenuineIntel
 CPU family:          6
 Model:               142
 Model name:          Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
 Stepping:            10
 CPU MHz:             1992.000
 CPU max MHz:         1992.0000
 BogoMIPS:            3984.00
 Hypervisor vendor:   Windows Subsystem for Linux
 Virtualization type: container
 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 pdpe1gb rdtscp lm pni pclmulqdq est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt aes xsave osxsave avx f16c rdrand hypervisor

有关更多详细信息,我们可以检查CPUInfo文件。

# cat /proc/cpuinfo | less

让我们开始

1.使用TOP命令

TOP命令显示Linux进程,并具有列,详细介绍了进程如何使用可用/分配的CPU。

top - 10:50:24 up 9 days, 23:32,  4 users,  load average: 4.50, 4.46, 4.02
Tasks: 140 total,   2 running, 138 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13.8 us,  3.4 sy,  0.0 ni, 82.7 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  8001400 total,   126308 free,  2132428 used,  5742664 buff/cache
KiB Swap:  8257532 total,  8255732 free,     1800 used.  5508964 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
   736 root      20   0 2290772 979100  99752 S  27.2 12.2   1787:02 kesl
 61548 root      20   0 4090296 993816  27168 S   3.0 12.4 348:22.96 java
  1778 root      20   0 1312512  66428  48888 S   1.0  0.8 156:42.14 klnagent
   734 root      20   0   20720   6100   5684 S   0.7  0.1  95:48.03 wdserver
   657 root      20   0  116332   4292   3104 S   0.3  0.1  29:56.68 kesl_launcher.s

2.使用vmstat命令

VMSTAT命令报告关于进程,内存,分页,块IO,陷阱和CPU利用率的虚拟内存统计信息。
示例VMSTAT输出如下所示。
最后一列被标记为CPU,应该是我们在此处感兴趣的地方。

# vmstat
 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----
  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
  4  0    520 135564   2168 5859468    0    0     5     4   11   19  6  2 91  0  0

CPU列表示为总CPU时间的百分比。
第一个CPU列"美国"(用户代码)显示运行非内核代码的时间百分比。
第二个CPU列,"SY"(系统代码)显示运行内核代码的时间百分比。
第三个CPU列,"ID"显示空闲时间的百分比。
第四个CPU列,"WA"显示等待I/O(输入/输出)的时间百分比。
第五CPU列,"St"(窃取时间)显示从虚拟机中窃取的时间的百分比。

3.使用TOP命令

从其人员页面,HTOP是一个免费的(GPL)基于NCURSES的Linux的过程查看器。
它类似于顶部,但允许我们垂直和水平滚动,因此我们可以看到系统上运行的所有进程以及它们的完整命令行,以及将它们视为过程树,选择多个进程并采取行动他们全部立刻。
可以在不进入PID的情况下完成与进程(杀戮,重新定义)相关的任务。

4.使用SAR命令

系统活动报告的首字母缩写,此命令用于收集,报告或者保存UNIX等操作系统中的系统活动信息。

SAR的SYSNTAX如下:

sar [options] [interval [count] ]

安装sar.

-- Install sar on Ubuntu/Debian --
$sudo apt -y install sysstat
-- Install sar on Arch/Manjaro --
$sudo pacman -S sysstat
-- Install sar on Fedora/CentOS --
$sudo dnf install sysstat
$sudo yum install sysstat

安装后,启用SYSSTAT开始收集系统信息。
在配置文件中更改启用="false"以启用="true",如下所示。
编辑后,重新启动sysstat。

$cat /etc/default/sysstat
## Default settings for /etc/init.d/sysstat, /etc/cron.d/sysstat
# and /etc/cron.daily/sysstat files
## Should sadc collect system activity informations? Valid values
# are "true" and "false". Please do not put other values, they
# will be overwritten by debconf!
ENABLED="true"

进行更改后重新启动Sysstat。

sudo systemctl restart sysstat

每5秒生成10次CPU报告

# sar 5 10
Linux 4.4.0-17134-Microsoft (Kibet-pc)  07/26/19        x86_64        (8 CPU)
10:59:40        CPU     %user     %nice   %system   %iowait    %steal     %idle
10:59:45        all      8.38      0.00     13.42      0.00      0.00     78.20