目錄

簡介

必要條件

需求

採用元件

慣例

什麼是Exec和虛擬Exec進程？

Exec和虛擬Exec進程如何導致CPU使用率高？

排除Exec進程中的CPU使用率高問題

對虛擬Exec進程中的CPU使用率過高進行故障排除

相關資訊

簡介

本文檔介紹Exec和虛擬Exec進程，以及如何解決這些進程中的CPU使用率高的問題。

必要條件

需求

繼續閱讀本檔案之前，Cisco建議您先閱讀疑難排解Cisco路由器上的CPU使用率高。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您在即時網路中工作，請確保在使用任何命令之前瞭解其潛在影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

什麼是Exec和虛擬Exec進程？

Cisco IOS®軟體中的Exec進程負責路由器的tty線路（控制檯、輔助、非同步）上的通訊。虛擬Exec進程負責vty線路（telnet會話）。

Exec進程和虛擬Exec進程是中優先順序進程，因此，如果有其他進程具有更高的優先順序（高優先順序或關鍵），則優先順序較高的進程將獲得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利用率會增加。

這是因為當路由器希望透過這些線路傳送簡單字元時，路由器會使用一些CPU資源：

- 對於控制檯(Exec)，路由器每個字元使用一個中斷。

可從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。從控制檯返回的資料可能會啟動使用CPU資源的EXEC進程。

對虛擬Exec進程中的CPU使用率過高進行故障排除

下面列出了虛擬Exec進程中CPU使用率較高的一些可能原因：

- Cisco IOS軟體中的軟體錯誤

使用Bug Toolkit(僅供已註冊客戶使用)為您的Cisco IOS軟體版本尋找具有此症狀的錯誤。

- 通過telnet會話傳送的資料過多。

在虛擬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

- 由於虛擬Exec進程，掛起的telnet會話會導致高CPU。為了清除掛起的telnet會話，大多數情況下需要重新載入裝置。清除掛起的telnet會話的另一種方法是清除TCP進程。可以使用show tcp brief指令識別TCP程式，如以下輸出所示：

Router#show tcp brief

TCB       Local Address           Foreign Address        (state)

02FA62D0  172.16.152.75.23        dhcp-171-69-104-.3013  ESTAB

從以上輸出中，需要清除TCP進程02FA62D0，以便使用clear tcp tcb 0x02fa62d0 命令清除掛起的telnet會話。

相關資訊

- 疑難排解思科路由器 CPU 高使用率的問題

- 技術支援 - Cisco Systems