跳过导航链接 | |
退出打印视图 | |
系统管理指南:高级管理 Oracle Solaris 10 8/11 Information Library (简体中文) |
组织并查看有关系统活动的数据。
根据特殊请求访问系统活动数据。
生成自动报告以测量和监视系统性能,并生成特殊请求报告以确定特定性能问题。有关如何设置要在系统上运行的 sar 命令的信息以及相应工具的说明,请参见自动收集系统活动数据 (sar)。
有关此命令的详细说明,请参见 sar(1) 手册页。
$ sar -a SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:00 iget/s namei/s dirbk/s 01:00:00 0 3 0 02:00:00 0 3 0 03:00:00 0 3 0 04:00:00 0 3 0 05:00:00 0 3 0 06:00:00 0 3 0 07:00:00 0 3 0 08:00:00 0 3 0 08:20:01 0 3 0 08:40:00 0 3 0 09:00:00 0 3 0 09:20:01 0 10 0 09:40:01 0 1 0 10:00:02 0 5 0 Average 0 4 0
以下列表介绍了 sar -a 命令报告的操作系统例程的字段名和说明。
对不位于目录名称查找高速缓存 (Directory Name Look-up Cache, DNLC) 中的 inode 发出的请求数。
每秒搜索的文件系统路径数。如果 namei 在 DNLC 中找不到目录名称,它会调用 iget 以获取文件或目录的 inode。因此,大多数 igets 都是 DNLC 遗漏的结果。
每秒发出的目录块读取数。
这些操作系统例程的报告值越大,内核访问用户文件所用的时间就越多。时间的长短将反映程序和应用程序使用文件系统的程度。-a 选项有助于查看磁盘与应用程序的相关情况。
缓冲区用于高速缓存元数据。元数据包括 inode、柱面组块和间接块。
$ sar -b 00:00:00 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s 01:00:00 0 0 100 0 0 55 0 0
示例 13-5 检查缓冲区活动 (sar -b)
下面的 sar -b 命令输出示例说明 %rcache 和 %wcache 缓冲区未引起速率下降。所有数据都在可接受的限制范围内。
$ sar -b SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s 01:00:00 0 0 100 0 0 94 0 0 02:00:01 0 0 100 0 0 94 0 0 03:00:00 0 0 100 0 0 92 0 0 04:00:00 0 1 100 0 1 94 0 0 05:00:00 0 0 100 0 0 93 0 0 06:00:00 0 0 100 0 0 93 0 0 07:00:00 0 0 100 0 0 93 0 0 08:00:00 0 0 100 0 0 93 0 0 08:20:00 0 1 100 0 1 94 0 0 08:40:01 0 1 100 0 1 93 0 0 09:00:00 0 1 100 0 1 93 0 0 09:20:00 0 1 100 0 1 93 0 0 09:40:00 0 2 100 0 1 89 0 0 10:00:00 0 9 100 0 5 92 0 0 10:20:00 0 0 100 0 0 68 0 0 10:40:00 0 1 98 0 1 70 0 0 11:00:00 0 1 100 0 1 75 0 0 Average 0 1 100 0 1 91 0 0
下表介绍了 -b 选项显示的缓冲区活动。
|
最重要的项是高速缓存命中率 %rcache 和 %wcache。这两项用于度量系统缓冲的有效性。如果 %rcache 低于 90% 或者 %wcache 低于 65%,则可通过增加缓冲区空间来改善性能。
$ sar -c 00:00:00 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s 01:00:00 38 2 2 0.00 0.00 149 120
示例 13-6 检查系统调用统计信息 (sar -c)
以下示例显示 sar -c 命令的输出。
$ sar -c SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s 01:00:00 89 14 9 0.01 0.00 2906 2394 02:00:01 89 14 9 0.01 0.00 2905 2393 03:00:00 89 14 9 0.01 0.00 2908 2393 04:00:00 90 14 9 0.01 0.00 2912 2393 05:00:00 89 14 9 0.01 0.00 2905 2393 06:00:00 89 14 9 0.01 0.00 2905 2393 07:00:00 89 14 9 0.01 0.00 2905 2393 08:00:00 89 14 9 0.01 0.00 2906 2393 08:20:00 90 14 9 0.01 0.01 2914 2395 08:40:01 90 14 9 0.01 0.00 2914 2396 09:00:00 90 14 9 0.01 0.01 2915 2396 09:20:00 90 14 9 0.01 0.01 2915 2396 09:40:00 880 207 156 0.08 0.08 26671 9290 10:00:00 2020 530 322 0.14 0.13 57675 36393 10:20:00 853 129 75 0.02 0.01 10500 8594 10:40:00 2061 524 450 0.08 0.08 579217 567072 11:00:00 1658 404 350 0.07 0.06 1152916 1144203 Average 302 66 49 0.02 0.01 57842 55544
下表介绍了 -c 选项报告的系统调用类别。通常,读取和写入占系统调用总数的一半。但是,该百分比会因系统所执行的活动而产生极大的变化。
|
$ sar -d 00:00:00 device %busy avque r+w/s blks/s avwait avserv
示例 13-7 检查磁盘活动
此缩写示例演示了 sar -d 命令的输出。
$ sar -d SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 12:36:32 device %busy avque r+w/s blks/s avwait avserv 12:40:01 dad1 15 0.7 26 399 18.1 10.0 dad1,a 15 0.7 26 398 18.1 10.0 dad1,b 0 0.0 0 1 1.0 3.0 dad1,c 0 0.0 0 0 0.0 0.0 dad1,h 0 0.0 0 0 0.0 6.0 fd0 0 0.0 0 0 0.0 0.0 nfs1 0 0.0 0 0 0.0 0.0 nfs2 1 0.0 1 12 0.0 13.2 nfs3 0 0.0 0 2 0.0 1.9 nfs4 0 0.0 0 0 0.0 7.0 nfs5 0 0.0 0 0 0.0 57.1 nfs6 1 0.0 6 125 4.3 3.2 nfs7 0 0.0 0 0 0.0 6.0 sd1 0 0.0 0 0 0.0 5.4 ohci0,bu 0 0.0 0 0 0.0 0.0 ohci0,ct 0 0.0 0 0 0.0 0.0 ohci0,in 0 0.0 7 0 0.0 0.0 ohci0,is 0 0.0 0 0 0.0 0.0 ohci0,to 0 0.0 7 0 0.0 0.0
下表介绍了 -d 选项报告的磁盘设备活动。
|
请注意,在队列不为空时测量队列长度和等待时间。当 %busy 很小时,如果队列和服务时间很大,则可能表示系统进行周期性的努力,以确保将警报块快速写入磁盘。
$ sar -g 00:00:00 pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf 01:00:00 0.00 0.00 0.00 0.00 0.00
sar -g 命令的输出可以明确指示是否需要更多内存。使用 ps -elf 命令显示 page 守护程序使用的周期数。如果周期数很大,并且 pgfree/s 和 pgscan/s 字段的值也很大,则表明内存不足。
sar -g 命令还可表明是否回收 inode 的速率过快而引起可重用页丢失。
示例 13-8 检查页出和内存 (sar -g)
以下示例显示 sar -g 命令的输出。
$ sar -g SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:00 pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf 01:00:00 0.00 0.00 0.00 0.00 0.00 02:00:00 0.01 0.01 0.01 0.00 0.00 03:00:00 0.00 0.00 0.00 0.00 0.00 04:00:00 0.00 0.00 0.00 0.00 0.00 05:00:00 0.00 0.00 0.00 0.00 0.00 06:00:00 0.00 0.00 0.00 0.00 0.00 07:00:00 0.00 0.00 0.00 0.00 0.00 08:00:00 0.00 0.00 0.00 0.00 0.00 08:20:01 0.00 0.00 0.00 0.00 0.00 08:40:00 0.00 0.00 0.00 0.00 0.00 09:00:00 0.00 0.00 0.00 0.00 0.00 09:20:01 0.05 0.52 1.62 10.16 0.00 09:40:01 0.03 0.44 1.47 4.77 0.00 10:00:02 0.13 2.00 4.38 12.28 0.00 10:20:03 0.37 4.68 12.26 33.80 0.00 Average 0.02 0.25 0.64 1.97 0.00
下表介绍了 -g 选项的输出。
|
KMA 允许内核子系统根据需要分配和释放内存。
KMA 并不是静态分配在峰值载荷下预计所需的最大内存量,而是将内存请求划分为三个类别:
小型(少于 256 字节)
大型(512 字节至 4 千字节)
超大型(大于 4 千字节)
KMA 保留两个内存池,以满足小型和大型请求。超大型请求则通过从系统页面分配器中分配内存来满足。
如果您所检查的系统用来编写使用 KMA 资源的驱动程序或 STREAMS,则 sar -k 命令可能很有用。否则,您可能不需要它所提供的信息。使用 KMA 资源但不一定在退出前返回资源的所有驱动程序或模块都可能产生内存泄漏。内存泄漏会导致 KMA 分配的内存量随事件而增加。因此,如果 sar -k 命令的 alloc 字段随时间稳定增加,则可能存在内存泄漏。表明存在内存泄漏的另一种情况是请求失败。如果出现此问题,内存泄漏很可能导致 KMA 无法保留和分配内存。
如果似乎存在内存泄漏,则应检查可能从 KMA 请求内存但未返回内存的所有驱动程序或 STREAMS。
$ sar -k 00:00:00 sml_mem alloc fail lg_mem alloc fail ovsz_alloc fail 01:00:00 2523136 1866512 0 18939904 14762364 0 360448 0 02:00:02 2523136 1861724 0 18939904 14778748 0 360448 0
示例 13-9 检查内核内存分配 (sar -k)
下面是 sar -k 输出的缩写示例。
$ sar -k SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 sml_mem alloc fail lg_mem alloc fail ovsz_alloc fail 01:00:00 6119744 4852865 0 60243968 54334808 156 9666560 0 02:00:01 6119744 4853057 0 60243968 54336088 156 9666560 0 03:00:00 6119744 4853297 0 60243968 54335760 156 9666560 0 04:00:00 6119744 4857673 0 60252160 54375280 156 9666560 0 05:00:00 6119744 4858097 0 60252160 54376240 156 9666560 0 06:00:00 6119744 4858289 0 60252160 54375608 156 9666560 0 07:00:00 6119744 4858793 0 60252160 54442424 156 9666560 0 08:00:00 6119744 4858985 0 60252160 54474552 156 9666560 0 08:20:00 6119744 4858169 0 60252160 54377400 156 9666560 0 08:40:01 6119744 4857345 0 60252160 54376880 156 9666560 0 09:00:00 6119744 4859433 0 60252160 54539752 156 9666560 0 09:20:00 6119744 4858633 0 60252160 54410920 156 9666560 0 09:40:00 6127936 5262064 0 60530688 55619816 156 9666560 0 10:00:00 6545728 5823137 0 62996480 58391136 156 9666560 0 10:20:00 6545728 5758997 0 62996480 57907400 156 9666560 0 10:40:00 6734144 6035759 0 64389120 59743064 156 10493952 0 11:00:00 6996288 6394872 0 65437696 60935936 156 10493952 0 Average 6258044 5150556 0 61138340 55609004 156 9763900 0
下表介绍了 -k 选项的输出。
|
$ sar -m 00:00:00 msg/s sema/s 01:00:00 0.00 0.00
除非运行使用消息或信号的应用程序,否则这些数字通常都为零 (0.00)。
以下列表介绍了 -m 选项的输出。
每秒的消息操作(发送和接收)数
每秒的信号操作数
示例 13-10 检查进程间通信 (sar -m)
以下缩写示例显示 sar -m 命令的输出。
$ sar -m SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:00 msg/s sema/s 01:00:00 0.00 0.00 02:00:02 0.00 0.00 03:00:00 0.00 0.00 04:00:00 0.00 0.00 05:00:01 0.00 0.00 06:00:00 0.00 0.00 Average 0.00 0.00
$ sar -p 00:00:00 atch/s pgin/s ppgin/s pflt/s vflt/s slock/s 01:00:00 0.07 0.00 0.00 0.21 0.39 0.00
示例 13-11 检查页入活动 (sar -p)
以下示例显示 sar -p 命令的输出。
$ sar -p SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 atch/s pgin/s ppgin/s pflt/s vflt/s slock/s 01:00:00 0.09 0.00 0.00 0.78 2.02 0.00 02:00:01 0.08 0.00 0.00 0.78 2.02 0.00 03:00:00 0.09 0.00 0.00 0.81 2.07 0.00 04:00:00 0.11 0.01 0.01 0.86 2.18 0.00 05:00:00 0.08 0.00 0.00 0.78 2.02 0.00 06:00:00 0.09 0.00 0.00 0.78 2.02 0.00 07:00:00 0.08 0.00 0.00 0.78 2.02 0.00 08:00:00 0.09 0.00 0.00 0.78 2.02 0.00 08:20:00 0.11 0.00 0.00 0.87 2.24 0.00 08:40:01 0.13 0.00 0.00 0.90 2.29 0.00 09:00:00 0.11 0.00 0.00 0.88 2.24 0.00 09:20:00 0.10 0.00 0.00 0.88 2.24 0.00 09:40:00 2.91 1.80 2.38 4.61 17.62 0.00 10:00:00 2.74 2.03 3.08 8.17 21.76 0.00 10:20:00 0.16 0.04 0.04 1.92 2.96 0.00 10:40:00 2.10 2.50 3.42 6.62 16.51 0.00 11:00:00 3.36 0.87 1.35 3.92 15.12 0.00 Average 0.42 0.22 0.31 1.45 4.00 0.00
下表介绍了通过 -p 选项报告的统计信息。
|
队列被占用时的平均队列长度。
队列处于占用状态的时间百分比。
$ sar -q 00:00:00 runq-sz %runocc swpq-sz %swpocc
以下列表介绍了 -q 选项的输出。
内存中等待 CPU 以便运行的内核线程数。通常,此值应小于 2。如果此值持续偏高,则表明系统可能计算密集 (CPU-bound)。
占用分发队列的时间百分比。
换出进程的平均数量。
换出进程所占时间百分比。
示例 13-12 检查队列活动
以下示例显示 sar -q 命令的输出。如果 %runocc 值较大(大于 90%)并且 runq-sz 值大于 2,则表明 CPU 负载较大,并且响应变慢。在此情况下,可能需要提供附加的 CPU 容量,才能获得可接受的系统响应速度。
# sar -q SunOS system2 5.10 Generic_142909-13 sun4u 06/28/2010 00:00:00 runq-sz %runocc swpq-sz %swpocc 01:00:00 1.0 7 0.0 0 02:00:00 1.0 7 0.0 0 03:00:00 1.0 7 0.0 0 04:00:00 1.0 7 0.0 0 05:00:00 1.0 6 0.0 0 06:00:00 1.0 7 0.0 0 Average 1.0 7 0.0 0
$ sar -r 00:00:00 freemem freeswap 01:00:00 2135 401922
以下列表介绍了 -r 选项的输出:
在该命令采样的时间间隔内可供用户进程使用的平均内存页数。页面大小与计算机有关。
可用于页交换的 512 字节磁盘块数。
示例 13-13 检查未使用的内存 (sar -r)
以下示例显示 sar -r 命令的输出。
$ sar -r SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 freemem freeswap 01:00:00 44717 1715062 02:00:01 44733 1715496 03:00:00 44715 1714746 04:00:00 44751 1715403 05:00:00 44784 1714743 06:00:00 44794 1715186 07:00:00 44793 1715159 08:00:00 44786 1714914 08:20:00 44805 1715576 08:40:01 44797 1715347 09:00:00 44761 1713948 09:20:00 44802 1715478 09:40:00 41770 1682239 10:00:00 35401 1610833 10:20:00 34295 1599141 10:40:00 33943 1598425 11:00:00 30500 1561959 Average 43312 1699242
$ sar -u 00:00:00 %usr %sys %wio %idle 01:00:00 0 0 0 100
没有任何选项的 sar 命令与 sar -u 命令等效。在任意给定时刻,处理器都会处于繁忙或空闲状态。繁忙时,处理器可能处于用户模式或系统模式。空闲时,处理器可能在等待 I/O 完成,或“静止”而不执行任何操作。
以下列表介绍了 -u 选项的输出:
列出处理器处于用户模式的时间百分比。
列出处理器处于系统模式的时间百分比。
列出处理器空闲并等待 I/O 完成的时间百分比。
列出处理器空闲并且未等待 I/O 的时间百分比。
%wio 值越大,通常表示磁盘速率变慢。
示例 13-14 检查 CPU 使用率 (sar -u)
以下示例显示 sar -u 命令的输出。
$ sar -u SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 %usr %sys %wio %idle 01:00:00 0 0 0 100 02:00:01 0 0 0 100 03:00:00 0 0 0 100 04:00:00 0 0 0 100 05:00:00 0 0 0 100 06:00:00 0 0 0 100 07:00:00 0 0 0 100 08:00:00 0 0 0 100 08:20:00 0 0 0 99 08:40:01 0 0 0 99 09:00:00 0 0 0 99 09:20:00 0 0 0 99 09:40:00 4 1 0 95 10:00:00 4 2 0 94 10:20:00 1 1 0 98 10:40:00 18 3 0 79 11:00:00 25 3 0 72 Average 2 0 0 98
$ sar -v 00:00:00 proc-sz ov inod-sz ov file-sz ov lock-sz 01:00:00 43/922 0 2984/4236 0 322/322 0 0/0
示例 13-15 检查系统表状态 (sar -v)
以下缩写示例显示 sar -v 命令的输出。此示例表明,所有表都足够大,因此没有溢出。这些表都基于物理内存量进行动态分配。
$ sar -v SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 proc-sz ov inod-sz ov file-sz ov lock-sz 01:00:00 69/8010 0 3476/34703 0 0/0 0 0/0 02:00:01 69/8010 0 3476/34703 0 0/0 0 0/0 03:00:00 69/8010 0 3476/34703 0 0/0 0 0/0 04:00:00 69/8010 0 3494/34703 0 0/0 0 0/0 05:00:00 69/8010 0 3494/34703 0 0/0 0 0/0 06:00:00 69/8010 0 3494/34703 0 0/0 0 0/0 07:00:00 69/8010 0 3494/34703 0 0/0 0 0/0 08:00:00 69/8010 0 3494/34703 0 0/0 0 0/0 08:20:00 69/8010 0 3494/34703 0 0/0 0 0/0 08:40:01 69/8010 0 3494/34703 0 0/0 0 0/0 09:00:00 69/8010 0 3494/34703 0 0/0 0 0/0 09:20:00 69/8010 0 3494/34703 0 0/0 0 0/0 09:40:00 74/8010 0 3494/34703 0 0/0 0 0/0 10:00:00 75/8010 0 4918/34703 0 0/0 0 0/0 10:20:00 72/8010 0 4918/34703 0 0/0 0 0/0 10:40:00 71/8010 0 5018/34703 0 0/0 0 0/0 11:00:00 77/8010 0 5018/34703 0 0/0 0 0/0
下表介绍了 -v 选项的输出。
|
$ sar -w 00:00:00 swpin/s bswin/s swpot/s bswot/s pswch/s 01:00:00 0.00 0.0 0.00 0.0 22
以下列表介绍了 sar -w 命令输出的目标值和观测值。
每秒传入内存的 LWP 数。
每秒为换入传送的块数 /* (float)PGTOBLK(xx->cvmi.pgswapin) / sec_diff */。
每秒换出内存的平均进程数。如果该数字大于 1,则可能需要增大内存。
每秒为换出传送的块数。
每秒的内核线程切换数。
注 - 所有进程换入都包括进程初始化。
示例 13-16 检查交换活动 (sar -w)
以下示例显示 sar -w 命令的输出。
$ sar -w SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 swpin/s bswin/s swpot/s bswot/s pswch/s 01:00:00 0.00 0.0 0.00 0.0 132 02:00:01 0.00 0.0 0.00 0.0 133 03:00:00 0.00 0.0 0.00 0.0 133 04:00:00 0.00 0.0 0.00 0.0 134 05:00:00 0.00 0.0 0.00 0.0 133 06:00:00 0.00 0.0 0.00 0.0 133 07:00:00 0.00 0.0 0.00 0.0 132 08:00:00 0.00 0.0 0.00 0.0 131 08:20:00 0.00 0.0 0.00 0.0 133 08:40:01 0.00 0.0 0.00 0.0 132 09:00:00 0.00 0.0 0.00 0.0 132 09:20:00 0.00 0.0 0.00 0.0 132 09:40:00 0.00 0.0 0.00 0.0 335 10:00:00 0.00 0.0 0.00 0.0 601 10:20:00 0.00 0.0 0.00 0.0 353 10:40:00 0.00 0.0 0.00 0.0 747 11:00:00 0.00 0.0 0.00 0.0 804 Average 0.00 0.0 0.00 0.0 198
$ sar -y 00:00:00 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s 01:00:00 0 0 0 0 0 0
如果有多个终端 I/O,则可使用此报告来确定是否存在任何错误行。以下列表中定义了记录的活动。
每秒输入字符数(原始队列)。
canon(规则队列)每秒处理的输入字符数。
每秒输出字符数(输出队列)。
每秒接收器硬件中断次数。
每秒传送器硬件中断次数。
每秒调制解调器中断次数。
每秒调制解调器中断次数 (mdmin/s) 应接近于零。每秒的接收和传送中断次数(rcvin/s 和 xmtin/s)应分别小于或等于传入或传出字符数。否则,请检查是否存在错误行。
示例 13-17 检查终端活动 (sar -y)
以下示例显示 sar -y 命令的输出。
$ sar -y SunOS balmyday 5.10 s10_51 sun4u 03/18/2004 00:00:04 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s 01:00:00 0 0 0 0 0 0 02:00:01 0 0 0 0 0 0 03:00:00 0 0 0 0 0 0 04:00:00 0 0 0 0 0 0 05:00:00 0 0 0 0 0 0 06:00:00 0 0 0 0 0 0 07:00:00 0 0 0 0 0 0 08:00:00 0 0 0 0 0 0 08:20:00 0 0 0 0 0 0 08:40:01 0 0 0 0 0 0 09:00:00 0 0 0 0 0 0 09:20:00 0 0 0 0 0 0 09:40:00 0 0 1 0 0 0 10:00:00 0 0 37 0 0 0 10:20:00 0 0 0 0 0 0 10:40:00 0 0 3 0 0 0 11:00:00 0 0 3 0 0 0 Average 0 0 1 0 0 0