在本文中,我们将介绍一个关键的Linux系统管理任务 - 关于系统/ CPU负载和负载均衡的性能监视。
在我们进一步推动之前,让我们在所有类Unix系统中了解这两个重要的短语:
- 系统负载/ CPU负载 - 是Linux系统中CPU过度或低利用率的度量; 正在由CPU执行或处于等待状态的进程数。
- 负载平均值 - 在给定时间段内计算的平均系统负载为1,5和15分钟。
在Linux中,负载均衡在技术上被认为是标记为运行或不间断的(内核)执行队列中的进程的运行平均值。
注意:
- 所有如果不是大多数由Linux或其他类Unix系统供电的系统都可能会显示用户某处的负载平均值。
- 彻底的空闲Linux系统可能具有零的负载平均值,不包括空闲进程。
- 几乎所有类似Unix的系统仅计算运行状态或等待状态中的进程。 但Linux不是这样,它包括不间断睡眠状态的进程; 那些等待其他系统资源的磁盘I / O等
如何监控Linux系统负载平均
监控系统负载平均值的方法有很多种,包括正常运行时间,显示系统运行了多长时间,用户数与负载平均值相同:
$ uptime 07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
数字从左到右读取,上面的输出表示:
- 过去1分钟的负载平均值为1.98
- 过去5分钟内的负载平均值为2.15
- 过去15分钟内的平均负荷为2.21
高负载平均值意味着系统过载; 许多进程正在等待CPU时间。
我们将在下一节中发现与CPU内核数相关的内容。 此外,我们还可以使用其他众所周知的工具,如顶部和扫视 ,显示运行的Linux系统的实时状态,以及许多其他工具:
顶级命令
$ top
top - 12:51:42 up 2:11, 1 user, load average: 1.22, 1.12, 1.26 Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie %Cpu(s): 17.4 us, 2.9 sy, 0.3 ni, 74.8 id, 4.6 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8069036 total, 388060 free, 4381184 used, 3299792 buff/cache KiB Swap: 3906556 total, 3901876 free, 4680 used. 2807464 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6265 youcl 20 0 1244348 170680 83616 S 13.3 2.1 6:47.72 Headset 2301 youcl 9 -11 640332 13344 9932 S 6.7 0.2 2:18.96 pulseaudio 2459 youcl 20 0 1707692 315628 62992 S 6.7 3.9 6:55.45 cinnamon 2957 youcl 20 0 2644644 1.035g 137968 S 6.7 13.5 50:11.13 firefox 3208 youcl 20 0 507060 52136 33152 S 6.7 0.6 0:04.34 gnome-terminal- 3272 youcl 20 0 1521380 391324 178348 S 6.7 4.8 6:21.01 chrome 6220 youcl 20 0 1595392 106964 76836 S 6.7 1.3 3:31.94 Headset 1 root 20 0 120056 6204 3964 S 0.0 0.1 0:01.83 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H ....
扫视工具
$ glances
youcl (LinuxMint 18 64bit / Linux 4.4.0-21-generic) Uptime: 2:16:06 CPU 16.4% nice: 0.1% LOAD 4-core MEM 60.5% active: 4.90G SWAP 0.1% user: 10.2% irq: 0.0% 1 min: 1.20 total: 7.70G inactive: 2.07G total: 3.73G system: 3.4% iowait: 2.7% 5 min: 1.16 used: 4.66G buffers: 242M used: 4.57M idle: 83.6% steal: 0.0% 15 min: 1.24 free: 3.04G cached: 2.58G free: 3.72G NETWORK Rx/s Tx/s TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view enp1s0 525Kb 31Kb lo 2Kb 2Kb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command wlp2s0 0b 0b 14.6 13.3 2.53G 1.03G 2957 youcl 0 S 51:49.10 0 40K /usr/lib/firefox/firefox 7.4 2.2 1.16G 176M 6265 youcl 0 S 7:08.18 0 0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan DISK I/O R/s W/s 4.9 3.9 1.63G 310M 2459 youcl 0 R 7:12.18 0 0 cinnamon --replace ram0 0 0 4.2 0.2 625M 13.0M 2301 youcl -11 S 2:29.72 0 0 /usr/bin/pulseaudio --start --log-target=syslog ram1 0 0 4.2 1.3 1.52G 105M 6220 youcl 0 S 3:42.64 0 0 /usr/lib/Headset/Headset ram10 0 0 2.9 0.8 409M 66.7M 6240 youcl 0 S 2:40.44 0 0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2 ram11 0 0 2.9 1.8 531M 142M 1690 root 0 S 6:03.79 0 0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8 ram12 0 0 2.6 0.3 79.3M 23.8M 9651 youcl 0 R 0:00.71 0 0 /usr/bin/python3 /usr/bin/glances ram13 0 0 1.6 4.8 1.45G 382M 3272 youcl 0 S 6:25.30 0 4K /opt/google/chrome/chrome ...
这些工具显示的负载平均值读取/ proc / loadavg文件,您可以使用cat命令查看如下所示的负载平均值:
$ cat /proc/loadavg 2.48 1.69 1.42 5/889 10570
要以图形格式监视负载平均值,请查看:
在台式机上,有图形用户界面工具可以用来查看系统负载平均值。
了解CPU关系数量的系统平均负载
我们不可能解释系统负载或系统性能,而不会影响CPU内核数量对性能的影响。
多处理器Vs多核
- 多处理器 - 将两个或多个物理CPU集成到单个计算机系统中。
- 多核处理器 - 是单个物理CPU,它具有并行工作的至少两个或更多个独立的内核(或我们也可以称为处理单元)。 意思是双核具有2个两个处理单元,四核具有4个处理单元等。
此外,还有一种处理器技术,首先由英特尔引入改进并行计算,称为超线程。
在超线程下,单个物理CPU内核显示为操作系统的两个逻辑CPU核心(但实际上,有一个物理硬件组件)。
请注意,一个CPU核心一次只能执行一个任务,因此诸如多CPU /处理器,多核CPU和超线程等技术已经开始生效。
使用多个CPU,可以同时执行多个程序。 现在的英特尔®CPU使用了多核和超线程技术的组合。
要查找系统上可用的处理单元数量,我们可以使用nproc或lscpu命令 ,如下所示:
$ nproc 4 OR lscpu
使用grep命令查找处理单元数量的另一种方法如图所示。
$ grep 'model name' /proc/cpuinfo | wc -l 4
现在,为了进一步了解系统负载,我们将采取几点假设。 假设我们的负载平均值如下:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
在一个核心系统上,这意味着:
- 平均使用CPU(100%); 在过去1分钟内,1个进程在CPU(1.00)上运行。
- CPU平均闲置60% 在过去5分钟内没有进程等待CPU时间(0.40)。
- CPU平均超载235%; 过去15分钟内有2.35个进程正在等待CPU时间(3.35)。
在双核系统上,这意味着:
- 一个CPU平均100%空闲,一个CPU正在使用; 在过去1分钟内没有进程正在等待CPU时间(1.00)。
- CPU平均闲置160%; 没有进程等待CPU时间。 (0.40)过去5分钟。
- CPU平均超载了135%; 1.35进程正在等待CPU时间。 (3.35)过去15分钟。
你可能还喜欢:
总之,如果您是系统管理员,那么高负载平均值是真正的担心。 当CPU高度高于CPU内核数量时,这表示对CPU的需求量很大,而且低于CPU内核的低负载平均值告诉我们CPU没有被充分利用。