...

プロセスのモニタリングおよび トラブルシューティング

by user

on
Category: Documents
108

views

Report

Comments

Transcript

プロセスのモニタリングおよび トラブルシューティング
CHAPTER
7
プロセスのモニタリングおよび
トラブルシューティング
この章の内容は、次のとおりです。
•
システム マネージャ(sysmgr)
(p.7-2)
•
ウオッチドッグ システム モニタ(wdsysmon)
(p.7-2)
•
コア ダンプ(p.7-3)
•
follow コマンド(p.7-4)
•
show processes コマンド(p.7-6)
•
冗長性およびプロセスの再起動性(p.7-9)
•
プロセス ステート(p.7-10)
•
プロセス モニタリング(p.7-13)
•
CPU 使用状況(p.7-15)
•
プロセスのリロードに関するトラブルシューティング(p.7-17)
•
プロセス ブロックのトラブルシューティング(p.7-17)
Cisco IOS XR ソフトウェアは、プロセスをモジュール化する方式を採用して構築されています。プ
ロセスとは、仮想アドレス(メモリ)空間を共有するスレッドの集合です。各プロセスは、システ
ムに固有機能を提供し、1 つのプロセスに問題が発生してもシステム全体に影響を与えないように、
保護メモリ空間で実行されます。1 つのノード上でプロセスの複数のインスタンスが実行可能であ
り、各プロセス インスタンス上で複数の実行スレッドが実行可能です。
スレッドは実行単位です。各スレッドはスタックやレジスタなどの実行コンテキストを持っていま
す。スレッドは、実質的には親プロセスにより管理される “ サブプロセス ” であり、全体プロセス
の小部分を実行する役割を持ちます。たとえば、OSPF は、
「HELLO」の送受信を処理する 1 つの
スレッドです。スレッドは、システム スケジューラによって親プロセスに実行時間が割り当てられ
た場合にのみ実行可能です。複数のスレッドを持つプロセスは、マルチスレッド プロセスと呼ばれ
ます。
通常の動作環境では、プロセスは Cisco IOS XR ソフトウェアにより自動的に管理されます。プロセ
スは、ルータのランニング コンフィギュレーションに従って起動、停止、再起動が行われます。さ
らに、プロセスの再起動と自動切り替え時にチェックポイント機能が働いて、プロセスのパフォー
マ ン ス が 最 適 化 さ れ ま す。プ ロ セ ス の 詳 細 に つ い て は、
『Cisco IOS XR System Management
Configuration Guide』を参照してください。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-1
第7章
プロセスのモニタリングおよびトラブルシューティング
システム マネージャ(sysmgr)
システム マネージャ(sysmgr)
各プロセスには、起動時に Job ID(JID)が割り当てられます。プロセスの起動、停止、およびそ
の後の再起動によっても JID は変わりません。各プロセスには、起動時に Process ID(PID)も割り
当てられますが、この PID はプロセスが停止されて再起動されると変わります。
システム マネージャ(sysmgr)は、基本プロセスであり、システムの基礎を成しています。sysmgr
は、システム上のほとんどすべてのプロセスを対象に、モニタリング、起動、停止、および再起動
を行う役割があります。プロセスの再起動はあらかじめ定義されており(respawn フラグのオン / オ
フ)、sysmgr はそれに従います。sysmgr はすべてのプロセスの親プロセスです。システムのブート
時にコンフィギュレーションにより起動されます。各ノードでは sysmgr の 2 つのインスタンスが
実行されて、ホットスタンバイ プロセスのレベルの冗長性が提供されます。各アクティブ プロセ
スは SysDB に登録され、sysmgr アクティブ プロセスにより起動されると、実行時に sysmgr に通知
されます。sysmgr アクティブ プロセスが停止すると、スタンバイ プロセスがアクティブ ステート
を引き継ぎ、新しいスタンバイ プロセスが生成されます。
ラインカード(LC)上で動作する sysmgr は、そのノードに関連するプロセス生成、再起動、コア
ダンプなど、すべてのシステム管理作業を処理します。
sysmgr 自体はブート時に初期化プロセスによって起動されます。初期化プロセスは、sysmgr が起動
すると、初期化時に起動したすべてのプロセスの所有権を sysmgr に引き継いで終了します。
ウオッチドッグ システム モニタ(wdsysmon)
ウオッチドッグ システム モニタ(wdsysmon)は、プロセスに関する履歴データを保持し、この情
報をフォルト ディテクタ ダイナミック リンク ライブラリ(DLL)に書き込みます。書き込まれた
情報は、管理機能を持つアプリケーションで照会することができます。wdsysmon に関する詳細に
ついては、第 8 章「メモリのトラブルシューティング」の「ウオッチドッグ システム モニタ
(wdsysmon)」
(p.8-2)を参照してください。
wdsysmon は、1 分ごとにカーネルをポーリングしてプロセス データを照会します。このデータは
fm_fd_wdsysmon.dll(フォルト ディテクタ)が維持するデータベースに保存され、wdsysmon により
ロードされます。
デットロックの検出
プロセス データを伴ってスレッド ステートが戻されるので、wdsysmon はデッドロックの検出を試
行できます。wdsysmon は、特にミューテックス デッドロックとローカル Inter-Process Communication
(IPC; プロセス間通信)のハング状態を探します。検出できるのはローカルの IPC デッドロックの
みです。デッドロックを検出すると、デバッグ情報を disk0:/wdsysmon_debug にまとめます。
デッドロック状態のプロセスは、processes restart コマンドを使用して手動で停止と再起動ができ
ます。
ハングの検出
システムにイベント マネージャが生成されると、イベント マネージャ ライブラリは wdsysmon に
イベントを登録します。wdsysmon は、システム内の登録されたすべてのイベント マネージャから
の定期的な「パルス」の送信を待ち受けます。イベント マネージャからの送信が途絶えると、
wdsysmon はデバッグ スクリプトを実行します。このスクリプトにより、そのイベント マネージャ
を生成したスレッドが何を処理しているかがわかります。
Cisco IOS XR トラブルシューティング
7-2
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
コア ダンプ
コア ダンプ
プロセスが異常終了する際に、コア ダンプ ファイルが指定された場所に書き込まれます。コア ダ
ンプには次の情報が含まれます。
•
レジスタ情報
•
スレッド ステータス情報
•
プロセス ステータス情報
•
選抜されたメモリ セグメント
コンフィグ済みのコア ダンプ設定を表示するには、show exception コマンドを使用します。show
exception コマンドの出力には、次の複数のコマンドでコンフィグされたコア ダンプ設定が表示さ
れます。
•
exception filepath
•
exception dump-tftp-route
•
exception kernel memory
•
exception pakmem
•
exception sparse
•
exception sprsize
次に、コア ダンプ設定の例を示します。
RP/0/RP0/CPU0:router# show exception
Choice 1 path = harddisk:/coredump compress = on filename = <process_name.time>
Choice 2 path = tftp://223.255.254.254/users/xyz compress = on filename =
<process_name.time>
Exception path for choice 3 is not configured or removed
Choice fallback one path = harddisk:/dumper compress = on filename = <process_name>
Choice fallback two path = disk1:/dumper compress = on filename = <process_name>
Choice fallback three path = disk0:/dumper compress = on filename = <process_name>
Kernel dump not configured
Tftp route for kernel core dump not configured
Dumper packet memory in core dump enabled
Sparse core dump enabled
Dumper will switch to sparse core dump automatically at size 300MB
コアダンプ ファイルは dumpcore コマンドを使用して手動で生成できます。手動で実行できるコア
ダンプには次の 2 種類があります。
•
running ― サービスに影響を与えません。
•
suspended ― コア ダンプの生成中は、プロセスを一時停止します。
show context コマンドを使用すると、最近の 10 回のコアダンプ情報が表示されます。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-3
第7章
プロセスのモニタリングおよびトラブルシューティング
follow コマンド
follow コマンド
follow コマンドは、動作中プロセス、またはプロセス内の動作中 スレッドに影響を与えることなく
デバッグできます。follow コマンドは、特に次の場合に有効です。
•
プロセス デッドロック状態、ライブロック状態、またはミューテックス状態
•
CPU 利用頻度が高い状態
•
破損する問題の原因を特定するために、メモリの内容やプロセスの変数の内容を調べる場合
•
プロセスまたはスレッドがループに入る問題を調べる場合
ライブロックは、2 つ以上のプロセスが他のプロセスのステートの変化に応答して自身のステート
を変える動作を繰り返す状態です。
follow コマンドを使用して、次の処理を指定できます。
•
任意のプロセスのすべての動作中スレッド、またはプロセスの任意のスレッドを追跡し、コア
ダンプ出力と同様の形式でスタック トレースを表示します。
•
ループに入っているプロセスを、任意のループ回数の間追跡します。
•
コマンドを 2 回繰り返す間の遅延時間を設定します。
•
このコマンドが実行されている間の、このプロセスが実行されるプライオリティを設定しま
す。
•
仮想メモリの任意の位置から任意のサイズ分、メモリの内容をダンプします。
•
対象プロセスのレジスタの値とステータス情報を表示します。
•
スレッドの実行パスのスナップショットを非同期に取得して、パフォーマンス関連の問題を調
べます。このためには、遅延時間をゼロにして繰り返し回数を多く指定します。
次に、プロセス 929034375 のライブ スレッドの例を示します。
RP/0/RP0/CPU0:router# follow process 929034375
Attaching to process pid = 929034375 (pkg/bin/bgp)
No tid specified, following all threads
DLL Loaded by this process
------------------------------DLL path
Text addr. Text size Data addr. Data size Version
/pkg/lib/libsysmgr.dll
0xfc122000 0x0000df0c 0xfc0c2b14 0x000004ac
0
/pkg/lib/libcerrno.dll
0xfc130000 0x00002f04 0xfc133000 0x00000128
0
/pkg/lib/libcerr_dll_tbl.dll 0xfc134000 0x00004914 0xfc133128 0x00000148
0
/pkg/lib/libltrace.dll
0xfc139000 0x00007adc 0xfc133270 0x00000148
0
/pkg/lib/libinfra.dll
0xfc141000 0x00033c90 0xfc1333b8 0x00000bbc
0
/pkg/lib/cerrno/libinfra_error.dll 0xfc1121dc 0x00000cd8 0xfc175000 0x000000a8 0
/pkg/lib/libios.dll
0xfc176000 0x0002dab0 0xfc1a4000 0x00002000
0
/pkg/lib/cerrno/libevent_manager_error.dll 0xfc1a6000 0x00000e88 0xfc133f74 0x00
/pkg/lib/libc.dll
0xfc1a7000 0x00079d70 0xfc221000 0x00002000
0
/pkg/lib/libsyslog.dll
0xfc223000 0x000054e0 0xfc1750a8 0x00000328
0
/pkg/lib/libplatform.dll 0xfc229000 0x0000c25c 0xfc236000 0x00002000
0
/pkg/lib/libbackplane.dll 0xfc243000 0x000013a8 0xfc1755b8 0x000000a8
0
/pkg/lib/cerrno/libpkgfs_error.dll 0xfc245000 0x00000efc 0xfc175660 0x00000088 0
/pkg/lib/libnodeid.dll
0xfc246000 0x0000a588 0xfc1756e8 0x00000248
0
/pkg/lib/libdebug.dll
0xfc29b000 0x0000fdbc 0xfc2ab000 0x00000570
0
/pkg/lib/cerrno/libdebug_error.dll 0xfc294244 0x00000db0 0xfc175c68 0x000000e8 0
/pkg/lib/lib_procfs_util.dll 0xfc2ac000 0x00004f20 0xfc175d50 0x000002a8
0
/pkg/lib/libinst_debug.dll 0xfc375000 0x0000357c 0xfc36d608 0x000006fc
0
/pkg/lib/libpackage.dll 0xfc3c8000 0x00041ad0 0xfc40a000 0x00000db4
0
/pkg/lib/libwd_evm.dll
0xfc40b000 0x00003dc4 0xfc36dd04 0x00000168
0
.
.
.
Iteration 1 of 5
------------------------------
Cisco IOS XR トラブルシューティング
7-4
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
follow コマンド
Current process = "pkg/bin/bgp", PID = 929034375 TID = 1
trace_back:
trace_back:
trace_back:
trace_back:
trace_back:
trace_back:
trace_back:
trace_back:
#0
#1
#2
#3
#4
#5
#6
#7
0xfc164210
0xfc14ecb8
0xfc14eac4
0xfc151f98
0xfc152154
0xfd8e16a0
0x48230db8
0x48201080
[MsgReceivev]
[msg_receivev]
[msg_receive]
[event_dispatch]
[event_block]
[bgp_event_loop]
[<N/A>]
[<N/A>]
ENDOFSTACKTRACE
Current process = "pkg/bin/bgp", PID = 929034375 TID = 2
trace_back:
trace_back:
trace_back:
trace_back:
trace_back:
trace_back:
#0
#1
#2
#3
#4
#5
0xfc164210
0xfc14ecb8
0xfc14eac4
0xfc151f98
0xfc152154
0xfc50efd8
[MsgReceivev]
[msg_receivev]
[msg_receive]
[event_dispatch]
[event_block]
[chk_evm_thread]
ENDOFSTACKTRACE
.
.
.
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-5
第7章
プロセスのモニタリングおよびトラブルシューティング
show processes コマンド
show processes コマンド
プロセス情報を表示するには、次の show processes コマンドを使用します。
•
show processes boot コマンド(p.7-6)
•
show processes startup コマンド(p.7-6)
•
show processes failover コマンド(p.7-7)
•
show processes blocked コマンド(p.7-7)
show processes boot コマンド
show processes boot コマンドを使用すると、プロセスのブート情報が表示されます。コマンドの出
力から、次のことを確認してください。
•
各プロセスの起動に要した時間
•
一連のプロセスの起動順序
•
起動が遅れたプロセスは、ブート障害またはブート時の問題が原因なのか
•
システムが想定する時間内に一連のプロセスは起動したか
RP/0/RP0/CPU0:router# show processes boot location 0/rp1/cpu0
Band
----1.0
40.0
90.0
100.0
150.0
999.0
Name
Finished
%Idle
JID
Ready Last Process
-------------- -------- -------- -------- ------- --------------------MBI
22.830 65.130%
62 22.830 insthelper
ARB
129.225 92.080%
154 106.395 dsc
ADMIN
185.140
5.950%
175 55.915 fabricq_mgr
INFRA
207.372 25.040%
165 22.232 fib_mgr
STANDBY
231.605 13.840%
104 24.233 arp
FINAL
237.942
1.590%
234
6.337 ipv6_rump
Started Level
JID Inst
Ready Process
--------- ------ -------- ---- ------- ------------------------------0.000s
0.05
80
1
0.000 wd-mbi
0.000s
1.00
57
1
0.000 dllmgr
0.000s
2.00
71
1
0.000 pkgfs
0.000s
3.00
56
1
0.000 devc-conaux
0.000s
3.00
73
1
0.000 devc-pty
0.000s
6.00
70
1
0.000 pipe
.
.
.
Last process started:
6d19h after boot. Total: 174
show processes startup コマンド
show processes startup コマンドを使用すると、起動時に作成されたプロセスのプロセス データが表
示されます。コマンドの出力から、次のことを確認してください。
•
表示されているプロセスは、ステート、起動時間、再起動ステータス、プレースメント、必須
ステータスを含めて正常か
•
各プロセスの起動に要した時間
•
一連のプロセスの起動順序
•
起動が遅れたプロセスはブート障害またはブート時の問題が原因なのか
•
システムが想定する時間内に一連のプロセスは起動したか
Cisco IOS XR トラブルシューティング
7-6
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
show processes コマンド
RP/0/RP0/CPU0:router# show processes startup
JID
LAST STARTED
STATE
REPLACE- MANDA- NAME(IID) ARGS
START
MENT
TORY
------------------------------------------------------------------------------81
07/05/2006 14:46:37.514 Run
1
M
wd-mbi(1)
57
07/05/2006 14:46:37.514 Run
1
M
dllmgr(1) -r 60
-u 30
72
07/05/2006 14:46:37.514 Run
1
M
pkgfs(1)
56
07/05/2006 14:46:37.514 Run
1
M
devc-conaux(1) h -d librs232.dll -m libconaux.dll -u libst16550.dll
74
07/05/2006 14:46:37.514 Run
1
M
devc-pty(1) -n 3
2
55
Not configured
None
0
M
clock_chip(1) -r
-b
71
07/05/2006 14:46:37.514 Run
1
M
pipe(1)
65
07/05/2006 14:46:37.514 Run
1
M
mqueue(1)
64
Not configured
None
0
M
cat(1) /etc/motd
73
Not configured
None
0
M
platform_dllmap(
1)
77
07/05/2006 14:46:37.514 Run
1
M
shmwin_svr(1)
60
07/05/2006 14:46:37.514 Run
1
M
devf-scrp(1) -e
0xf0000038 -m /bootflash: -s 0xfc000000,64m -r -t4 -b10
66
Not configured
None
0
M
nname(1)
69
07/05/2006 14:46:37.514 Run
1
M
pci_bus_mgr(1) o
288
07/05/2006 14:47:02.799 Run
1
M
qsm(1)
68
07/05/2006 14:46:37.514 Run
1
M
obflmgr(1)
70
07/05/2006 14:46:37.514 Run
1
M
pcmciad(1) -m /d
ev/pcmcia -d libpcmcia_gt64260disc_hba -p "cardmgrd -f"
.
.
.
------------------------------------------------------------------------------Total pcbs: 198
show processes failover コマンド
show processes failover コマンドを使用すると、プロセスのフェールオーバー情報が表示されます。
コマンド出力には、フェールオーバー後にプロセスが要した起動時間(ノードのリブート)の情報
が表示されます。プロセスの起動に遅れがなかったか確認してください。
show processes blocked コマンド
show processes blocked コマンドを使用すると、応答、送信、およびミューテックスでブロックされ
たプロセスに関する詳細情報が表示されます。
どのプロセスも一時的にブロック ステートになる可能性があるため、show processes blocked コマ
ンドを、ノードごとに時間を空けて連続して 2 回実行することを推奨します。1 回めと 2 回めでプ
ロセスがブロックされている表示がされたら、もう 1 回コマンドを実行してプロセスがブロックさ
れていることを再確認するようにしてください。
ブロック ステートが持続していることを確認するため、実行する間隔は短すぎないようにします。
たとえば、フル装備の Cisco CRS-1 8 スロット ラインカード シャーシでは、2 RP と 8LC の要求に
見合う間隔が必要です。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-7
第7章
プロセスのモニタリングおよびトラブルシューティング
show processes コマンド
show processes blocked コマンド出力では、Reply(応答)ステートのプロセスは必ずブロックされ
ている表示になります。
RP/0/RP0/CPU0:router# show processes blocked
Jid
65546
51
51
75
75
75
75
50
334
247
65750
65752
367
65770
369
Pid Tid
8202
1
36890
2
36890
3
36893
5
36893
6
36893
7
36893
8
36899
2
172108
1
290991
2
644260054
1
662208728
1
2642149
5
662208746
1
659755249
3
Name
ksh
attachd
attachd
qnet
qnet
qnet
qnet
attach_server
tftp_server
lpts_fm
exec
more
mpls_ldp
show_processes
te_control
State Blocked-on
Reply
8200 devc-conaux
Reply
32791 eth_server
Reply
12301 mqueue
Reply
32791 eth_server
Reply
32791 eth_server
Reply
32791 eth_server
Reply
32791 eth_server
Reply
12301 mqueue
Reply
12301 mqueue
Reply 184404 lpts_pa
Reply
1 kernel
Reply
12299 pipe
Reply 2642153 lspv_server
Reply
1 kernel
Reply 2642153 lspv_server
これらのプロセスについては、正常な出力です。たとえば、次の行を見てみます。
65770 662208746
1
show_processes Reply
1
kernel
これは、show processes blocked コマンドを実行した結果です。コマンドを実行するごとにプロセス
ID(PID)は変わります。
重要なシステム プロセスまたは接続を制御する基本アプリケーション(ルーティング プロトコル
やラベル スイッチング ラベル配布プロトコル [Label Distribution Protocol; LDP] など)が、Reply、
Sent、Mutex、または Condvar ステートでブロックされている場合は、次のことを行ってください。
(注)
•
follow job または follow process コマンドでデータを収集します。これらのコマンドの詳細につ
いては、「follow コマンド」
(p.7-4)を参照してください。
•
影響を受けているプロセスに dumpcore running job-id location node-id コマンドを使用します。
dumpcore の出力は、exception choice コマンドを使用して保存場所の設定が変更されていない場
合、harddisk:/dumper にあります。
再起動することが危険なプロセスもあります。技術担当者と連絡を取り、シスコのテクニカルサ
ポートの指示に従うことを推奨します。シスコのテクニカルサポートの連絡窓口についての情報
は、
「はじめに」の「テクニカル サポート」
(p.xiii)を参照してください。
RP/0/RP0/CPU0:router# show processes blocked
Jid
65546
51
51
75
75
75
75
50
334
247
65750
65752
367
65772
65773
65774
Pid Tid
8202
1
36890
2
36890
3
36893
5
36893
6
36893
7
36893
8
36899
2
172108
1
290991
2
644260054
1
655270104
1
2642149
5
655229164
1
656842989
1
656842990
1
Name
ksh
attachd
attachd
qnet
qnet
qnet
qnet
attach_server
tftp_server
lpts_fm
exec
config
mpls_ldp
exec
more
show_processes
State Blocked-on
Reply
8200 devc-conaux
Reply
32791 eth_server
Reply
12301 mqueue
Reply
32791 eth_server
Reply
32791 eth_server
Reply
32791 eth_server
Reply
32791 eth_server
Reply
12301 mqueue
Reply
12301 mqueue
Reply 184404 lpts_pa
Reply
1 kernel
Reply 286888 devc-vty
Reply 2642153 lspv_server
Reply
1 kernel
Reply
12299 pipe
Reply
1 kernel
Cisco IOS XR トラブルシューティング
7-8
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
冗長性およびプロセスの再起動性
冗長性およびプロセスの再起動性
Cisco IOS XR ソフトウェアを使用するシステムでは、重大エラーの回復方法として、アプリケー
ションは主にプロセス再起動性とプロセス(アプリケーション)冗長性の 2 つを組み合わせて使用
します。
プロセスの再起動は、通常は障害回復の第 1 段階として使用されます。チェックポイントされた
データが壊れていなければ、クラッシュしたプロセスは再起動後に回復できます。必須プロセスが
何回かの再起動に失敗したり、ピア プロセスがクラッシュしたあと再起動しても回復できない場合
は、スタンバイ カードがアクティブになります。
必須プロセス以外のプロセスの場合、1 分間の再起動数に達すると、sysmgr がそのプロセスの再起
動を停止するので、手動でアプリケーションを再起動する必要があります。
コンフィギュレーションにより起動されないプロセスは、デフォルトで「必須」(ルータの動作に
重要な)プロセスとして起動されます。必須プロセスが 5 分間のウィンドウ以内に 5 回クラッシュ
した場合は、スタンバイ RP が冗長状態であれば、RP のフェールオーバーが実行されます。show
processes all コマンドを使用すると、すべてのプロセスと必須フラグを含めたプロセス ステートが
表示されます。必須フラグは、オフに切り替えられます。必須フラグの切り替えには、process
mandatory {on | off} {executable-name | job-id} [location node-id] コマンドを使用します。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-9
第7章
プロセスのモニタリングおよびトラブルシューティング
プロセス ステート
プロセス ステート
Cisco IOS XR ソフトウェア内には、サービスを提供するサーバとサービスを利用するクライアント
があります。あるプロセスは、同じサービスを提供する複数のスレッドを持つことができます。別
なプロセスは、特定のサービスを必要とする複数のクライアントをいつでも持つことができます。
サーバが常に利用できるとは限りません。そのときにクライアントがサービスへのアクセスを要求
した場合は、サーバが空くのを待つことになります。これが、クライアントのブロック状態です。
クライアントがブロックされるケースには、ミューテックスなどのリソースを待っている場合、
サーバが応答しない場合などがあります。
次に、show process ospf コマンドを使用して OSPF プロセスのスレッドのステータスを確認する例
を示します。
RP/0/RP0/CPU0:router# show processes ospf
Job Id: 250
PID: 299228
Executable path: /disk0/hfr-rout-3.4.0/bin/ospf
Instance #: 1
Version ID: 00.00.0000
Respawn: ON
Respawn count: 1
Max. spawns per minute: 12
Last started: Wed Nov 8 15:45:59 2006
Process state: Run
Package state: Normal
Started on config: cfg/gl/ipv4-ospf/proc/100/ord_f/default/ord_a/routerid
core: TEXT SHAREDMEM MAINMEM
Max. core: 0
Placement: ON
startup_path: /pkg/startup/ospf.startup
Ready: 3.356s
Available: 7.363s
Process cpu time: 2.648 user, 0.186 kernel, 2.834 total
JID
TID Stack pri state
HR:MM:SS:MSEC NAME
272
1
60K 10 Receive
0:00:00:0563 ospf
272
2
60K 10 Receive
0:00:00:0017 ospf
272
3
60K 10 Receive
0:00:00:0035 ospf
272
4
60K 10 Receive
0:00:02:0029 ospf
272
5
60K 10 Receive
0:00:00:0003 ospf
272
6
60K 10 Condvar
0:00:00:0001 ospf
272
7
60K 10 Receive
0:00:00:0000 ospf
-------------------------------------------------------------------------------
ospf プロセスには、JID として 250 が付与されています。この JID はルータが稼働中に変わること
はありません。この ospf プロセスにはスレッドが 7 つあります。それぞれ独自のスレッド ID(TID)
を持っています。各スレッドには、スタック空間、プライオリティ、およびスレッド ステートが列
記されています。スレッド ステートの一覧を表 7-1 に示します。
同期式メッセージ パッシング
メッセージ パッシングのライフ サイクルは、次のとおりです。
1. サーバがメッセージ チャネルを作成
2. クライアントがサーバのチャネルに接続(posix open に相当)
3. クライアントがメッセージをサーバに送信(MsgSend)し、応答を待ち、ブロック
4. サーバがクライアントからメッセージを受信(MsgReceive)し、メッセージを処理し、クライ
アントに応答
5. クライアントがブロックを解除し、サーバからの応答を処理
Cisco IOS XR トラブルシューティング
7-10
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
プロセス ステート
このブロッキング クライアント / サーバ モデルは同期式メッセージ パッシングです。これは、ク
ライアントがメッセージを送信しブロックすることを意味します。サーバはメッセージを受信し、
それを処理してクライアントに応答を返します。それによってクライアントはブロックを解除しま
す。詳細な流れは次のとおりです。
1. サーバが RECEIVE ステートで待機する
2. クライアントがサーバにメッセージを送信し、BLOCKED ステートになる
3. サーバがメッセージを受信し、ブロックを解除する(RECEIVE ステートで待機していた場合)
4. クライアントが REPLY ステートに移行する
5. サーバが RUNNING ステートに移行する
6. サーバがメッセージを処理する
7. サーバがクライアントに応答する
8. クライアントがブロックを解除する
クライアントおよびサーバの現在のステートを表示するには、show processes コマンドを使用しま
す。表 7-1 にスレッド ステートを示します。
ブロックされたプロセスおよびプロセス ステート
ブロックされたステートにあるプロセスを表示するには、show processes blocked コマンドを使用し
ます。
同期式メッセージ パッシングによって、異なるスレッド間でのプロセス間通信のライフ サイクル
を追跡できます。スレッドは、いつの時点においても何らかのステートにあります。ブロック ス
テートは、問題の兆候を意味することがあります。ただし、ブロック ステートだからといって、た
だちにそのスレッドに問題があるわけではありません。通常、スレッドがブロック状態になること
もあります。show processes blocked コマンドを使用すると、オペレーティング システム関連の問
題をトラブルシューティングする良い手がかりが得られることがあります。たとえば、CPU の利用
頻度が高い場合、show processes blocked コマンドを使用して、何か異常な状況(ルータの機能上、
正常でないもの)がないか確認します。このようにすると、プロセスのライフ サイクルをトラブル
シューティングする際に、比較をするためのベースラインが得られます。
スレッドは、いつの時点においても何らかのステートにあります。表 7-1 にスレッド ステートを示
します。
表 7-1
スレッド ステート
ステート名
意味
DEAD
デッド状態です。カーネルはスレッドのリソースの解放を待っています。
RUNNING
CPU 上でアクティブに実行中です。
READY
CPU 上で実行中ではありませんが、実行の用意が整っています。
STOPPED
一時停止中(SIGSTOP シグナル)です。
SEND
サーバがメッセージを受信するのを待っています。
RECEIVE
クライアントがメッセージを送信するのを待っています。
REPLY
サーバがメッセージに応答するのを待っています。
STACK
スタックがさらに割り当てられるのを待っています。
WAITPAGE
プロセス マネージャがページ フォルトを解決するのを待っています。
SIGSUSPEND
シグナルを待っています。
SIGWAITINFO
シグナルを待っています。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-11
第7章
プロセスのモニタリングおよびトラブルシューティング
プロセス ステート
表 7-1
スレッド ステート(続き)
ステート名
意味
NANOSLEEP
一定時間スリープ状態です。
MUTEX
ミューテックスの取得を待っています。
CONDVAR
条件変数にシグナルが送られるのを待っています。
JOIN
別なスレッドの終了を待っています。
INTR
割り込みを待っています。
SEM
セマフォの取得を待っています。
Cisco IOS XR トラブルシューティング
7-12
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
プロセス モニタリング
プロセス モニタリング
大量の sysmgr イベントが /tmp/sysmgr.log に保存されます。このログは循環バッファなので、トラ
ブルシューティングに役立ちます。異常終了したプロセスの概要を表示するには、show processes
aborts location node-id all コマンドまたは show sysmgr trace verbose | include PROC_ABORT コマン
ドを使用します。
システム上のすべてのプロセスは sysmgr によってすでにモニタされているので、外部の管理ツー
ルで重要プロセスをモニタする必要はありません。ただし、show fault manager metric process pid
location node-id コマンドを使用して、定期的(毎日 2 回程度)にクリティカルなプロセスを確認す
るとよいでしょう。このコマンド出力には、プロセスが異常終了したことおよびその理由などの情
報が表示されます。
次に、クリティカル プロセスである OSPF の詳細情報の例を示します。プロセスが異常終了した回
数と、過去の所定の期間内における異常終了の回数を確認してください。
RP/0/RP0/CPU0:router# show fault manager metric process ospf location
=====================================
job id: 269, node name: 0/RP0/CPU0
process name: ospf, instance: 1
-------------------------------last event type: process start
recent start time: Wed Jul 5 15:17:48 2006
recent normal end time: n/a
recent abnormal end time: n/a
number of times started: 1
number of times ended normally: 0
number of times ended abnormally: 2
most recent 10 process start times:
-------------------------Wed Jul 5 15:17:48 2006
-------------------------most recent 10 process end times and types:
cumulative process available time: 162 hours 20 minutes 51 seconds 452 milliseco
nds
cumulative process unavailable time: 0 hours 0 minutes 0 seconds 0 milliseconds
process availability: 1.000000000
number of abnormal ends within the past 60 minutes (since reload): 0
number of abnormal ends within the past 24 hours (since reload): 0
number of abnormal ends within the past 30 days (since reload): 2
重要なシステムプロセスには、次のものがあります。RP 上では qnet、gsp、qsm、redcon、netio、
ifmgr、fgid_aggregator、fgid_server、fgid_allocator、fsdb_server、fsdb_aserver、fabricq_mgr、fia_driver、
shelfmgr、および lrd。ラインカード上では fabricq_mgr、ingressq、egressq、pse_driver、fia_driver、
cpuctrl、および pla_server です。
クリティカル プロセスまたは重要プロセスがブロック ステートになっていないか、定期的に確認
することも重要です。プロセスのブロック ステートを確認する詳細については、
「show processes
blocked コマンド」(p.7-7)を参照してください。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-13
第7章
プロセスのモニタリングおよびトラブルシューティング
プロセス モニタリング
プロセス モニタリング コマンド
プロセスをモニタするには、次のコマンドを使用します。
(注)
•
top コマンド ― システムの CPU 使用状況の統計情報をリアルタイムで表示します。「top コマ
ンド」(p.1-12)を参照してください。
•
show processes pidin コマンド ― すべてのプロセスの Raw 出力を、ステートを含めて表示しま
す。
•
show processes blocked コマンド ― 応答、送信、およびミューテックスでブロックされたプロ
セスに関する詳細情報を表示します。「show processes blocked コマンド」(p.7-7)を参照してく
ださい。
CPU の使用状況ごとに上位プロセスとスレッドを確認するには、monitor processes および monitor
threads コマンドを使用します。
Cisco IOS XR トラブルシューティング
7-14
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
CPU 使用状況
CPU 使用状況
wdsysmon は継続的にシステムを監視し、ハイ プライオリティのスレッドによってロー プライオリ
ティのスレッドが CPU 不足にならないようにし、ハイ プライオリティによる CPU 占有状況から回
復させる手順を提供します。wdsysmon は CPU ホグ状態のプロセスを確認すると、そのプロセスを
終了させ、デバッグに役立つコアダンプを取得して指定されたデバイスに保存します。高い CPU 使
用状況をトラブルシューティングする方法の詳細については、「プロセスのリロードに関するトラ
ブルシューティング」(p.7-17)を参照してください。
wdsysmon が CPU ホグ状態を検出すると、Syslog メッセージが生成されます。次の Syslog メッセー
ジの推奨処置に従ってください。
メッセージ:%HA-HA_WD-6-CPU_HOG_1 CPU hog:cpu [dec]'s sched count is [dec].
RP/0/RP0/CPU0:Dec 22 16:16:34.791 : wdsysmon[331]: %HA-HA_WD-6-CPU_HOG_1 : CPU hog:
cpu 1's sched count is 0.
wdsysmon は CPU 不足の状態を検出しました。ハイ プライオリティのプロセスが、ループ状態にお
ちいっている可能性があります。
「sched count」は、wdsysmon watcher スレッドが最後に実行されて
から、wdsysmon ticker スレッドがスケジュールされた回数です。
保存されているログを含めて、ハイ プライオリティの CPU ホグの形跡がないか、システム ステー
タスを確認してください。システム ステータスの確認方法の詳細については、「プロセスのリロー
ドに関するトラブルシューティング」(p.7-17)を参照してください。
メ ッ セ ー ジ:%HA-HA_WD-6-CPU_HOG_2 CPU hog:cpu [dec]'s ticker last ran [dec].[dec]
seconds ago.
RP/0/RP0/CPU0:Dec 22 16:16:34.791 : wdsysmon[331]: %HA-HA_WD-6-CPU_HOG_2 : CPU hog:
cpu 1's ticker last ran 3.965 seconds ago.
wdsysmon は CPU 不足の状態を検出しました。ハイ プライオリティのプロセスが、ループ状態にお
ちいっている可能性があります。
保存されているログを含めて、ハイ プライオリティの CPU ホグの形跡がないか、システム ステー
タスを確認してください。システム ステータスの確認方法の詳細については、「プロセスのリロー
ドに関するトラブルシューティング」(p.7-17)を参照してください。
メッセージ:%HA-HA_WD-6-CPU_HOG_3 Rolling average of scheduling times:[dec].[dec].
RP/0/RP0/CPU0:Dec 22 16:16:34.791 : wdsysmon[331]: %HA-HA_WD-6-CPU_HOG_3 : Rolling
average of scheduling times: 0.201.
wdsysmon は CPU 不足の状態を検出しました。ハイ プライオリティのプロセスが、ループ状態にお
ちいっている可能性があります。ローリング平均が高い値を示す場合は、定期的なプロセスがスケ
ジュールされていないことを意味します。
保存されているログを含めて、ハイ プライオリティの CPU ホグの形跡がないか、システム ステー
タスを確認してください。システム ステータスの確認方法の詳細については、「プロセスのリロー
ドに関するトラブルシューティング」(p.7-17)を参照してください。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-15
第7章
プロセスのモニタリングおよびトラブルシューティング
CPU 使用状況
メッセージ:%HA-HA_WD-6-CPU_HOG_4 Process [chars] pid [dec] tid [dec] prio [dec] using
[dec]% is the top user of CPU
RP/0/RP0/CPU0:Dec 22 16:16:35.813 : wdsysmon[331]: %HA-HA_WD-6-CPU_HOG_4 : Process
wd_test pid 409794 tid 2 prio 14 using 99% is the top user of CPU.
このメッセージは、CPU ホグ ディテクタが動作したあとに表示されます。メッセージには、CPU
上位ユーザのうち最も使用率の高いスレッドが使用している CPU の割合が示されています。シス
テム ステータスの確認方法の詳細については、「プロセスのリロードに関するトラブルシューティ
ング」(p.7-17)を参照してください。
show watchdog trace コマンドを使用すると、CPU ホグの可能性に関する追加情報が表示されます。
CPU ホグ状態が 30 秒以上続くと、そのノードはリセットされます。リセットの直前には、次のよ
うな記録がログに残されます。
RP/0/RP0/CPU0:Dec 20 10:36:08.990 : wdsysmon[367]: %HA-HA_WD-1-CURRENT_STATE :
Persistent Hog detected for more than 30 seconds
CPU ホグ状態が持続してノードがリセットされた場合は、シスコのテクニカルサポートにご連絡く
ださい。シスコのテクニカルサポートの連絡窓口についての情報は、「はじめに」の「テクニカル
サポート」(p.xiii)を参照してください。コンソール上またはシステム ログに出力されたエラー
メッセージをそのままコピーして、収集した情報とともにテクニカルサポートに提出してくださ
い。
Cisco IOS XR トラブルシューティング
7-16
OL-11138-02-J
第7章
プロセスのモニタリングおよびトラブルシューティング
プロセスのリロードに関するトラブルシューティング
プロセスのリロードに関するトラブルシューティング
プロセスのリロードに関するトラブルシューティングを行うには、シスコのテクニカルサポートに
ご連絡ください。シスコのテクニカルサポートの連絡窓口についての情報は、「はじめに」の「テ
クニカル サポート」(p.xiii)を参照してください。
シスコのテクニカルサポートにご連絡いただく前に、次の情報を収集してください。
•
show context all location all コマンドの出力
•
show version コマンドの出力
•
show dll コマンドの出力
•
show log コマンドの出力
•
コア ダンプ ファイルを収集します。コア ダンプの収集方法に関する詳細については、「show
context コマンド」(p.1-12)を参照してください。
プロセス ブロックのトラブルシューティング
プロセス ブロックをトラブルシューティングする手順は、次のとおりです。
手順概要
1. show processes blocked location node-id
2. follow job job-id location node-id
3. process restart job-id location node-id
手順詳細
ステップ 1
コマンドまたは操作
説明
show processes blocked location node-id
show processes blocked コマンドを数回使用し、出力を比較
して長時間ブロックされているプロセスがないかどうか確
認します。
RP/0/RP0/CPU0:router# show processes
blocked location 0/1/cpu0
ステップ 2
follow job job-id location node-id
RP/0/RP0/CPU0:router# follow job 234
location 0/1/cpu0
•
Name の欄には、ブロックされているプロセス名が表示
されます。
•
Blocked-on 欄には、
ブロックされているプロセスの PID
が表示されます。
•
State 欄に Mutex が表示される場合は、プロセス内のス
レッドがほかのスレッドを待っています。その場合、
Blocked-on 欄には PID ではなく PID と TID が表示され
ます。
•
ブロックされているプロセスは、ほかのプロセスに
よってブロックされることがあります。プロセスが別
なプロセスによってブロックされている場合は、ブ
ロッキングのチェーンを追跡し、ブロックしている根
源のプロセスを見つける必要があります。ブロッキン
グのチェーンを追跡するには、ステップ 2 に進みます。
他のプロセスをブロックしている根源のプロセスを追跡し
ます。次のコマンドは、プロセスが定期的に実行している
コード部分を示します。
Cisco IOS XR トラブルシューティング
OL-11138-02-J
7-17
第7章
プロセスのモニタリングおよびトラブルシューティング
プロセス ブロックのトラブルシューティング
ステップ 3
コマンドまたは操作
説明
process restart job-id location node-id
プロセスを再起動します。
RP/0/RP0/CPU0:router# process restart
234 location 0/1/cpu0
問題が解決しない場合は、シスコのテクニカルサポートに
ご連絡ください。シスコのテクニカルサポートの連絡窓口
についての情報は、
「はじめに」の「テクニカル サポート」
(p.xiii)を参照してください。
シスコのテクニカルサポートが参照しますので、次の情報
を収集してください。
•
show processes blocked location node-id command output
•
follow job job-id location node-id command output
•
show version コマンドの出力
•
show dll コマンドの出力
•
show configuration command output
•
show logging command output
•
次のファイルの内容:
disk0:/wdsysmon_debug/debug_env. number(ある場合)
Cisco IOS XR トラブルシューティング
7-18
OL-11138-02-J
Fly UP