このドキュメントでは、EXEC プロセスと仮想 EXEC プロセスについて説明し、これらのプロセスの高い CPU 使用率をトラブルシュートする方法について説明します。
このドキュメントの前に、『Cisco ルータの CPU 使用率が高い場合のトラブルシューティング』を読むことを推奨します。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。
ドキュメント表記の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
Cisco IOS® ソフトウェアでの Exec プロセスは、ルータの TTY 回線(コンソール、補助、非同期)での通信を受け持っています。仮想 Exec プロセスが受け持つのは VTY 回線(Telnet セッション)です。
Exec および仮想 Exec プロセスは優先順位が中程度のプロセスなので、より優先順位の高い(High または Critical)のプロセスがあると、優先順位がより高いプロセスが CPU リソースを獲得します。
router#show process | i CPU|Exec CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0% PID QTy PC Runtime (ms) Invoked uSecs Stacks TTY Process 22 M* 0 9644 1733 5564 9732/12000 0 Exec 46 ME 80468980 28 6 466610520/12000 66 Virtual Exec
このコマンドの出力についての詳細は、『show processes コマンド』を参照してください。
これらのセッションで大量のデータが送受信されると、Exec プロセスによる CPU 使用率が高まります。
これらの回線では、ルータが単に 1 文字を送信する場合でも CPU リソースが使用されてしまうということが、この原因です。
コンソール(Exec)の場合、ルータでは 1 文字ごとに割り込み使用して転送が行われます。
コンソールの割り込みは、show stacks コマンドの出力で確認できます。
router#show stacks Minimum process stacks: Free/Size Name 11516/12000 Router Init 9404/12000 Init 5520/6000 AIM_MIB_CREATION 5448/6000 RADIUS INITCONFIG 9728/12000 Virtual Exec Interrupt level stacks: Level Called Unused/Size Name 1 23035463 7008/9000 Network interfaces 2 0 9000/9000 Timebase Reference Interrupt 3 0 9000/9000 PA Management Int Handler 6 9791 8892/9000 16552 Con/Aux Interrupt 7 1334963882 8920/9000 MPC860 TIMER INTERRUPT
VTY 回線(仮想 Exec)の場合、Telnet セッションは TCP パケットを作成し、文字を Telnet クライアントに送信する必要があります。
次のリストでは、Exec プロセスで CPU 使用率が高くなる理由を説明しています。
コンソール ポートを経由して限度以上に大量のデータが送信されている。
ルータによって生成されたコンソール メッセージが多すぎることが原因として考えられます。
show debugging コマンドで、ルータで何らかのデバッグが開始されているかどうかを調べます。
ルータのコンソールロギングを無効にします(ロギングコンソールなし)。
コンソールに長い出力が表示されているかどうかを確認します(たとえば、show tech-support または show memory)。
Cisco IOS ソフトウェアに不具合がある。
Bug Toolkit(登録 ユーザ専用)を使用して、該当する Cisco IOS ソフトウェア リリースで、同じ症状が出る不具合を調べてください。
exec コマンドが非同期回線と補助回線に対して設定されている。
回線に発信トラフィックのみが存在する場合、この回線用の Exec プロセスを無効化する必要があります。この回線に接続されたデバイス(モデムなど)から不要なデータが送信された場合に、この回線で Exec プロセスが開始されるためです。
ルータがターミナル サーバとして(他のデバイス コンソールへのリバース Telnet に)使用されている場合、これらの他のデバイスのコンソールに接続されている回線に no exec を設定することが推奨されます。こうしないと、コンソールから戻されるデータにより Exec プロセスが開始され、CPU リソースが使用されてしまいます。
次のリストでは、仮想 Exec プロセスで CPU 使用率が高くなる理由を説明しています。
Cisco IOS ソフトウェアの不具合
Software Bug Toolkit(登録ユーザ専用)を使用して、該当する Cisco IOS ソフトウェア リリースで、同じ症状が出る不具合を調べてください。
Telnet セッションで過剰なデータが送信されています。
Virtual Exec プロセスで CPU 使用率が高くなる最も一般的な理由は、ルータから Telnet セッションに過剰なデータが送信されることです。
これは、その telnet セッションで、大量の出力が出されるコマンド(show tech-support、show memory など)が実行されたときに生じる可能性があります。
各 VTY セッションで転送されるデータの総量は、show tcp コマンドで確認できます。
router#show tcp vty 0
tty66, virtual tty from host 10.48.77.64
Connection state is ESTAB, I/O status: 1, unread input bytes: 1
Local host: 10.48.77.27, Local port: 23
Foreign host: 10.48.77.64, Foreign port: 11006
........
Datagrams (max data segment is 1460 bytes):
Rcvd: 525 (out of order: 0), with data: 53, total data bytes: 87
Sent: 366 (retransmit: 257, fastretransmit: 0), with data: 356, total data bytes:
158187
膨大な Telnet セッションが生じると、仮想 Exec プロセスにより CPU 使用率が高くなります。膨大な Telnet セッションをクリアするには、多くの場合、デバイスをリロードする必要があります。膨大な Telnet セッションをクリアするもう 1 つの方法は、TCP プロセスをクリアすることです。TCP プロセスは、次の出力のように、show tcp brief コマンドで特定できます。
Router#show tcp brief TCB Local Address Foreign Address (state) 02FA62D0 172.16.152.75.23 dhcp-171-69-104-.3013 ESTAB
上記の出力例では、膨大な Telnet セッションをクリアするために、clear tcp tcb 0x02fa62d0コマンドで TCP プロセス 02FA62D0 をクリアする必要があります。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
12-Dec-2008 |
初版 |