目錄

簡介

必要條件

需求

採用元件

慣例

由於中斷而導致CPU使用率較高的可能原因

交換路徑不當

CPU執行校準修正

路由器流量過載

軟體錯誤

路由器上配置的語音埠

路由器上的主動非同步傳輸模式(ATM)介面

許多並行快速轉發(PXF)轉發到RP

CPU分析

show interfaces switching命令

用於在高CPU時獲得CPU分析的指令碼示例

相關資訊

簡介

本文說明由於中斷而導致CPU使用率較高的原因，並提供故障排除提示和准則。

必要條件

需求

本文件沒有特定需求。

採用元件

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

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

慣例

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

由於中斷而導致CPU使用率較高的可能原因

中斷級別上的CPU使用率較高主要是由於中斷級別上處理的資料包導致的。只要從路由器的控制檯或輔助埠輸出字元，就會生成中斷。

通用非同步接收器/發射器(UART)與路由器的處理速度相比速度緩慢，因此，儘管可能，控制檯或輔助中斷不太可能導致路由器上的CPU使用率高（除非路由器中有大量的tty線路在使用）。

由於中斷而導致CPU使用率較高的原因有幾個：

- 路由器上配置了不適當的交換路徑

- CPU正在執行對齊修正

- 路由器上流量超載

- 在路由器上運行的Cisco IOS®軟體中有一個錯誤

- 路由器上配置了語音埠

- 路由器上有活動的非同步傳輸模式(ATM)介面

- 從PXF傳送到路由處理器(RP)的資料包過多

交換路徑不當

若要排除此潛在問題，請驗證以下內容：

- 檢查路由器是否正在運行Cisco Express Forwarding:

- 驗證ip cef 全域性配置命令的配置。

- 發出show ip cef summary命令，確認思科快速轉發是否已啟用且工作正常。

- 驗證是否已啟用Cisco Express Forwarding作為所有介面的交換路徑。可從show cef interface和show ip interface輸出中看到這種情況。如果配置了Cisco快速轉發，但在介面上未啟用，則表示Cisco快速轉發不支援介面封裝。請檢視show cef not-cef-switched，以驗證Cisco Express Forwarding是否正常運行，即，使用Cisco Express Forwarding檢查資料包是否真正通過路由器交換。

- 使用show cef drop命令和show interfaces switching命令（這是一個隱藏命令，可用於查詢快取未命中），確認Cisco快速轉發沒有丟棄資料包。如果是這種情況，請參閱CEF疑難排解頁面。

- 驗證是否有任何介面配置了長訪問清單。

- 根據一般經驗法則，任何存取清單的長度超過10行，都視為較長。

- 反複檢視長訪問清單會佔用大量的CPU。使用NetFlow交換時，如果流已經在快取中，則不再需要檢查訪問清單。因此，在這種情況下，NetFlow交換將很有用。您可以通過發出ip route-cache flow 命令來啟用NetFlow交換。

- 請注意，如果在介面上同時配置了Cisco Express Forwarding和NetFlow，則將使用Cisco Express Forwarding做出交換決策。

- 驗證路由器上是否配置了NetFlow交換：

- 發出show ip cache flow 命令檢查統計資訊。檢視每秒的新流數。

- 如果未啟用Cisco Express Forwarding，請啟用Cisco Express Forwarding以加快交換決策。

- 如果沒有長訪問清單，請嘗試禁用NetFlow交換。

CPU執行校準修正

對齊錯誤是由未對齊的讀取和寫入引起的。例如，記憶體地址不是兩個位元組的偶數倍數的雙位元組讀取是對齊錯誤。

校準錯誤通常由軟體錯誤引起。CPU會更正此錯誤，但是如果需要進行許多更正，則這會成為CPU密集型操作。若要疑難排解此型別的錯誤，請參閱疑難排解虛假訪問、對齊錯誤和虛假中斷。

路由器流量過載

show interfaces和show interfaces switching（隱藏）命令的輸出提供有關哪些介面超載的資訊。要在日誌檔案中捕獲這些命令的輸出，以供日後分析，請按照以下步驟操作。

1. 發出terminal length 0命令。

2. 檢查show interfaces的輸出。檢查介面上的負載和節流器的數量。預設情況下，負載是超過五分鐘計算出的平均值。要更改此時間間隔，請發出load-interval seconds命令，其中seconds表示資料用於計算負載統計資訊的時間長度。使用30的倍數的值。

節流是路由器過載的很好指示。它們顯示埠上的接收器被禁用的次數，這可能是由於緩衝區或處理器過載所致。再加上中斷級別的CPU使用率高，節流表明路由器上存在流量過載。

3. 檢查show interfaces switching（隱藏）命令的輸出，以檢視過載介面上流經的流量型別（協定和交換路徑）。如果某些介面流量過載，請考慮重新設計網路中的流量或升級硬體。

4. 網路環路也是流量超載的一個原因。檢驗網路拓撲。

如果單個裝置以極高的速率生成資料包並因此使路由器超載的可能性，則可以通過將ip accounting mac-address {input|output}介面配置命令新增到超載介面的配置中來確定該裝置的MAC地址。

show interfaces [ ] mac-accounting 命令顯示收集的資訊。找到源裝置的MAC地址後，可以通過檢查show ip arp 命令的輸出找到相應的IP地址。

軟體錯誤

如果您懷疑路由器上運行的Cisco IOS軟體版本存在錯誤，可以檢查Bug工具包(僅供註冊客戶使用)中是否存在在類似環境中報告類似症狀的錯誤。

路由器上配置的語音埠

即使沒有流量，軟體也會繼續監控使用CPU資源的通道關聯訊號(CAS)。

路由器上的主動非同步傳輸模式(ATM)介面

即使沒有流量，ATM介面也會發出空信元（根據ATM標準）並繼續使用CPU資源。

許多並行快速轉發(PXF)轉發到RP

當PXF向RP傳送太多資料包時，RP可能會過載。通過發出show pxf accounting summary命令，您可以將轉發資料包的數量與傳入資料包的總數量進行比較。使用相同的命令找出資料包被轉發到RP的原因。這可能是軟體錯誤，或者PXF不支援流量。

CPU分析

CPU配置是確定CPU花費時間的低開銷方式。系統工作方式是每四毫秒對處理器位置進行取樣。記憶體中該位置的計數會遞增。此CPU使用率的根本原因將由CPU分析確定。

完成以下步驟即可執行CPU效能分析。CPU使用率已經完成，當您遇到高CPU使用率時。

注意：在啟用模式下必須鍵入所有這些命令

1. 捕獲show region的輸出，並獲取起始地址、結束地址和main:text區域的大小

2. 捕獲show memory statistics的輸出並檢查處理器記憶體中最大塊的大小。

3. 執行配置檔案任務中斷，只為中斷配置分析。

4. 將main:text區域的大小與可用處理器記憶體的最大塊的大小進行比較。理想情況下，最大塊應大於main:text。

如果最大塊小於main:text大小，則調整粒度，以確保分析能夠獲取處理器記憶體塊。

如果最大塊大於main:text區域，則使用粒度4。

如果最大塊大於main:text區域的一半，則使用粒度8。

如果最大塊大於main:text區域的四分之一，則使用10的粒度（十六進位制格式為16）。

注意：粒度必須是2的冪，並且必須儘可能小（但不小於4）

5. 通過執行配置檔案開始分析

Profile <starting address> <ending address> <granularity value>

起始地址和結束地址由步驟1確定。

6. 等待5到10分鐘

7. 通過執行配置檔案停止來停止分析

8. 捕獲show profile terse的輸出。

9. 確保通過unprofile all釋放記憶體

show interfaces switching命令

此命令用於確定介面上的活動交換路徑。有關Cisco IOS軟體中交換路徑的詳細資訊，請參閱配置交換路徑。

以下是一個介面的show interfaces switching命令的輸出示例：

RouterA#show interfaces switching

Ethernet0

Throttle count          0

Drops         RP          0         SP          0

SPD Flushes       Fast          0        SSE          0

SPD Aggress       Fast          0

SPD Priority     Inputs          0      Drops          0

Protocol       Path    Pkts In   Chars In   Pkts Out  Chars Out

Other    Process          0          0        595      35700

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

IP Process          4        456          4        456

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

IPX Process          0          0          2        120

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

Trans. Bridge Process          0          0          0          0

Cache misses          0

Fast         11        660          0          0

Auton/SSE          0          0          0          0

DEC MOP Process          0          0         10        770

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

ARP Process          1         60          2        120

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

CDP Process        200      63700        100      31183

Cache misses          0

Fast          0          0          0         0

Auton/SSE          0          0          0          0

輸出列出了介面上配置的所有協定的交換路徑，因此您可以輕鬆檢視通過路由器的流量型別和數量。下表說明了輸出欄位：

欄位

定義

流程

已處理的資料包。這些封包可以是目的地為路由器的封包，或是快速交換快取中不存在專案的資料包。

快取未命中數

快速交換快取中沒有條目的資料包。將處理此目的地的第一個封包（或流 — 取決於已設定的快速交換型別）。除非在傳出介面上明確禁用快速交換，否則所有後續資料包都將進行快速交換。

快速

快速交換資料包。預設情況下啟用快速交換。

奧頓/SSE

自主交換、矽交換或分散式交換資料包。僅在具有交換處理器或矽交換處理器的Cisco 7000系列路由器（分別用於自主交換或矽交換）或具有VIP的Cisco 7500系列路由器（用於分散式交換）上可用。

用於在高CPU時獲得CPU分析的指令碼示例

當CPU利用率超過75%時，此指令碼將輸出儲存在flash:CPU_Profile上：

service internal

event manager applet High_CPU

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.6 get-type

next entry-opge entry-val 75

exit-time 10 poll-interval 5

action 0.1 syslog msg "CPU Utilization is high"

action 0.2 cli command "enable"

action 0.4 cli command "show log | append flash:CPU_Profile.txt"

action 0.5 cli command "show process cpu sorted | append

flash:CPU_Profile.txt"

action 0.6 cli command "show interfaces | append

flash:CPU_Profile.txt"

action 1.1 cli command "configure terminal"

action 1.2 cli command "profile xxxxxxx yyyyyyyyZ"

action 1.3 cli command "profile start"

action 2.3 syslog msg "Entering TCLSH"

action 2.4 cli command "tclsh"

action 2.5 cli command "after 240000"

action 2.6 cli command "exit"

action 2.9 syslog msg "Exiting TCLSH"

action 3.0 cli command "profile stop"

action 3.1 cli command "show profile terse | append flash:CPU_Profile.txt"

action 3.2 cli command "clear profile"

action 3.3 cli command "unprofile all"

action 4.1 syslog msg "Finished logging information to flash:CPU_Profile.txt..."

action 4.2 cli command "end"

相關資訊

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

- 技術支援與文件 - Cisco Systems