Linux性能工具:系统CPU

Linux性能工具:系统CPU,第1张

Linux性能工具:系统CPU

Linux性能工具:系统CPU
  • CPU 性能统计信息
    • 运行队列统计
    • 上下文切换
    • 中断
    • CPU 使用率
  • CPU性能工具
    • vmstat(虚拟内存统计)
      • CPU 性能相关的选项
      • 用法示列
    • top
      • CPU 性能相关的选项
    • procinfo(从/proc 文件系统显示信息)
      • CPU 性能相关的选项
      • mpstat(多处理器统计)
      • CPU 性能相关选项
      • 用法示列
    • sar(系统活动报告)
      • CPU 性能相关的选项
      • 用法示例

工具是追踪性能问题时的第一道防线。它们能展示整个系统的性能情况和哪些部分表现不好。现在我们将学习这些工具可以测量的统计信息,以及如何使用各种工具收集这些统计结果。学习完成后,我们将能够:

  • 理解系统级性能的基本指标,包括CPU的使用情况。
  • 明白哪些工具可以检索这些系统性能指标。
CPU 性能统计信息

每一种系统级 Linux 性能工具都提供了不同的方式来提取相似的统计结果。虽然没有工具显示全部的信息,但是有些工具显示的是相同的统计信息。为了不多次(每种工具一次)解释统计信息的含义,在描述所有工具之前对这些信息进行一次性说明。

运行队列统计

在 Linux中,一个进程要么是可运行的,要么是阻塞的(正在等待一个事件的完成)。阻塞进程可能在等待的是从I/O 设备来的数据,或者是系统调用的结果。如果进程是可运行的,那就意味着它要和其他也是可运行的进程竞争 CPU 时间。一个可运行的进程不一定会使用 CPU,但是当 Llinux 调度器决定下一个要运行的进程时,它会从可运行进程队列中挑选。如果进程是可运行的,同时又在等待使用处理器,这些进程就构成了运行队列。运行队列越长,处于等待状态的进程就越多。

性能工具通常会给出可运行的进程个数和等待 I/O 的阻塞进程个数。另一种常见的系统统计是平均负载**。系统的负载是指正在运行和可运行的进程总数**。例如,如果正在运行的进程为两个,而可运行的进程为三个,那么系统负载就是5。平均负载是给定时间内的负载量。一般情况下,取平均负载的时间为1分钟、5分钟和15分钟。这能让我们观察到负载是如何随时间变化的。

上下文切换

大部分现代处理器一次只能运行一个进程或线程。虽然有些处理器(比如超线程处理器)实际上可以同时运行多个进程,但是Linux 会把它们看作多个单线程处理器。如果要制造出给定单处理器同时运行多个任务的假像,Linux内核就要不断地在不同进程间切换。这种不同进程间的切换称为上下文切换,因为当其发生时,CPU 要保持旧进程的所有上下文信息,并取出新进程的所有上下文信息。上下文中包含了 Linux 跟踪新进程的大量信息,其中包括:进程正在执行的指令,分配给进程的内存,进程打开的文件等。这些上下文切换涉及大量信息的移动,因此上下文切换的开销可以是相当大的。尽量减少上下文切换的次数是个好办法。

要避免上下文切换,重要的一点是了解它们是如何发生的。首先,上下文切换可以是内核调度的结果。为了保证公平地给每个进程分配处理器时间,内核周期性地中断正在运行的进程,在适当的情况下,内核调度器会决定开始另一个进程,而不是让当前进程继续执行。每次这种周期性中断或定时发生时,系统都可能进行上下文切换。每秒定时中断的次数与架构和内核版本有关。一个检查中断频率的简单方式是用/proc/interrupts 文件,它可以确定已知时长内发生的中断次数。如下所示:

[root@webim-service-mq ~]# cat /proc/interrupts | grep timer; sleep 10; cat /proc/interrupts | grep timer
  0:         10          0          0          0   IO-APIC   2-edge      timer
LOC: 1935437764 2030513501 1868254470 2312543510   Local timer interrupts
HVS:          0          0          0          0   Hyper-V stimer0 interrupts
  0:         10          0          0          0   IO-APIC   2-edge      timer
LOC: 1935441001 2030516114 1868257784 2312545679   Local timer interrupts
HVS:          0          0          0          0   Hyper-V stimer0 interrupts

在上面,我们要求内核给出定时器启动的次数,等待10秒后,再次请求。这就是,在这台机器上定时器启动频率为(19 354 410 01 - 19 354 377 64)中断 / (10 ) 是323次中断/秒。如果上下文的切换明细多于定时器中断(也就是高于19 354 410 01 - 19 354 377 64),那么这些切换极有可能是由 I/O 请求或其他长时间运行的系统调用(如休眠)造成的。当应用请求的 *** 作不能立即完成时,内核启动该 *** 作,保存进程,并尝试切换到另一个已就绪进程。这能让处理器尽量保持忙状态。

中断

此外,处理器还周期性地从硬件设备接收中断。当设备有事件需要内核处理时,它通常就会触发这些中断。比如,如果磁盘控制器刚刚完成从驱动器取数据块的 *** 作,并准备好提供给内核,那么磁盘控制器就会触发一个中断。对内核收到的每个中断,如果已经有相应的已注册的中断处理程序,就运行该程序,否则将忽略这个中断。这些中断处理程序在系统中具有很高的运行优先级,并且通常执行速度也很快。有时,中断处理程序有工作要做,但是又不需要高优先级,因此它可以启动 “下半部”(bottom half),也就是所谓的软中断处理程序。如果有很多中断,内核会花大量的世界服务这些中断。查看 /proc/inerrupts文件可以显示出哪些 CPU 上触发了哪些中断。

CPU 使用率

CPU 使用率是个简单的概念。在任何给定的时间,CPU 可以执行7件事情中的一个:

  1. CPU 可以是空闲的,这意味着处理器实际上没有做任何工作,并且等待有任何可以执行。

  2. CPU 可以运行用户代码,即指定的 “用户” 时间。

  3. CPU 可以执行 Linux 内核中的应用程序代码,这就是“系统”时间。

  4. CPU 可以执行 “比较友好” 的或者优先级被设置为低于一般进程的用户代码。

  5. CPU 可以处于 iowait 状态,即系统正在等待 I/O (如磁盘或网络)完成。

  6. CPU 可以处于 irq 状态,即它正在用高优先级代码处理硬件中断。

  7. CPU 可以处于 siftirq模式,即系统正在执行同样由中断触发的内核代码,只不过其运行于较低优先级(下半部代码).
    此情景出现的条件为:发生设备中断时,而内核将其移交给用户空间之前必须对其进行一些处理(比如,处理网络包)

    大多数性能工具将这些数值表示为占 CPU 总时间的百分比。这些时间的范围从0% 到 100%,但全部这三项加起来等于100%。一个具有高“系统”百分比的系统表明其大部分时间都消耗在了内核上。像 oprofile 一样的工具可以帮助确定时间都消耗在了哪里。具有高“用户”时间的系统则将其大部分时间都用来运行应用程序。

CPU性能工具 vmstat(虚拟内存统计)

vmstat 是指虚拟内存统计,这个名称表明它能告诉我们系统的内存性能信息。幸运的是,它实际上能完成的工作不止于此。vmstat是一个很有用的命令,它能获取整个系统性能的粗略信息,包括:

  • 正在运行的进程个数。
  • CPU 的使用情况。
  • CPU 接收的中断个数。
  • 调度器执行的上下文切换次数。

它是用于获取性能大致信息的极好工具。

CPU 性能相关的选项

vmstat 可以被如下命令行调用:
vmstat [-n] [-s] [delay [count]]

vmstat 运行于两种模式:采样模式和平均模式。如果不指定参数,则vmstat 统计运行于平均模式下,vmstat 显示从系统启动以来所有统计数据的均值。但是,如果指定了延迟,那么第一个采样仍然是系统启动以来的均值,但之后 vmstat 按延迟采样系统并显示系统统计数据。下表解释了 vmstat 的选项。

vmstat 命令行选项

选项说明-n默认情况下,vmstat定期显示每个性能统计数据的列标题。本选项禁止该特性,因此初始列标题之后,只显示性能数据。如果将 vmstat 导出为表格,使用这个选项是有好处的-s本选项一次性输出 vmstat 收集的系统统计详细信息。该信息为系统启动后的总数据delayvmstat 采样的间隔时间

vmstat 提供的各种统计输出信息,使我们能跟踪系统的不同方面。下表解释了与 CPU 性能相关的输出。

与 CPU 相关的 vmstat 输出

列说明r当前可运行的进程数。这些进程没有等待I/O,而是已经准备好运行。理想状态下,可运行进程数应与可用 CPU 的数量相等b等待 I/O 完成的被阻塞进程数forks创建新进程的次数in系统发生中断的次数cs系统发生上下文切换的次数us用户将进程消耗的总 CPU 时间的百分比(包括“友好的” 时间)sy系统代码消耗的总 CPU 时间的百分比,其中包括消耗在 system、irq和softirq状态的时间wa等待 I/O 消耗的总 CPU 时间的百分比id系统空闲消耗的总 CPU 时间百分比

vmstat 提供了一个低开销的良好系统性能视图。由于所有的性能统计数据都以文本形式呈现,并打印输出,因此,捕捉测试中生成的数据,以及之后对其进行处理和绘图就会很方便。由于vmstat的开销如此之低,因此当我们需要一目了然地监控系统监控状况时,让它在控制台上或窗口中持续运行,甚至是在负载非常重的服务器上很实用的。

用法示列

如果vmstat 运行时没有使用命令行参数,显示的将是自动启动后它记录下的统计信息的均值。根据 “CPU 使用率” 列下面的us、sy、wa和id,本例显示出系统从启动开始,基本上处于空闲状态。从启动开始,CPU 有4%(us)的时间用于执行用户应用程序代码,1%(sy)的时间执行系统代码,而其余95%(id)的时间处于空闲状态。

[root@web1 ~]# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 222288 236304 1897140    0    0     4   772    1    1  4  1 95  0  0

尽管 vmstat 从系统启动时开始统计有助于确定系统的负载情况,但是,vmstat 最有用的是运行于采样模式下,如下面命令所示。在采样模式下,vmstat 间隔 delay 参数指定的秒数输出系统统计数据,而采样次数由 count给出。下面第一行的统计数据和上面输出的一样,是系统启动以来的均值,但之后就是定期采样。本例展示出系统的活动非常少。通过查看b列下面的0,我们可以知道在运行时没有阻塞进程。通过 r 列,我们还可以看到在vmstat采样数据时,正在运行的进程数量少于1。

[root@web1 ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 216916 236804 1901740    0    0     4   772    1    0  4  1 95  0  0
 0  0      0 217452 236804 1901780    0    0     0    10  945 1610  0  0 100  0  0
 0  0      0 217452 236804 1901996    0    0     0     2 1212 1794  2  1 98  0  0
 0  0      0 217252 236804 1902080    0    0     0     6  984 1664  1  0 99  0  0
 0  0      0 212912 236808 1902376    0    0     0    10 1333 1946  2  0 98  0  0

vmstat 是一种记录系统在一定负载或测试条件下行为的好方法。可以用 vmstat显示系统的行为,同时利用 Linux 的tee命令将结果输出到文件。如果只传递了参数 delay,vmstat就无限采样。在测试开始前启动 vmstat,测试结束后终止 vmstat。输出文件的形式可以是表格,并能够用于查看系统对负载和各种系统事件是如何反应的。下面给出了按照这个方法得到的输出。在这个例子中,我们可以查看到系统发生的中断和上下文切换。在in列和cs列能分别查看到中断和上下文切换的总数。

[root@web1 ~]# vmstat 1 | tee /home/output
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  1      0 200016 237340 1920316    0    0     4   772    0    0  4  1 95  0  0
 0  0      0 199768 237468 1920396    0    0   128     0  987 1667  1  0 99  0  0
 0  0      0 199768 237472 1920396    0    0     0    40  844 1551  0  1 99  0  0
 0  0      0 200768 237472 1920400    0    0     0     0  890 1578  0  0 99  0  0
 0  0      0 201908 237472 1920436    0    0     0     0 1187 1775  2  0 98  0  0
 0  0      0 196420 237472 1920556    0    0     0     0  995 1717  1  0 99  0  0
 0  0      0 196420 237476 1920596    0    0     0    44  832 1551  1  0 100  0  0
 0  0      0 190888 237480 1920740    0    0     0    40 1638 2253 10  5 86  1  0
 0  0      0 191648 237480 1920728    0    0     0     0  937 1592  1  0 100  0  0
 0  0      0 192124 237480 1920764    0    0     0     0  994 1656  1  0 99  0  0
 0  0      0 192652 237480 1920984    0    0     0     0 1237 1808  1  1 99  0  0

vmstat 甚至可以抽取各种统计数据更详细的信息,如下所示,现在来看 CPU 的统计信息。第一组数据,即 “CPU ticks”,显示的是自系统启动的 CPU 时间,这里的 “tick” 是一个时间单位。虽然精简的 vmstat 输出仅显示四个 CPU 状态——us、sy、id和wa,这里则显示了全部CPU ticks的分布情况。此外,我们还可以看到中断和上下文切换的总数。forks,它表示的是从系统启动开始,已经创建的新进程的数量。

[root@web1 ~]# vmstat -s
      3733576 K total memory
      1379900 K used memory
      2038516 K active memory
      1134608 K inactive memory
       189336 K free memory
       237772 K buffer memory
      1926568 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
    **124454312 non-nice user cpu ticks**
      **2825253 nice user cpu ticks**
     **20589294 system cpu ticks**
   **2837811966 idle cpu ticks**
       **373677 IO-wait cpu ticks**
            **0 IRQ cpu ticks**
      **4637515 softirq cpu ticks**
            **0 stolen cpu ticks**
    119936227 pages paged in
  23090840788 pages paged out
            0 pages swapped in
            0 pages swapped out
    **774353928 interrupts**
    **174242040 CPU context switches**
   1619503864 boot time
     **25287224 forks**

vmstat 提供了关于Linux系统性能的众多信息。在调查系统问题时,它是核心工具之一。

top

top 是 Linux 系统监控工具中的利刃。它善于将相当多的系统整体性能信息方在一个屏幕上。显示内容还能以交互的方式进行改变,因此,在系统运行时,如果一个特定的问题不断突显,可以修改top显示的信息。

默认情况下,top表现为一个将占用 CPU 最多的进程按降序排列的列表。这使得我们能够迅速找出哪个程序独占了 CPU。top 根据指定的延迟定期更新这个列表(其初始化值为3秒)。

CPU 性能相关的选项

top 用如下命令行调用:
top [-d delay] [-i] [n iter] [-b]

top 实际上有两种模式的选项:命令行选项和运行时选项。命令行选项决定 top 如何显示其信息。下表给出的命令行选项会影响 top 显示的性能统计信息的类型和频率。

										top 命令行选项
选项说明-d delay统计数据更新的时间间隔-n iterations退出当前的迭代次数。top 更新统计数据的次数为 iterations 次-i是否显示空闲进程-b以批处理模式运行。通常,top只显示单屏信息,超出该屏幕的进程不显示。该选项显示全部进程,如果要将top的输出保存为文件或将输出给另一个命令进行处理,那么该选项是很有用的

在允许top时,为了调查特定问题,我们可能想要对我们的观察略作调整。top输出的可定制性很高。下表给出的选项可以在 top 运行期间修改显示的统计信息:

								top运行时选项
选项说明A进程信息的“另一种”显示方式,其内容为各种系统资源最大的消耗者I选择 top 是否用系统中的 CPU 数量除以CPU 使用率f显示配置界面,选择在屏幕上显示哪些进程统计信息o显示一个配置界面,修改显示统计信息的顺序

下表给出的选项打开或关闭各种系统级信息的显示。关闭不需要统计信息有助于在屏幕显示更多进程。

									top 运行时输出切换选项
选项说明1切换 CPU 使用率是按独立使用率显示还是按总量显示i切换更新和显示平均负载以及正常运行时间信息t切换显示每个CPU消耗时间的情况。它还切换显示当前运行的进程数量。显示应用程序全部的独立线程,而不是显示每个应用程序的总数m在屏幕上切换显示系统内存使用信息。默认情况,最占用 CPU 的进程第一个显示。不过,按照其它特征排序可能更有用

下表对 top 支持的不同排序模式进行了说明。按内存消耗量排序尤其有用,它能找出哪个进程消耗了最多的内存。

									top 输出排序 / 显示选项
选项说明P按 CPU 消耗量对任务排序。最高的 CPU 用户第一个显示T按到目前为止使用的 CPU 时间总量对任务排序。总量最高的第一个显示N按任务的 PID 进行排序。PID 最低第一个显示A按任务时长进行排序。最新的 PID 第一个显示。通常与“按PID 排序”相反i隐藏空闲和不消耗 CPU 的任务
									top 性能统计信息
选项说明us用户应用程序消耗的 CPU 时间sy内核消耗的 CPU 时间ni修改过 “友的”值的进程消耗的 CPU 时间id空闲的 CPU 时间wa等待 I/O 的CPU 时间hiirq 处理程序消耗的CPU 时间sisoftirq 处理程序消耗的 CPU 时间load average1分钟、5分钟、15分钟的平均负载%CPU特定进程消耗 CPU 时间的百分比PRI进程优先级,值越大表示优先级越高。RT代表任务为实时优先级,该优先级高于标准范围NI进程的nice值。nice值越高,系统执行该进程的必要性就越低。对于具有高nice值的进程,通常其优先级会非常低WCHAN若进程在等待 I/O,该项显示其等待的是哪个内核函数S进程当前状态。睡眠状态(S),运行状态(R),僵尸状态(Z),不可中断的睡眠状态(D),或者跟踪状态(T)TIME自进程开始执行起已消耗的总的 CPU 时间(用户和系统)COMMAND进程正在执行的命令LC进程执行时最后使用的 CPU 编号FLAGS该项切换是否更新和显示平均负载与正常运行时间信息

top 提供了不同的正在运行进程的大量信息,是找出资源消耗大户的好方法。

procinfo(从/proc 文件系统显示信息)

就像vmstat一样,procinfo 为系统整体信息提供总览。尽管它提供的有些信息与vmstat相同,但它还会给出 CPU 从每个设备接收的中断数量。其输出格式的易读性比 vmstat 稍微强一点,但却会占用更多的屏幕空间。

CPU 性能相关的选项

procinfo 的调用命令行如下:

procinfo [-f] [-d] [-D] [-n sec] [-f file]

下表描述了不同的选项,用于修改procinfo显示样本的输出和评率。

											procinfo 命令行选项
选项说明-f全屏运行procinfo-d显示样本统计信息的变化,而非总和-D显示样本统计信息的总和,而非变化率-n sec样本之间停顿的秒数-F file将procinfo 的输出发送到文件
								procinfo CPU 统计信息
选项说明userCPU 花费的总的用户时间,形式为天、小时和分钟niceCPU 花费的总的友好时间,形式为天、小时和分钟systemCPU 花费的总的系统时间,形式为天、小时和分钟idleCPU 花费的总的空闲时间,形式为天、小时和分钟irq 0-N显示 irq编号,已经启动的次数,以及那个内核驱动程序应对其负责

和vmstat已经top一下,procinfo是一个低开销的命令,适合让其自行在控制台或屏幕窗口运行。它能够很好地反映系统的健康和性能。

mpstat(多处理器统计)

mpstat 是一个简单的命令,向我们展示随着时间变化的 CPU 行为。mpstat 最大的优势点是在统计信息的旁边显示时间,由此,我们可以找出 CPU 使用率与时间的关系。

如果有多个 CPU 或 超线程 CPU,mpstat 还能够把 CPU 使用率按处理器进行区分,因此我们可以发现与其他处理器相比,是否某个处理器做了更多的工作。可以选择想要监控的单个处理器,也可以要求 mpstat 对所有的处理器都进行监控。

CPU 性能相关选项

mpstat 可以用如下命令行调用:

mpstat [-P {cpu | ALL } ] [delay [count]]

和之前一样,delay指定了采样间隔,count指定了采样次数。下表解释了 mpstat 命令行选项的含义。

									mpstat 命令行选项
选项说明-P {cpu ALL}告诉mpstat监控哪个CPU,CPU 取值范围为0~(CPU 总数 -1)delay指明mpstat 在采样之间应等待的时长

mpstat 提供与其他 CPU 性能工具相似的信息,但是,它允许将信息按照特定系统中的单个处理器进行分类。下表给出了 mpstat 支持的选项。

									mpstat CPU 统计信息
选项说明user前一个采样中 CPU 消耗在用户时间上的百分比nice前一个采样中 CPU 执行低优先级(或 nice)进程消耗时间的百分比system前一个采样中 CPU 消耗在系统时间上的百分比iowait前一个采样中 CPU 等待 I/O 消耗时间的百分比irq前一个采样中 CPU 处理中断消耗时间的百分比softirq前一个采样中,中断处理后,内核完成所需工作消耗的 CPU 时间百分比idle前一个采样中 CPU空闲时间百分比

mpstat 是一种很好的工具,可以分类提供每个处理器的执行情况。由于 mpstat 给出了每个 CPU 的明细,因此我们可以识别是否有哪个处理器正逐渐出现超负载情况。

用法示列
[root@web1 ~]# mpstat -P ALL 1 2
Linux 4.18.0-147.5.1.el8_1.x86_64 (webim-service-mq) 	2021年10月19日 	_x86_64_	(4 CPU)

19时48分49秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
19时48分50秒  all    0.00    0.00    0.25    0.00    0.00    0.25    0.00    0.00    0.00   99.50
19时48分50秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
19时48分50秒    1    0.00    0.00    0.00    0.00    0.00    1.00    0.00    0.00    0.00   99.00
19时48分50秒    2    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
19时48分50秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

19时48分50秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
19时48分51秒  all    0.25    0.00    0.50    0.00    0.00    0.25    0.00    0.00    0.00   99.00
19时48分51秒    0    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   99.01
19时48分51秒    1    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
19时48分51秒    2    0.98    0.00    0.00    0.00    0.00    0.98    0.00    0.00    0.00   98.04
19时48分51秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均时间:  all    0.12    0.00    0.37    0.00    0.00    0.25    0.00    0.00    0.00   99.25
平均时间:    0    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
平均时间:    1    0.00    0.00    0.50    0.00    0.00    0.50    0.00    0.00    0.00   99.00
平均时间:    2    0.50    0.00    0.50    0.00    0.00    0.50    0.00    0.00    0.00   98.51
平均时间:    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
sar(系统活动报告)

sar 用另一种方法来收集系统数据。sar能有效地收集到的系统性能数据记录到二进制二级,之后,可以重播这些文件。sar是一种低开、记录系统执行情况信息的方法。

sar 命令可以用于记录性能信息,回放之前的记录信息,以及显示当前系统的实时信息。sar命令的输出可以进行格式,使之易于导入数据库,或是输送给其他Linux命令进行处理。

CPU 性能相关的选项

sar 可以使用如下命令行调用:

sar [options] [delay [count] ]
尽管 sar 的报告涉及 Linux 多个不同领域,其统计数据有两种不同的形式。一组统计数据是采样时的瞬时值。另一组则是自上一次采样后的变化值。下表解释了 sar 的命令行选项。

									sar 命令行选项
选项说明-c报告每秒创建的进程数量-I {irq SUM ALL XALL }报告系统已发生中断的速率-P {CPU ALL }报告系统已发生中断的速率-q报告机器的运行队列长度和平均负载-u报告系统的CPU 使用情况(该项未默认输出)-w报告系统中已发生的上下文切换次数-o filename指定保存性能统计信息的二进制输出文件名-f filename指定性能统计信息的文件名delay需等待的采用间隔时间count记录的样本总数

sar 提供的系统级 CPU 性能统计数据集与我们在进程工具中看到的类似(名字不同)。

									sar CPU 统计信息
选项说明user前一个采样中 CPU 消耗在用户时间上的百分比nice前一个采样中 CPU 执行低优先级(或nice)进程消耗时间的百分比system前一个采样中 CPU 消耗在系统时间上的百分比iowait前一个采样中 CPU 等待I/O 消耗时间百分比idle前一个采样中 CPU 空闲时间百分比runq-sz采样时,运行队列的长度plist-sz采样时的进程(运行、睡眠或等待I/O)数idavg-1前1分钟的平均负载idavg-5前5分钟的平均负载idavg-15前15分钟的平均负载proc/s每秒新建进程数(该项等同于 vmstat 中的 forks项)cswch每秒上下文切换次数intr/s每秒触发的中断次数

sar最显著的优势之一是,它使你能把不同类型时间戳系统数据保存到日志文件,以便日后检索和审查。当试图找出特定机器在特定时间出现故障的原因时,这个特性被证明是非常遍历的。

用法示例

下面的命令要求每秒有三个 CPU 采样,其结果保存到二进制文件。该命令没有任何可视化输出,完成即返回。

[root@web1]# sar -o /home/sar_test 1 3

保存到 /home/sar_test 文件后,我们就能以各种格式显示它。默认格式是可读,如下所示,下面显示与其他系统监控命令类似的信息,我们可以看出处理器在特定时间是如何消耗其时间的。

[root@web1]# sar -f /home/sar_test
Linux 4.18.0-147.5.1.el8_1.x86_64 (webim-service-mq) 	2021年10月20日 	_x86_64_	(4 CPU)

09时58分02秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
09时58分03秒     all      0.25      0.00      0.00      0.00      0.00     99.75
09时58分04秒     all      0.25      0.00      0.50      0.00      0.00     99.25
09时58分05秒     all      0.25      0.00      0.25      0.00      0.00     99.50
平均时间:     all      0.25      0.00      0.25      0.00      0.00     99.50 

sar,还可以将统计数据输出为一种轻松带入关系数据库的格式,如下所示。这有助于保存大量的性能数据。一旦将其导入到关系数据库,就可以用所有的关系数据库工具对这些性能数据进行分析。

[root@web1]# sar -f /home/sar_test -H
Linux 4.18.0-147.5.1.el8_1.x86_64 (webim-service-mq) 	2021年10月20日 	_x86_64_	(4 CPU)

09时58分02秒 kbhugfree kbhugused  %hugused
09时58分03秒         0         0      0.00
09时58分04秒         0         0      0.00
09时58分05秒         0         0      0.00
平均时间:         0         0      0.00

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/4002273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存