Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

trapstat(8)

名前

trapstat - トラップ統計の報告

形式

/usr/sbin/trapstat [-t | -T | -e entry] 
     [-C processor_set_id | -c cpulist] [-P] [-a]
     [-A cor|soc|bins [-m]] [-k keys] [-o num]
     [-r rate | [interval [count]] | command | [args]...]
/usr/sbin/trapstat -O statfile [-t | -T | -e entry
     [-C processor_set_id | -c cpulist] [-a]
     [-r rate | [interval [count]] | command [args]...]
/usr/sbin/trapstat -I statfile
      [-A cor|soc|bins [-m]] [-k keys] [-o num]
/usr/sbin/trapstat -l [-P] [-t | -T]

説明

trapstat ユーティリティーは、UltraSPARC ベースシステムの実行時のトラップ統計を収集して表示します。デフォルトの出力は、トラップタイプと CPU ID から成るテーブルであり、テーブルの各行がトラップタイプを示し、テーブルの各列が CPU を示します。標準出力が端末の場合、テーブルには端末の幅にちょうど収まるだけの数の列のデータが含まれ、標準出力が端末以外の場合、テーブルには最大で 6 列のデータが含まれます。デフォルトでは、すべての CPU のデータが収集され表示されます。データが 1 つのテーブルに収まらない場合は、複数のテーブルにまたがって出力されます。データの収集および表示の対象となる CPU のセットは、必要に応じて –c または –C オプションを使って指定できます。

–r オプション、–a オプション、またはコマンド引数が指定されていないかぎり、テーブルの各エントリに表示される値は 1 秒あたりのトラップ数に相当します。–r オプションが指定されている場合、その値は指定されたサンプリングレートで示される間隔でのトラップ数に相当します。–a オプションが指定されている場合、その値は trapstat が呼び出された以降に累積されたトラップ数に相当します。コマンド引数が指定されている場合、その値はコマンドの存続期間全体にわたって累計されたトラップ数に相当します。

デフォルトでは、trapstat は 1 秒間に 1 回データを表示し、永久に実行されます。この動作は、必要に応じて –r オプションまたは interval および count パラメータで制御できます。–r オプション引数は、データをサンプリングして表示する速度を 1 秒あたりの回数で指定します。interval は秒単位で指定され、count は終了までに実行される間隔の数を示します。あるいは、command を指定することもできます。この場合、trapstat は指定されたコマンドを実行し、そのコマンドが終了するまで実行し続けたあと、累積されたデータを表示します。interval は正の整数を取ります。目的の command が整数と区別できない場合は、command のフルパスを指定する必要があります。–rinterval、または command のいずれか 1 つのみを使用できます。

UltraSPARC システムでは、オペレーティングシステムをトラップすることで、トランスレーションルックアサイドバッファー (TLB) ミスを処理できます。TLB ミスのトラップは、一部のワークロードの全体的なシステムパフォーマンスの重要なコンポーネントになることがあります。–t オプションはこれらのトラップに関する詳細な情報を提供します。このオプションを使って trapstat を実行すると、TLB ミスのトラップの比率とそれらのトラップの処理に費やされる時間の割合の両方が表示されます。また、変換格納バッファー (TSB) 内でヒットする TLB ミスは、TSB 内でさらにミスする TLB ミスと区別されます。(TSB とは、TLB を迅速に満たすことができるように変換エントリキャッシュとして使用されるソフトウェア構造です。これについては、『UltraSPARC II User's Manual』に詳しく説明されています。)TLB および TSB ミス情報は、さらにユーザーモードおよびカーネルモードのミスに分けられます。

TLB リーチを超えるワーキングセットを使用するワークロードは、TLB でのミスにかなりの時間を費やす可能性があります。そのようなワークロードに対応するために、オペレーティングシステムは複数のページサイズをサポートしています。ページサイズが大きいほど、実質的な TLB リーチが増え、それによって TLB ミスの数が減ります。ページサイズと TLB ミス率との関係を理解する上での手掛かりとなるように、trapstat では必要に応じて –T オプションを使用して、ページサイズごとに分類された詳細な TLB ミス情報を提供します。–T オプションによって提供される情報は、–t オプションによって提供される上位集合です。–t–T のいずれかのみを指定できます。

オプション

サポートしているオプションは、次のとおりです。

–a

秒ごとまたは間隔ごとの率ではなく、単調に増えていく累積値としてトラップ数を表示します。

–A cor

出力をコア ID で集計します。同じコア ID のデータ行は、1 行に集計されます。デフォルトでは、列は小計で置き換えられます。–m オプションでは、代わりに列の平均を出力します。

–A soc

出力をソケット ID で集計します。同じソケット ID のデータ行は、1 行に集計されます。デフォルトでは、列は小計で置き換えられます。–m オプションでは、代わりに列の平均を出力します。

–A bins

各サンプリング期間内で少ない方の数のビンに列を集計して、表示される順にグループ化します。小計ではなく算術平均を計算するには、–m オプションを使用できます。–k ソートオプションを使用して、ビン化の段階の前に行の順序を変更できます。

ID 別の集計 (–A cor|soc) は、ソート (–k) 前に処理されます。bin 別のグループ化 (–A bins) が次に行われます。最後に、間隔ごとに表示される出力行の数は、–o によって制限されることがあります。

–c cpulist

cpulist によって指定された CPU でのみ trapstat を有効にします。

cpulist は、単一のプロセッサ ID (4 など)、一連のプロセッサ ID (4-6 など)、またはコンマで区切られたプロセッサ ID またはプロセッサ ID の範囲のリスト (4,5,6 または 4,6-8 など) にできます。

–C processor_set_id

processor_set_id によって指定されたプロセッサセット内の CPU でのみ trapstat を有効にします。

trapstat は、指定されたプロセッサセット内の CPU が必ず反映されるようにその出力を変更します。CPU がそのセットに追加された場合、trapstat はその追加された CPU が含まれるようにその出力を変更します。CPU がそのセットから削除された場合、trapstat はその削除された CPU が除外されるようにその出力を変更します。指定できるプロセッサセットは最大 1 つです。

–e entrylist

entrylist によって指定されたトラップテーブルエントリに対してのみ trapstat を有効にします。トラップテーブルエントリは、トラップ番号またはトラップ名によって指定できます (たとえば、level–10 のトラップは 740x4A0x4a、または level-10 として指定できます)。

entrylist は、単一のトラップテーブルエントリまたはコンマで区切られたトラップテーブルエントリのリストにできます。指定されたトラップテーブルエントリが有効でない場合、trapstat は有効なすべてのトラップテーブルエントリのテーブルを名前と値で出力します。有効なトラップテーブルエントリの一覧は、『The SPARC Architecture Manual, Version 9』および『Sun Microelectronics UltraSPARC II User's Manual』にも記載されています。–e オプションに加えて、解析可能オプション (–P) も指定した場合、データの形式は –P オプションの説明で指定されているとおりです。

–I statfile

以前に statfile 内に保存したデータを再実行します。–O を指定して、再実行用のデータファイルを作成します。このオプションが特に役立つのは、多数の CPU を搭載したマシンの統計情報を分析する場合です。ファイルは、異なるソートおよび集計オプションを使用して何度も再処理されることがあります。

データの解釈に役立つように、データの収集に使われた元のコマンドが出力のいちばん上に表示されます (–P が指定されている場合を除く)。

–I オプションには、–O–T–t–e–c–C–a、および –r オプションとの互換性がありません。それを interval および count 指定または command パラメータとともには使用できません。

–k key1,...

各サンプリング期間内の行を、key1、次に key2、という具合に最上位から最下位へとソートします。各鍵には、level-10u-itlb-miss などの任意の列ヘッダーを trapstat 出力で指定できます。

trapstat –l を使用してすべてのイベント名を表示します。–lt または –lT を使用して、TLB 形式の鍵名を表示します。解析可能なリストでは、–l–P とともに使用します。

–l

トラップテーブルエントリを一覧表示します。デフォルトでは、すべての有効なトラップ番号、その名前、および簡単な説明を含むテーブルが表示されます。トラップ名は、デフォルトの出力と、–e 引数の entrylist パラメータの両方で使用されます。–l オプションに加えて、解析可能オプション (–P) も指定した場合、データの形式は次のとおりです。

フィールド
内容
1
トラップ番号 (16 進数)
2
トラップ番号 (10 進数)
3
トラップ名
残り
トラップの説明

最初の 3 つのフィールドは空白で区切られます。最後のフィールドには空白を含めることができます。この形式が変更される場合は、既存のフィールドとの互換性が維持されます。

–l のほかの使用法については、–k–t、および –T オプションを参照してください。

–m

複数の CPU 上のデータの集計に –A オプションが使用される場合に、合計ではなく算術平均値を表示します。

–o num

ソートおよびアグリゲーションオプションの適用後に、各サンプリング期間内の最初の num 行のみを表示します。

–O statfile

収集されたデータを statfile に保存します。このデータは、–I を使用してあとで再実行できます。

ファイル名が (ハイフン) の場合、標準出力に書き込みます。

–O の目的は、指定された全データを取得することです。これには、データ整理オプション: –A–k–m、および –o との互換性はありません。statfile 形式は固定であるため、–P オプションを –O とともに使用することはできません。

–P

解析可能な出力を生成します。ほかのデータ収集変更オプション (つまり、–t または –T) を指定しないで実行した場合、または –e を指定して実行した場合、trapstat の解析可能な出力には次の形式が含まれます。

フィールド
内容
1
タイムスタンプ (開始してからのナノ秒数)
2
CPU/コア/ソケット/ビン ID
3
トラップ番号 (16 進数)
4
トラップ名
5
間隔ごとのトラップ率

各フィールドはスペースで区切られています。形式が変更された場合、それはフィールド 6 から始まる潜在的に新しいフィールドを追加することで変更されます。現存しているフィールドは変わりません。

–r rate

サンプリングレートが 1 秒ごとの rate サンプル数になるように明示的に設定します。このオプションを指定した場合、trapstat の出力が 1 秒ごとのトラップ数からサンプリング間隔ごとのトラップ数に変わります。command または interval パラメータとともに使用できません。

–t

TLB/TSB 統計を有効にします。

主要な 4 列のデータ (itlb-missitsb-missdtlb-miss、および dtsb-miss) を含むテーブルが表示されます。これらの列には、対応するイベントの発生率と、そのイベントの処理に費やされる CPU 時間の割合の両方が含まれています。テーブルの行は CPU (–A が指定された場合はコア、ソケット、またはビン) に対応しており、それぞれに 2 つの行が使用されます。1 行はユーザーモードのイベント用 (u で示される)、もう 1 行はカーネルモードのイベント用 (k で示される) です。行ごとに、CPU 時間の割合が合計されて、右端の列に表示されます。CPU は実線で表されます。–t オプションに加えて、解析可能オプション (–P) も指定した場合、データの形式は次のとおりです:

フィールド
内容
1
タイムスタンプ (開始してからのナノ秒数)
2
CPU/コア/ソケット/ビン ID
3
モード (k はカーネルを示し、u はユーザーを示す)。
4
I-TLB ミス
5
I-TLB ミスハンドラにおける時間の割合
6
I-TSB ミス
7
I-TSB ミスハンドラにおける時間の割合
8
D-TLB ミス
9
D-TLB ミスハンドラにおける時間の割合
10
D-TSB ミス
11
D-TSB ミスハンドラにおける時間の割合

各フィールドはスペースで区切られています。形式を変更した場合、それはフィールド 12 から始まる潜在的に新しいフィールドを追加することで変更されます。現存しているフィールドは変わりません。

–T

TLB/TSB 統計 (ページサイズ情報を含む) を有効にします。–t オプションと同様に、主要な 4 列のデータ: (itlb-missitsb-missdtlb-miss、および dtsb-miss) を含むテーブルが表示されます。これらの列には、対応するイベントの絶対数と、そのイベントの処理に費やされる CPU 時間の割合の両方が含まれています。テーブルの行は CPU (–A が指定された場合はコア、ソケット、またはビン) に対応しており、それぞれに 2 組の行が使用されます。1 組はユーザーレベルのイベント用 (u で示される)、もう 1 組はカーネルレベルのイベント用 (k で示される) です。同様に各組にはサポートされているページサイズと同じ数だけの行が含まれています (getpagesizes(3C) を参照)。行ごとに、CPU 時間の割合が合計されて、右端の列に表示されます。これらの 2 組は波線で表されます。CPU は実線で表されます。–T オプションに加えて、解析可能オプション (–P) も指定した場合、データの形式は次のとおりです。

フィールド
内容
1
タイムスタンプ (開始してからのナノ秒数)
2
CPU/コア/ソケット/ビン ID
3
モード (k はカーネルを示し、u はユーザーを示す)
4
ページサイズ、10 進数
5
I-TLB ミス
6
I-TLB ミスハンドラにおける時間の割合
7
I-TSB ミス
8
I-TSB ミスハンドラにおける時間の割合
9
D-TLB ミス
10
D-TLB ミスハンドラにおける時間の割合
11
D-TSB ミス
12
D-TSB ミスハンドラにおける時間の割合

各フィールドはスペースで区切られています。形式が変更された場合、それはフィールド 13 から始まる潜在的に新しいフィールドを追加することで変更されます。現存しているフィールドは変わりません。

使用例 1 オプションを指定せずに trapstat を使用する

オプションを指定しないで trapstat を実行すると、トラップタイプと CPU のテーブルが表示されます。デフォルトの端末幅には最大で 6 列収まります。(この例にあるように) CPU の数が 6 を超える場合は、複数のテーブルが表示されます。


example# trapstat
vct  name               |     cpu0     cpu1     cpu4     cpu5     cpu8     cpu9
------------------------+------------------------------------------------------
 24 cleanwin            |     6446     4837     6368     2153     2623     1321
 41 level-1             |      100        0        0        0        1        0
 44 level-4             |        0        1        1        1        0        0
 45 level-5             |        0        0        0        0        0        0
 47 level-7             |        0        0        0        0        9        0
 49 level-9             |      100      100      100      100      100      100
 4a level-10            |      100        0        0        0        0        0
 4d level-13            |        6       10        7       16       13       11
 4e level-14            |      100        0        0        0        1        0
 60 int-vec             |     2607     2740     2642     2922     2920     3033
 64 itlb-miss           |     3129     2475     3167     1037     1200      569
 68 dtlb-miss           |   121061    86162   109838    37386    45639    20269
 6c dtlb-prot           |      997      847     1061      379      406      184
 84 spill-user-32       |     2809     2133     2739   200806   332776   454504
 88 spill-user-64       |    45819   207856    93487   228529    68373    77590
 8c spill-user-32-cln   |      784      561      767      274      353      215
 90 spill-user-64-cln   |        9       37       17       39       12       13
 98 spill-kern-64       |    62913    50145    63869    21916    28431    11738
 a4 spill-asuser-32     |     1327      947     1288      460      572      335
 a8 spill-asuser-64     |       26       48       18       54       10       14
 ac spill-asuser-32-cln |     4580     3599     4555     1538     1978      857
 b0 spill-asuser-64-cln |       26        0        0        2        0        0
 c4 fill-user-32        |     2862     2161     2798   191746   318115   435850
 c8 fill-user-64        |    45813   197781    89179   217668    63905    74281
 cc fill-user-32-cln    |     3802     2833     3733    10153    16419    19475
 d0 fill-user-64-cln    |      329    10105     4873    10603     4235     3649
 d8 fill-kern-64        |    62519    49943    63611    21824    28328    11693
108 syscall-32          |     2285     1634     2278      737      957      383
126 self-xcall          |      100        0        0        0        0        0

vct  name               |    cpu12    cpu13    cpu14    cpu15
------------------------+------------------------------------
 24 cleanwin            |     5435     4232     6302     6104
 41 level-1             |        0        0        0        0
 44 level-4             |        2        0        0        1
 45 level-5             |        0        0        0        0
 47 level-7             |        0        0        0        0
 49 level-9             |      100      100      100      100
 4a level-10            |        0        0        0        0
 4d level-13            |       15       11       22       11
 4e level-14            |        0        0        0        0
 60 int-vec             |     2813     2833     2738     2714
 64 itlb-miss           |     2636     1925     3133     3029
 68 dtlb-miss           |    90528    70639   107786   103425
 6c dtlb-prot           |      819      675      988      954
 84 spill-user-32       |   175768    39933     2811     2742
 88 spill-user-64       |        0   241348    96907   118298
 8c spill-user-32-cln   |      681      513      753      730
 90 spill-user-64-cln   |        0       42       16       20
 98 spill-kern-64       |    52158    40914    62305    60141
 a4 spill-asuser-32     |     1113      856     1251     1208
 a8 spill-asuser-64     |        0       64       16       24
 ac spill-asuser-32-cln |     3816     2942     4515     4381
 b0 spill-asuser-64-cln |        0        0        0        0
 c4 fill-user-32        |   170744    38444     2876     2784
 c8 fill-user-64        |        0   230381    92941   111694
 cc fill-user-32-cln    |     8550     3790     3612     3553
 d0 fill-user-64-cln    |        0    10726     4495     5845
 d8 fill-kern-64        |    51968    40760    62053    59922
108 syscall-32          |     1839     1495     2144     2083
126 self-xcall          |        0        0        0        0



使用例 2 CPU のフィルタリングを指定して trapset を使用する

–c オプションを使用すると、trapstat が有効になる CPU を制限できます。この例では、CPU 1 と、12 - 15 の CPU に制限します。


example# trapstat -c 1,12-15


vct  name               |     cpu1    cpu12    cpu13    cpu14    cpu15
------------------------+---------------------------------------------
 24 cleanwin            |     6923     3072     2500     3518     2261
 44 level-4             |        3        0        0        1        1
 49 level-9             |      100      100      100      100      100
 4d level-13            |       23        8       14       19       14
 60 int-vec             |     2559     2699     2752     2688     2792
 64 itlb-miss           |     3296     1548     1174     1698     1087
 68 dtlb-miss           |   114788    54313    43040    58336    38057
 6c dtlb-prot           |     1046      549      417      545      370
 84 spill-user-32       |    66551    29480   301588    26522   213032
 88 spill-user-64       |        0   318652   111239   299829   221716
 8c spill-user-32-cln   |      856      347      331      416      293
 90 spill-user-64-cln   |        0       55       21       59       39
 98 spill-kern-64       |    66464    31803    24758    34004    22277
 a4 spill-asuser-32     |     1423      569      560      698      483
 a8 spill-asuser-64     |        0       74       32       98       46
 ac spill-asuser-32-cln |     4875     2250     1728     2384     1584
 b0 spill-asuser-64-cln |        0        2        0        1        0
 c4 fill-user-32        |    64193    28418   287516    27055   202093
 c8 fill-user-64        |        0   305016   106692   288542   210654
 cc fill-user-32-cln    |     6733     3520    15185     2396    12035
 d0 fill-user-64-cln    |        0    13226     3506    12933    11032
 d8 fill-kern-64        |    66220    31680    24674    33892    22196
108 syscall-32          |     2446      967      817     1196      755

使用例 3 TLB 統計を指定して trapstat を使用する

–t オプションは、TLB ミスの処理に費やされる時間など、詳細な TLB 統計を表示します。次の例は、マシンが D-TLB ミスの処理だけで 14.1 パーセントの時間を費やしていることを示しています。


example# trapstat -t
cpu m| itlb-miss %tim itsb-miss %tim | dtlb-miss %tim dtsb-miss %tim |%tim
-----+-------------------------------+-------------------------------+----
  0 u|      2571  0.3         0  0.0 |     10802  1.3         0  0.0 | 1.6
  0 k|         0  0.0         0  0.0 |    106420 13.4       184  0.1 |13.6
-----+-------------------------------+-------------------------------+----
  1 u|      3069  0.3         0  0.0 |     10983  1.2       100  0.0 | 1.6
  1 k|        27  0.0         0  0.0 |    106974 12.6        19  0.0 |12.7
-----+-------------------------------+-------------------------------+----
  2 u|      3033  0.3         0  0.0 |     11045  1.2       105  0.0 | 1.6
  2 k|        43  0.0         0  0.0 |    107842 12.7       108  0.0 |12.8
-----+-------------------------------+-------------------------------+----
  3 u|      2924  0.3         0  0.0 |     10380  1.2       121  0.0 | 1.6
  3 k|        54  0.0         0  0.0 |    102682 12.2        16  0.0 |12.2
-----+-------------------------------+-------------------------------+----
  4 u|      3064  0.3         0  0.0 |     10832  1.2       120  0.0 | 1.6
  4 k|        31  0.0         0  0.0 |    107977 13.0       236  0.1 |13.1
=====+===============================+===============================+====
 ttl |     14816  0.3         0  0.0 |    585937 14.1      1009  0.0 |14.5

使用例 4 TLB 統計とページサイズ情報を指定して trapstat を使用する

–T オプションを指定することにより、trapstat はページサイズごとに分類された TLB ミスを表示します。この例では、CPU 0 は 8K ページでのユーザーモードの TLB ミスの処理に 7.9 パーセントの時間を費やしており、さらに 64K ページでのユーザーモードの TLB ミスの処理に 2.3 パーセントの時間を費やしています。

example# trapstat -T -c 0
cpu m size| itlb-miss %tim itsb-miss %tim | dtlb-miss %tim dtsb-miss %tim |%tim
----------+-------------------------------+-------------------------------+----
  0 u   8k|      1300  0.1        15  0.0 |    104897  7.9        90  0.0 | 8.0
  0 u  64k|         0  0.0         0  0.0 |     29935  2.3         7  0.0 | 2.3
  0 u 512k|         0  0.0         0  0.0 |      3569  0.2         2  0.0 | 0.2
  0 u   4m|         0  0.0         0  0.0 |       233  0.0         2  0.0 | 0.0
- - - - - + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + - -
  0 k   8k|        13  0.0         0  0.0 |     71733  6.5       110  0.0 | 6.5
  0 k  64k|         0  0.0         0  0.0 |         0  0.0         0  0.0 | 0.0
  0 k 512k|         0  0.0         0  0.0 |         0  0.0       206  0.1 | 0.1
  0 k   4m|         0  0.0         0  0.0 |         0  0.0         0  0.0 | 0.0
==========+===============================+===============================+====
      ttl |      1313  0.1        15  0.0 |    210367 17.1       417  0.2 |17.5

使用例 5 エントリのフィルタリングを指定して trapset を使用する

–e オプションを指定することにより、trapstat は特定のトラップタイプの統計のみを表示します。このオプションを使用すると、特定のデータを探す際のプローブ効果を最小限に抑えられます。この例では、12 - 15 の CPU で dtlb-prot および syscall-32 トラップのみの統計を生成します。


example# trapstat -e dtlb-prot,syscall-32 -c 12-15
vct  name               |    cpu12    cpu13    cpu14    cpu15
------------------------+------------------------------------
 6c dtlb-prot           |      817      754     1018      560
108 syscall-32          |     1426     1647     2186     1142

vct  name               |    cpu12    cpu13    cpu14    cpu15
------------------------+------------------------------------
 6c dtlb-prot           |     1085      996      800      707
108 syscall-32          |     2578     2167     1638     1452

使用例 6 高いサンプリングレートを指定して trapstat を使用する

次の例では、–r オプションを使用して 1 秒あたりのサンプル数が 1000 のサンプリングレートを指定し、level-10 のトラップのみをフィルタリングします。また、–P オプションを指定すると、解析可能な出力が生成されます。

level-10 のイベント間でのタイムスタンプの違い (9,998,000 ナノ秒と 10,007,000 ナノ秒) に注意してください。これらの level-10 のイベントはシステムクロックに対応しており、それはデフォルトで 100 Hz (つまり、10,000,000 ナノ秒ごと) で動作します。


example# trapstat -e level-10 -P -r 1000
1070400 0 4a level-10 0
2048600 0 4a level-10 0
3030400 0 4a level-10 1
4035800 0 4a level-10 0
5027200 0 4a level-10 0
6027200 0 4a level-10 0
7027400 0 4a level-10 0
8028200 0 4a level-10 0
9026400 0 4a level-10 0
10029600 0 4a level-10 0
11028600 0 4a level-10 0
12024000 0 4a level-10 0
13028400 0 4a level-10 1
14031200 0 4a level-10 0
15027200 0 4a level-10 0
16027600 0 4a level-10 0
17025000 0 4a level-10 0
18026000 0 4a level-10 0
19027800 0 4a level-10 0
20025600 0 4a level-10 0
21025200 0 4a level-10 0
22025000 0 4a level-10 0
23035400 0 4a level-10 1
24027400 0 4a level-10 0
25026000 0 4a level-10 0
26027000 0 4a level-10 0

使用例 7 cpu_mondo 率がもっとも高い 3 つの CPU を表示します。

次のコマンドは、cpu_mondo 率がもっとも高い 3 つの CPU を表示します。

example% trapstat -k cpu_mondo -o 3 10 1
vct name                | cpu0 cpu1 cpu61
------------------------+----------------
9   immu-miss           |    0    0     0
24  cleanwin            |    0    0     0
31  dmmu-miss           |    0    0     0
41  level-1             |    0    0     0
46  level-6             |    0    0     0
49  level-9             |    0    0     0
4a  level-10            |  100   31    16
4d  level-13            |   23   15     8
4e  level-14            |  100   32    18
6c  dtlb-prot           |    0    0     0
7c  cpu_mondo           |   24   16     9
7d  dev_mondo           |    0    0     0
84  spill-user-32       |    0    0     0
8c  spill-user-32-cln   |    0    0     0
98  spill-kern-64       |  423  180   102
a4  spill-asuser-32     |    0    0     0
ac  spill-asuser-32-cln |    0    0     0
c4  fill-user-32        |    0    0     0
cc  fill-user-32-cln    |    0    1     0
d8  fill-kern-64        |  295  165    94
103 flush-wins          |    0    0     0
108 syscall-32          |    0    0     0
122 get-psr             |    0    0     0
127 gethrtime           |    0    0     0
使用例 8 複数の CPU を四分位数で集計する

次のコマンドは、レベル 10 率別に 96 の CPU を四分位数で集計します。

example% trapstat -O /tmp/t1 -e level-10 10 1
example% trapstat -I /tmp/t1 -A 4

replay from: trapstat -O /tmp/t1 -e level-10 10 1
vct name     | bin0 bin1 bin2 bin3
-------------+--------------------
4a  level-10 |  440  340  305  306
使用例 9 複数の CPU を集計およびソートする

次のコマンドは、コア ID 別に 96 の CPU を集計して、もっとも高い 4 つをソートします。

example% trapstat -A cor -e level-10 -k level-10 -o 4 10 1
vct name     |  cor514  cor549  cor542  cor521
-------------+--------------------------------
4a  level-10 |     197     120     111     106

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
人間が読める形式の出力
不確実
解析可能な出力
確実

関連項目

pmap(1)ppgsz(1)getpagesizes(3C)lockstat(8)pbind(8)psrinfo(8)psrset(8)

Sun Microelectronics UltraSPARC II User's Manual,』1997 年 1 月、STP1031

The SPARC Architecture Manual, Version 9 』1994 年、Prentice-Hall 出版

有効になっている場合、trapstat は収集される情報の種類に応じて、さまざまなプローブ効果をもたらします。正確なプローブ効果はハードウェアの仕様によって異なりますが、次の表を大まかな指針として使用できます。

オプション
概略のプローブ効果
デフォルト
トラップごとに 3 - 5%
–e
指定されたトラップごとに 3 - 5%
–t–T
TSB でヒットする TLB ミストラップごとに 40 - 45%、TSB でミスする TLB ミストラップごとに 25 - 30%

これらのプローブ効果は、システム全体に対してではなくトラップごとです。たとえば、合計時間の 7% をトラップの処理に費やすシステムで、デフォルトのオプションを使って trapstat を実行すると、0.5% 未満のパフォーマンスの低下が起こります。合計時間の 5% を TLB ミスの処理に費やすシステムで、–t または –T オプションを指定して trapstat を実行すると、2.5% 以下のパフォーマンスの低下が起こります。

–t または –T オプションを指定して実行すると、%tim フィールドの計算時に trapstat はそのプローブ効果を考慮します。これにより、%tim フィールドが、trapstat の混乱させる存在に関係なく、所定のワークロードで TLB ミスの処理に費やしている時間の、かなり正確な指標であることが保証されます。

%tim フィールドには TLB ミスハンドラを実行する明示的なコストは含まれていますが、TLB ミストラップ (パイプライン効果、キャッシュ汚染など) の暗黙的なコストは含まれていません。これらの暗黙的なコストはトラップ率が上がるにつれてより重要になります。高い %tim 値 (50% 以上) が報告された場合、残りの時間の多くが TLB ミストラップの暗黙的なコストに充てられていることを正確に推測できます。

システム全体の低下が発生する可能性があるため、スーパーユーザーのみが trapstat を実行できます。

ベースとなる統計収集方法の制限のために、trapstat のインスタンスは一度に 1 つしか実行できません。

TLB ミスを処理するためのハードウェアサポート (ハードウェアテーブルウォーク (HWTW) など) を備えた UltraSPARC sun4v プラットフォームでは、TLB ミスがオペレーティングシステムからマスクされます。HWTW が有効になっている場合、trapstat は通常これをハイパーバイザから無効にします。これによってパフォーマンスが大幅に低下する可能性があるため、sun4v プラットフォームでは TLB ミスデータを収集する「迅速な」代替方法を提供しています。現時点では、UltraSPARC T1 ベースのシステムのみがこの機能を完全に実装します。ほかの sun4v システムでは、trapstat によって収集される TLB ミスデータは常に 0 です。