如何检查Linux系统中的CPU使用/利用率
介绍
时间待时,当你在日常角色管理服务器时,我们想检查系统的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