本文檔介紹Exec和虛擬Exec進程,以及如何解決這些進程中的CPU使用率高的問題。
繼續閱讀本檔案之前,Cisco建議您先閱讀疑難排解Cisco路由器上的CPU使用率高。
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您在即時網路中工作,請確保在使用任何命令之前瞭解其潛在影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
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進程的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使用率較高的一些可能原因:
通過控制檯埠傳送的資料過多。
可能是因為路由器生成的控制檯消息過多。
使用show debugging 指令檢查路由器上是否已啟動任何偵錯。
使用(無日誌記錄控制檯)禁用路由器上的控制檯日誌記錄。
驗證主控台上是否顯示較長的輸出(例如show tech-support或show memory)。
Cisco IOS軟體存在錯誤。
使用Bug Toolkit(僅供註冊客戶使用)以在Cisco IOS軟體版本中尋找出現此症狀的錯誤。
exec命令用於非同步線路和輔助線路。
如果線路只有傳出流量,則應禁用此線路的Exec進程,因為如果連線到此線路的裝置(例如數據機)傳送一些未經請求的資料,Exec進程將在此線路上啟動。
如果路由器用作終端伺服器(用於反向telnet到其它裝置控制檯),則建議您在連線到其它裝置控制檯的線路上配置no exec。從控制檯返回的資料可能會啟動使用CPU資源的EXEC進程。
下面列出了虛擬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會話。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
12-Dec-2008 |
初始版本 |