zonestat - 报告活动区域的统计信息
zonestat [-z zonelist ] [-r reslist] [ -n namelist] [-T u | d | i] [-R reports] [-q] [ -x] [-b brandlist] [-p [-P lines]] [-S cols] interval [ duration [report]]
zonestat 实用程序会报告当前正在运行的区域的 cpu、内存、网络和资源控制使用情况。对于每个区域的使用情况,都将报告系统资源百分比和区域所配置的限制两方面的内容。
zonestat 实用程序按指定的时间间隔输出一系列的间隔报告。它还可以按指定的时间间隔输出一个或多个摘要报告。
缺省输出是 cpu、物理内存、虚拟内存和网络使用情况的摘要。可使用 –r 选项为特定资源选择详细的输出。
在非全局区域 (NGZ) 内运行时,只会报告对 NGZ 可见的 pset。NGZ 输出中包括所有其他系统资源,例如内存和限制。
对于报告的所有资源,都会输出 NGZ 的使用情况。由系统、全局区域及所有其他区域使用的每个资源都会报告为由 [system] 使用。
在 solaris-kz 标记区域内,只有区域的使用情况是可见的。
对于网络资源,只会输出 NGZ 的使用情况。NGZ 对其他区域的网络资源和统计信息不具有可见性。
proc_info 特权是使用 zonestat 实用程序所必需的。该特权是基本特权集的成员。
支持以下选项:
指定要报告的资源名称的列表。对于 pset 资源,这是 pset 的名称。对于 physical-memory、locked-memory 和 virtual-memory 资源,可指定的名称只有 mem_default 和 vm_default。对于网络资源,这是数据链路的名称。
专用 CPU pset 可由其专用 CPU 池 pset 名称 (SYSzone_<zonename>) 指定或只由其区域名称指定。
psrset 创建的 pset 可以通过其 psrset 池 pset 名称 (SYSpsrset_<id>) 指定,也可以只通过其 pset ID 指定。
对于 sysstats 和 fsstats,属于它们的所有资源名称都可用作名称。在这种情况下,仅输出名称指定的列。请参见示例 7。
除了用逗号分隔的列表,还可以指定多个 –n 选项来报告一组资源。
可解析的输出。
以计算机可解析的稳定格式进行输出。各个字段以冒号 (:) 进行分隔。行的格式为:
report type:resource:field[:field]*
如果指定了 -T,每行会以时间戳作为前缀:
报告类型包括:report-total、report-average、report-high 和 interval。
资源类型包括:header、summary、physical-memory、virtual-memory、locked-memory、processor-set、processes、lwps、sysv-shared-memory、sysv-shmids、sysv-semids、sysv-msgids、lofi、network、sysstats、fsstats。
header 资源是用于声明间隔或摘要报告的开始的一个特殊资源。位于 header 资源之间的所有输出行都属于同一个报告。
其余字段是特定于资源类型的。有关详细信息,请参见 zonestat 实用程序。
所有现有的输出字段都是稳定的。将来的版本可能会引入新的报告和资源类型。将来的版本还可能会在现有输出 N 行的末尾添加其他新字段。
在全局区域中运行时,为 solaris-kz 标记区域提供的统计信息来自主机视角,可能与区域内的统计信息不同;请参见 solaris-kz(7)。
对于可解析的输出,指定要在可解析的输出中输出的行。可以选择下列行类型中的一个或多个:
每个间隔和摘要报告都包含一个 header,它输出诸如间隔和计数信息等方面的详细信息。
描述每个资源的行。
系统对每个资源的使用率。这包括内核和不是由特定区域消耗的任何资源。当 zonestat 在非全局区域内运行时,该值是系统和所有其他区域所消耗的总体资源。不支持网络资源类型的 system 使用情况。
每个资源的总使用率。
用于按区域详细列出每个资源的使用率的行。
静默模式。只输出摘要报告(需要 –R 选项)。将忽略所有间隔报告。
指定要报告的资源类型。可用的资源包括:physical-memory、virtual-memory、locked-memory、processor-set、processes、lwps、shm-memory、shm-ids、sem-ids、msg-ids、lofi、network、sysstats 和 fsstats。
特别要指出的是,sysstats 显示 syscall、fork、vfork、fork-fail、exec、semop 的总数,而 fsstats 显示读取调用数、写入调用数、rdwr() 读取的字节数、rdwr() 写入的字节数以及路径名查找数。
cpu、physical-memory、 virtual memory 和 network 使用情况的摘要。
physical-memory、virtual-memory 和 locked-memory。
processor-set
仅缺省的 pset。
processes、lwps、lofi 。
网络数据链路。
shm-memory、shm-ids、sem-ids msg-ids。
所有资源类型。
缺省情况下将输出 summary 资源。
除了以逗号分隔的列表,还可以指定多个 -r 选项来报告一组资源类型。
系统的 cpu 可以划分为 pset。缺省情况下,所有 cpu 都位于名为 pset_default 的单个 pset 中。
内存不能划分为不同的集。zonestat 实用程序针对这些资源的输出中将它们的名称显示为 mem_default 和 vm_default。
all 资源指定应该报告所有资源类型。
仅显示由此选项指定的标记。
列显一个摘要报告。下面介绍了支持的报告类型。除了以逗号分隔的列表,还可以指定多个 -R 选项以输出一组摘要报告。
列显为每个资源详细列出以下内容的摘要报告:
自启动命令调用以来所占用的总 cpu 时间。计算每个区域所占用的百分比时会考虑区域未运行的时间。例如,如果区域在运行时占用了 100% 的 cpu,但该区域运行时间间隔的一半后便停止,摘要报告便会显示该区域占用了 50% 的 cpu 时间。
自调用命令以来所报告的所有间隔的平均资源占用值。此平均值将区域未运行的时间间隔考虑在内。例如,如果某个区域在运行时占用的物理内存平均值为 100M,且只运行时间间隔的一半,摘要报告便会显示该区域平均占用了 50M 的物理内存。
由所有利用物理带宽的数据链路传输和接收的所有字节的总和。总和是自启动命令调用以来所计算的字节总数,并标准化为每秒的字节数。所使用的百分比基于总可用带宽。
对区域可见的所有 cpu 使用的资源总和。
与 total 类似,但只将区域运行的时间间隔考虑在内。例如,如果某个区域只在单个时间间隔内运行,且在该时间间隔内使用了 200M 虚拟内存,无论在该摘要报告之前报告了多少个时间间隔,其使用的平均虚拟内存都为 200M。
列显详细列出在调用 zonestat 实用程序的任何时间间隔内每个资源和区域的最高使用率的摘要报告。
对使用每个资源的区域进行排序。
可指定以下排序列:
按区域名称的字母数字顺序排序。
按所使用的资源数量排序。对于网络资源,这与按字节排序相同。
这是缺省值。
按所配置的上限排序。
按所使用的上限的百分比排序。
按所分配的份额排序。
按所使用的份额的百分比排序。
按传输和接收的总字节对网络资源进行排序。
按通过线路接收的字节百分比对网络资源进行排序。
按通过线路传输的字节百分比对网络资源进行排序。
按使用的带宽百分比对网络资源进行排序。
在摘要中按 cpu 使用率排序。这是缺省值。
在摘要中按物理内存的使用率排序。
在摘要中按虚拟内存的使用率排序。
在摘要中按网络使用率排序。
按使用的相应资源的数量排序。
在摘要中按网络使用率排序。
包含每个报告的时间戳。支持下列格式:
显示具有更多详细信息的扩展视图。例如,当与网络资源一起使用时,扩展视图会列出每个虚拟数据链路的详细信息。
指定要报告的区域的列表。缺省情况下会报告所有区域。
除了用逗号分隔的列表外,还可以指定多个 –z 选项来报告一组区域。输出中包括指定的区域使用过的任何资源。
支持下列操作数:
指定每个间隔报告之间暂停的时间长度(以秒为单位)。缺省时间间隔将使用为区域监视服务配置的时间间隔。请参见 zonestatd(8)。
interval 是必需的。interval 不能为零。interval 可以指定为 [nh][nm][ns],例如 10s 或 1m。
指定要报告的时间间隔数。如果未指定,则缺省使用 infinity。命令持续时间为 (interval * duration)。duration 不能为零。还可以指定一个 inf 值以显式选择 infinity。
还可以将 duration 指定为 [nh][ nm][ns]。在这种情况下,duration 被解释为执行时间的持续期。实际的 duration 会舍入到最接近的时间间隔倍数。
指定摘要报告周期。例如,report 为 4 时,每 4 个时间间隔生成一次报告。如果命令持续时间不是 report 的倍数,则最后一个报告为任何剩余时间间隔的内容。
还可以将 report 指定为 [n h][nm][ns]。在这种情况下,报告会按指定的时间段输出,并舍入到最近的时间间隔。如果命令 duration 不是 report 的倍数,则最后一个报告为任何剩余时间间隔的内容。
需要 –R。如果指定了 –R 但未指定 report,则报告周期为整个命令持续时间,即在命令执行结束时生成指定的报告。
以下列表定义了命令输出的列标题:
物理主机上可用的内存总量。
物理主机上可用的最大资源量。
分配给一个 pset 的 cpu 数量
在分配给 pset 的 cpu 中,可以执行进程的 CPU 数量。
可由系统分配给 pset 的 cpu 的最小数量和最大数量。
使用资源的区域。除了区域名称,此列还可以包含:
系统范围内使用的资源总量。
由内核使用的或以不与任何特定区域关联的方式使用的资源量。
当在非全局区域中使用 zonestat 时,[system] 指示由系统和所有其他区域使用的总体资源。
对于网络资源,不提供网络的系统使用情况。
所使用的资源量。
所使用的资源量占总资源的百分比。
从区域中窃取的 CPU 时间量。只有部分区域标记支持使用“窃取时间”。“窃取时间”的值反映因主机将 CPU 资源用于其他用途而导致区域无法运行的时间。有关“窃取时间”的更多信息,请参阅 solaris-kz(7)。
对于 [system] 行,报告当前系统的窃取时间。对于 [total] 行,报告当前系统的窃取时间与系统中所有区域的窃取时间之和。
窃取的 CPU 时间量,以可用 CPU 总时间的百分比表示。
使用的 CPU 量占该区域绑定到的处理器集中的总 cpu 的百分比。如果某个区域是全局区域,或者如果使用了 psrset(8)psets,则该区域只能将进程绑定到多个 pset。如果为某个区域找到了多个绑定,则 %PART 就是所使用的 cpu 量占所有绑定 psets 的百分比。对于 [total] 和 [system],%PART 是系统上所有 CPU 中使用的百分比。
如果为某个区域在指定资源配置了上限,则会在此列中显示该上限。
所使用的资源量占区域中配置的上限的百分比。
分配给区域的份额数量。对于 [total] 行,这是分配给共享此资源的所有区域的份额总数。如果某个区域未配置为使用份额,并且与配置为使用份额的其他区域共享某个资源,则此列会针对该区域包含 no-fss。
分配给此区域的份额占总份额的百分比。例如,2 个区域共享 1 个 pset,每个具有 10 个共享,则每个区域的 %SHR 为 50%。
在分配给区域的份额中,占资源的百分比为 100% 的份额。由于份额只会在存在资源争用时实施,因此区域可能具有超过 100% 的 %SHRU。
由数据链路或虚拟链路传输和接收的字节数。
消耗物理带宽的接收字节数。
消耗物理带宽的传输字节数。
用于接收 PRBYTE 的可用物理带宽百分比。
用于传输 POBYTE 的可用物理带宽百分比。
PRBYTE 和 POBYTE 的总和占总可用物理带宽的百分比。
数据链路的名称。
在数据链路上配置的最大带宽。
所有传输和接收的字节总和占配置的最大带宽的百分比。
每个资源名称使用的资源量。
以下命令会每隔 5 秒钟显示一次 cpu 和内存使用情况的摘要:
# zonestat 5 1 SUMMARY Cpus/Online: 4/4 Physical: 8063M Virtual: 11.8G ---CPU--- --PHYSMEM-- ---VMEM--- ---NET--- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 0.23 5.76% 3211M 39.8% 4191M 34.6% 350M 18.7% [system] 0.03 0.83% 2791M 34.6% 3890M 32.1% - - SUMMARY Cpus/Online: 48/48 PhysMem: 95.9G VirtMem: 99G ----------CPU---------- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART STLN %STLN USED %USED USED %USED PBYTE %PUSE\ [total] 2.04 4.27% 1.02 2.13% 29.4G 30.7% 31.1G 31.1% 228 0.00% [system] 0.00 0.00% - - 12.6G 13.2% 30.3G 30.3% - - global 0.03 0.07% - - 542M 0.55% 657M 0.64% 228 0.00% zoneA 0.00 0.03% - - 117M 0.11% 99M 0.09% 0 0.00% zoneB 1.99 99.9% 1.02 51.0% 8265M 8.41% 3092K 0.00% 0 0.00%示例 2 使用 zonestat 生成可解析的输出
以下命令生成可解析的输出。此命令以 5 秒的时间间隔为每个使用 pset 资源的区域输出一行:
# zonestat -p -P zones -r psets 5 1示例 3 使用 zonestat 针对缺省的 pset 进行报告
以下命令在一分钟的时间内每一秒针对缺省的 pset 报告一次:
# zonestat -r default-pset 1 1m示例 4 使用 zonestat 报告总使用率和最高使用率
以下命令在 24 个小时内以 10 秒的时间间隔静默监视,并每隔 1 小时生成总使用率和最高使用率报告:
# zonestat -q -R total,high 10s 24h 1h示例 5 使用 zonestat 报告数据链路使用率
以下命令以 5 秒的时间间隔对名为 e1000g0 的数据链路报告 5 次:
# zonestat -r network -n e1000g0 5 5示例 6 使用 zonestat 报告 sysstats
以下命令报告 sysstats。
$ zonestat -r sysstats 1 1 Collecting data for first interval... Interval: 1, Duration: 0:00:01 SYSSTATS ZONE syscall fork vfork fork-fail exec sema [total] 9043 4 0 0 0 0 [system] 0 0 0 0 0 0 a-zone 17 0 0 0 0 0 b-zone 1 0 0 0 0 0 global 9017 4 0 0 0 0 test-zone-1 8 0 0 0 0 0示例 7 使用 zonestat 仅报告 fork、exec 和 name-lookup 数
以下命令报告 fork、exec 和 name-lookup 数。
# zonestat -n fork,exec,name-lookup 1 1 Collecting data for first interval... Interval: 1, Duration: 0:00:01 SYSSTATS ZONE fork exec [total] 4 0 [system] 0 0 a-zone 0 0 b-zone 0 0 global 4 0 test-zone-1 0 0 FSSTATS ZONE name-lookup [total] 213 [system] 0 a-zone 0 b-zone 0 global 213 test-zone-1 0
将返回以下退出值:
成功完成。
出现错误。
用法无效。
svc:system/zones_monitoring:缺省情况下未运行或未响应。
有关下列属性的说明,请参见 attributes(7):
|
命令调用和可解析的输出是 "Committed"(已确定)。用户可读的输出(缺省输出)是 "Uncommitted"(未确定)。
date(1)、prctl(1)、time(2)、timezone(5)、attributes(7)、privileges(7)、resource-controls(7)、solaris-kz(7)、pooladm(8)、poolcfg(8)、psrset(8)、rcapadm(8)、zoneadm(8)、zonecfg(8)、zonestatd(8)
zonestat 实用程序依赖于区域监视服务:svc/system/zonestat:default。如果运行 zonestat 实用程序时 zonestat 服务停止,则 zonestat 命令调用将退出,且不再输出任何报告。如果在到达下一个报告周期之前,zonestat 被(CTRL/c、SIGINT)中断,则会输出报告 (–R)。