内容

概要

前提条件

要件

使用するコンポーネント

表記法

EXEC プロセスおよび仮想 EXEC プロセスとは

EXEC および仮想 EXEC プロセスが CPU 使用率を高める原因

EXEC プロセスでの CPU 高使用率に関するトラブルシューティング

仮想 EXEC プロセスでの CPU 高使用率に関するトラブルシューティング

関連情報

概要

このドキュメントでは、EXEC プロセスと仮想 EXEC プロセスについて説明し、これらのプロセスの高い CPU 使用率をトラブルシュートする方法について説明します。

前提条件

要件

このドキュメントの前に、『Cisco ルータの CPU 使用率が高い場合のトラブルシューティング』を読むことを推奨します。

使用するコンポーネント

このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。

表記法

ドキュメント表記の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。

EXEC プロセスおよび仮想 EXEC プロセスとは

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 および仮想 EXEC プロセスが CPU 使用率を高める原因

これらのセッションで大量のデータが送受信されると、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 高使用率に関するトラブルシューティング

次のリストでは、Exec プロセスで CPU 使用率が高くなる理由を説明しています。

- コンソール ポートを経由して限度以上に大量のデータが送信されている。

ルータによって生成されたコンソール メッセージが多すぎることが原因として考えられます。

1. show debugging コマンドで、ルータで何らかのデバッグが開始されているかどうかを調べます。

2. ルータのコンソールロギングを無効にします(ロギングコンソールなし)。

3. コンソールに長い出力が表示されているかどうかを確認します（たとえば、show tech-support または show memory）。

- Cisco IOS ソフトウェアに不具合がある。

Bug Toolkit（登録 ユーザ専用）を使用して、該当する Cisco IOS ソフトウェア リリースで、同じ症状が出る不具合を調べてください。

- exec コマンドが非同期回線と補助回線に対して設定されている。

- 回線に発信トラフィックのみが存在する場合、この回線用の Exec プロセスを無効化する必要があります。この回線に接続されたデバイス（モデムなど）から不要なデータが送信された場合に、この回線で Exec プロセスが開始されるためです。

- ルータがターミナル サーバとして（他のデバイス コンソールへのリバース Telnet に）使用されている場合、これらの他のデバイスのコンソールに接続されている回線に no exec を設定することが推奨されます。こうしないと、コンソールから戻されるデータにより Exec プロセスが開始され、CPU リソースが使用されてしまいます。

仮想 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 をクリアする必要があります。

関連情報

- Cisco ルータの CPU 使用率が高い場合のトラブルシューティング

- テクニカルサポート - Cisco Systems