b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

CPU使用率到底是怎么算出来的?它们之间有什么不同?

电脑杂谈  发布时间:2021-03-02 16:01:40  来源:网络整理

CPU使用率是描述系统CPU性能的最常用索引。

CPU使用率是单位时间CPU使用率的统计信息,以百分比显示。那么,** CPU使用率是如何精确计算的呢?然后有%user,%nice,%system,%iowait,%steal等。它们之间有什么区别吗?

CPU使用率

Linux作为多任务操作系统,将每个CPU的时间划分为很短的时间片,然后通过调度程序将它们分配给每个任务,从而产生了多个任务同时运行的错觉。

为了维持CPU时间,Linux通过预定义的心跳率(在内核中表示为HZ)触发时间中断,并使用全局变量Jiffies记录自启动以来的心跳数。每次发生时间中断,Jiffies的值都会增加一。

节拍率HZ是内核的可配置选项,可以将其设置为10 0、 25 0、 1000,依此类推。不同的系统可能会设置不同的值。您可以通过查询/ boot / config内核选项来检查其配置值。示例如下:

$ grep CONFIG_HZ= /boot/config-$(uname -r)
CONFIG_HZ=250

因为拍频HZ是内核选项,所以用户空间程序无法直接访问它。为了方便用户空间程序,内核还提供了用户空间跳动速率USER_HZ,该速率始终固定为100,即1/100秒。这样,用户空间程序不必关心内核中设置了多少HZ,因为它始终会看到固定值USER_HZ。

Linux通过/ proc虚拟文件系统为用户空间提供有关系统内部状态的信息,而/ proc / stat提供系统的CPU和任务统计信息。例如,如果仅关注CPU,则可以执行以下命令:

# 只保留各个CPU的数据
$ cat /proc/stat | grep ^cpu
cpu  280580 7407 286084 172900810 83602 0 583 0 0 0
cpu0 144745 4181 176701 86423902 52076 0 301 0 0 0
cpu1 135834 3226 109383 86476907 31525 0 282 0 0 0

这里的输出是一个表。其中,第一列代表CPU编号,例如cpu 0、 cpu1,第一行中没有数字的cpu代表所有CPU的累加。其他列表示在不同情况下CPU的累积节拍数。它的单位是USER_HZ,它是10毫秒(1/100秒),因此这实际上是不同情况下的CPU时间。

man proc可以理解特定含义,以了解特定指标的含义。在这里,我们重点关注以下指标的含义:

cpu使用率怎么看_cpu使用100_cpu使用率高怎么办

根据此公式,您可以根据/ proc / stat中的数据轻松计算CPU使用率。当然,也可以将每个场景的CPU时间除以总CPU时间,以计算每个场景的CPU使用率。

直接使用/ proc / stat的数据来计算自启动以来节拍数的累积值,因此直接计算是自启动以来的平均CPU使用率,通常没有参考值。

为了计算CPU使用率,性能工具通常每隔一段时间(例如3秒)取两个值,并且在计算出差异之后,在此时间段内的平均CPU使用率计算得出,即:

此公式是各种性能工具看到的CPU使用率的实际计算方法。

现在我知道系统CPU使用率的计算方法,该过程如何?与系统指示器类似,Linux还提供有关每个进程的运行状态的统计信息,即/ proc / [pid] / stat。但是,此文件中包含的数据更丰富,共有52列数据。需要时,只需检查man proc。

回头看,是否意味着要检查CPU使用率,必须首先读取两个文件/ proc / stat和/ proc / [pid] / stat,然后根据上述公式进行计算?

当然不是。各种性能分析工具已经为我们进行了计算。但是,应注意,性能分析工具会按时间间隔给出平均CPU使用率,因此请注意间隔时间的设置,尤其是在使用多个工具进行比较和分析时,必须确保它们使用相同的时间。间隔时间。

例如,比较两个工具top和ps报告的CPU使用率。默认结果可能会有所不同,因为top默认情况下使用3秒间隔,而ps使用过程的整个生命周期。

如何查看CPU使用率

top和ps是最常用的性能分析工具:

例如,top的输出格式为:

cpu使用率高怎么办_cpu使用率怎么看_cpu使用100

# 默认每3秒刷新一次
$ top
top - 11:58:59 up 9 days, 22:47,  1 user,  load average: 0.03, 0.02, 0.00
Tasks: 123 total,   1 running,  72 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8169348 total,  5606884 free,   334640 used,  2227824 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  7497908 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   78088   9288   6696 S   0.0  0.1   0:16.83 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.05 kthreadd
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H
...

但是,应该注意,默认情况下top显示所有CPU的平均值。此时,您只需按数字1即可切换到每个CPU的利用率。

空白行是进程的实时信息之后,每个进程都有一个%CPU列,该列指示该进程的CPU使用率。它是用户模式和内核模式CPU使用率的总和,包括进程用户空间使用的CPU,通过系统调用执行的内核空间CPU和等待在就绪队列中运行的CPU。在虚拟化环境中,它还包括正在运行的虚拟机占用的CPU。

top没有用于细分进程的用户模式CPU和内核模式CPU。如何检查每个过程的细节? pidstat是一个专用于分析每个进程的CPU使用率的工具。

例如,以下pidstat命令以1秒为间隔显示该进程的5组CPU使用率,包括:

最后的“平均值”部分中,还将计算5组数据的平均值。

# 每隔1秒输出一组数据,共输出5组
$ pidstat 1 5
15:56:02      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
15:56:03        0     15006    0.00    0.99    0.00    0.00    0.99     1  dockerd
...
Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
Average:        0     15006    0.00    0.99    0.00    0.00    0.99     -  dockerd

如果CPU使用率过高怎么办?

通过top,ps,pidstat和其他工具,您可以轻松找到CPU使用率较高(例如100%)的进程。接下来,如何查找代码中的哪个功能正在消耗CPU?只有找到它,我们才能更有效,更具体地对其进行优化。

这里推荐Perf。 Perf是Linux 2. 6. 31之后的内置性能分析工具。它基于性能事件采样,不仅可以分析系统的各种事件和内核性能,还可以用于分析指定应用程序的性能问题。

使用性能分析CPU性能问题。这是两种最常见的用法。

第一个常见用法是perf top

cpu使用率怎么看_cpu使用100_cpu使用率高怎么办

类似于顶部,它可以实时显示占用最多CPU时钟的功能或指令,因此可用于查找常用功能。界面如下:

$ perf top
Samples: 833  of event cpu-clock, Event count (approx.): 97742399
Overhead  Shared Object       Symbol
   7.28%  perf                [.] 0x00000000001f78a4
   4.72%  [kernel]            [k] vsnprintf
   4.32%  [kernel]            [k] module_get_kallsym
   3.65%  [kernel]            [k] _raw_spin_unlock_irqrestore
...

在输出结果中,第一行包含三个数据,即样本数(Samples),事件类型(event)和事件总数(Event count)。例如,在此示例中,perf总共收集了833个CPU时钟事件,事件总数为97742399。

此外,样本数量需要特别注意。如果样本数量太少(例如只有十二个样本),那么以下排序和百分比将无实际参考价值。

向下看是一个表格数据,每一行包含四列,即:

以上面的输出为例。可以看出,性能工具本身占用的CPU时钟最多,但其比例仅为7. 28%,表明系统没有CPU性能问题。

第二个常见用法是性能记录和性能报告

Perf top实时显示系统性能信息,但缺点是它不保存数据,因此不能用于脱机或后续分析。性能记录提供保存数据的功能。保存数据后,需要使用性能报告进行分析和显示。

$ perf record # 按Ctrl+C终止采样
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.452 MB perf.data (6093 samples) ]
$ perf report # 展示类似于perf top的报告

在实际使用中,通常将-g参数添加到perf top和perf记录中,以实现对调用关系的采样,这便于根据调用链分析性能问题。

摘要

CPU使用率是最直观,最常用的系统性能指标,它是在解决性能问题时通常要注意的第一个指标。因此,请熟悉其含义,尤其要弄清楚用户(%user),尼斯(%nice),系统(%system),等待I / O(%iowait),中断(%irq)和软中断(%softirq )这些不同的CPU的使用率。例如:

当遇到CPU使用率增加的问题时,可以使用诸如top和pidstat之类的工具来确认CPU性能问题的根源。然后使用诸如perf之类的工具找出导致性能问题的特定功能。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-362480-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...