本檔案介紹一些Cisco IOS®軟體排程器相關錯誤訊息的原因以及如何進行疑難排解。這些消息與特定平台無關。它們可以出現在支援Cisco IOS軟體的每個平台上。
以下是本文所述的訊息:
如果您遇到「SCHED...」 未在本頁面說明之錯誤訊息,請使用本頁面頂部的意見回饋表通知思科。
本文件沒有特定需求。
本文件所述內容不限於特定軟體和硬體版本。
Cisco IOS軟體排程程式是Cisco IOS軟體核心的一部分,它使用一系列表示每個進程狀態的進程隊列來管理系統中的所有進程。隊列儲存該狀態下進程的上下文資訊。當排程程式將其上下文從一個進程隊列移動到另一個進程隊列時,進程從一種狀態轉換到另一種狀態。部分流程隊列包括:
閒置隊列 — 包含仍然處於活動狀態但等待事件發生後再運行的進程。
Dead queue — 包含已終止的進程,但需要先回收其資源,然後才能從系統中完全刪除。
就緒隊列 — 包含符合運行條件的進程。有四個就緒隊列,每個隊列對應一個進程優先順序。當正在運行的進程掛起時,排程程式重新控制CPU,並使用演算法從四個就緒隊列中選擇下一個進程。
進程可以在路由器中發生各種事件時註冊以通知。只要註冊計時器過期,並且進程連續執行兩次後計時器值保持不變,就會出現此特定消息。這始終是一個與軟體無關的問題。
控制檯上的以下消息表明存在此類問題:
%SCHED-3-STUCKMTMR: Sleep with expired managed timer 1C7410, time 0x1063F9C52 (00:00:00 ago). -Process= "IP SNMP", ipl= 6, pid= 44 -Traceback= 31BC79A 31BC9C0 323E130
出現此錯誤訊息的流程是縮小這些回溯原因的良好指標。此清單顯示這些訊息出現的更常見原因:
IP簡單網路管理協定(SNMP)進程 — 在SNMP WriteNet請求期間可能出現以下消息:
%SCHED-3-STUCKMTMR: Sleep w/expired mgd timer 13AF58, time 0xBDBE878A (00:00:03 ago). -Process= "IP SNMP", ipl= 6, pid= 29 -Traceback= 313B218 313B5D2 3192A76 319EFEC 319F234 30FF17E 319F446 319F88E 30FEA70 3304C1E 33045F0 32F78E4 32F82AE 32F383E 32F7ABA 30FF19A %SYS-4-SNMP_WRITENET: SNMP WriteNet request. Writing current configuration to 146.61.55.230. %SYS-4-SNMP_WRITENET: SNMP WriteNet request. Writing current configuration to 146.61.10.20.
早期的Cisco IOS軟體版本包含一些IP SNMP輪詢相關問題。升級到最新的Cisco IOS軟體版本12.0或12.1主版本可解決此問題。這只是一條修飾性消息,不會出現可能影響路由器(或IP SNMP進程)運行的副作用。
虛擬整合網路服務(VINES)協定過程 — 這些回溯可以在為VINES配置的路由器上生成:
%SCHED-3-STUCKMTMR: Sleep w/expired mgd timer 6100606C, time 0x222DF318 (00:00:00 ago). -Process= "VINES Protocols", ipl= 6, pid= 60
該消息是隨機出現的,不會影響VINES效能。如果VINES丟失處理過期的計時事件(當系統處理器負載過重時),就會發生此問題。 事件最終會得到處理,但不會在其首次到期時得到處理。
VINES使用計時器處理和處理VINES地址解析協定(ARP)服務、處理器間通訊(IPC)會話和重傳、路由老化和某些伺服器服務。
這些訊息已在Cisco IOS軟體版本12.0S和12.1主要版本中修正。
與多協定標籤交換(MPLS)相關的流程 — 可在為MPLS配置的路由器上生成這些回溯:
%SCHED-3-STUCKMTMR: Sleep w/expired mgd timer 60C0E9B4, time 0x3952 (00:00:00 ago). -Process= "TDP Hello", ipl= 5, pid= 58 -Traceback= 600867F0 60086BB8 604390D4 60077E88 60077E74 %SCHED-3-STUCKMTMR: Sleep w/expired mgd timer 60CC2548, time 0x43006 (00:00:00 ago). -Process= "Tag Control", ipl= 5, pid= 56 -Traceback= 600867F0 60086BB8 60448320 604484F0 60077E88 60077E74
對標籤分發協定(TDP)、TDP Hello和標籤控制進程的事件循環的分析顯示,這些循環可以呼叫特定的process_wait_for_event進程,而不處理所有過期的計時器。環路被修復,以確保在掛起之前處理所有過期計時器。此問題在最新的Cisco IOS軟體版本12.0S和12.1主要版本中已解決。
此消息可能出現的進程清單並非詳盡無遺。這始終是一種無關緊要的訊息,因此不能證明Cisco IOS軟體升級的合理性。請確保在您的系列中運行最新的Cisco IOS軟體版本。如果註冊使用者在Cisco.com上可獲得的最新Cisco IOS軟體版本中仍出現該消息,請聯絡Cisco技術支援以開啟案例。此時,請提供包含錯誤訊息的完整show log,以及發生問題的路由器或交換器的show tech。
此消息表示所指示的進程已連續50次放棄控制,並且仍有待處理的未決事件。
控制檯上的以下消息表明存在此類問題:
%SCHED-3-THRASHING: Process thrashing on watched queue 'ARP queue' (count 54). -Process= "ARP Input", ipl= 5, pid= 6 -Traceback= 6020589C 60205BC4 60236520 601F4FD8 601F4FC4
這些驚悚支票旨在確定一個進程是否由於某種原因無法正常工作。對監視的隊列(即正在發出訊號通知的故障消息)的威脅檢查將檢查隊列中的元素數。如果此數字在給定數量的排程中保持不變,則列印消息。
某些隊列受長度限制。這表示如果路由器非常繁忙,隊列總是保持在最大值。因此,排程程式中的雜湊代碼會變得混亂,並且認為這些隊列未被處理。thrashing代碼確定應該處理隊列的進程未執行其任務並列印該雜湊消息。
排程程式在更高版本的Cisco IOS軟體代碼中已更改。為了跟蹤隊列是否已經更改(以便更好地確定進程是否正在雜湊),排程程式現在會記錄從隊列中刪除專案的情況,並且僅當暫時沒有刪除任何內容時才會列印雜湊消息。
在大多數情況下,隊列抖動消息是無關緊要的。
這些訊息並非一律由軟體錯誤引起。它們可以響應路由器上的即時或持續需求。增加或持續消息可能表示需要檢查流量負載。
注意:這些代碼更改在Cisco錯誤ID CSCdj68470(僅限註冊客戶)下報告。
每當進程收到它不知道如何處理的事件時,都會顯示此消息。例如:
%SCHED-3-UNEXPECTEDEVENT: Process received unknown event (maj 10, min 0). -Process= "IP SNMP", ipl= 0, pid= 23 -Traceback= 602842B8 6017CFB8 6017CFA4
導致此問題的原因可能有多種:
最可能的原因是,一個進程直接喚醒另一個進程,並將主要和次要事件編號傳遞給該進程。如果傳送進程喚醒了錯誤的進程,則接收進程不知道如何處理接收到的主要和次要事件編號。如果進程預期事件的主事件號和次事件號匹配,則進程可能會執行錯誤的操作,或者進程可能會列印此消息。使用show process命令的輸出幫助確定哪些進程可能已向進程傳送直接喚醒。
此問題的另一個可能原因是開發工程師已新增註冊事件的代碼,但尚未新增處理事件的代碼。
進程呼叫的子常式可能已註冊新事件,但在退出之前尚未註銷該事件。
這些訊息總是由於軟體錯誤所導致。根據不知道如何處理事件的流程,您可能會在Cisco IOS軟體中遇到不同的錯誤。
如果進程等於Exec或Virtual Exec,則最有可能遇到以下問題:
%SCHED-3-UNEXPECTEDEVENT: Process received unknown event (maj 80, min 0). -Process= "Exec", ipl= 0, pid= 20 -Traceback= 604A0D68 6049B400 6049C974 601B2F5C 601B338C 601CC384 601CC9E0 601F5628 602383EC 602383D8 or %SCHED-3-UNEXPECTEDEVENT: Process received unknown event (maj 80, min 0). -Process= "Virtual Exec", ipl= 0, pid= 2 -Traceback= 60479FA0 60474638 60476474 601B0E20 601B0A38 601E5088 601E5B08 601F0A54 60231324 60231310
此錯誤消息是由調試代碼造成的,這些代碼被意外地保留在某些舊版本的代碼中。它重新出現在Cisco IOS軟體12.0 mainline版本中。如果您已設定TACACS,並在路由器的指令行介面(CLI)上執行show line命令,則可能會發生錯誤訊息。該錯誤訊息對路由器的功能沒有影響,因此可以視為修飾性錯誤。清除此錯誤訊息的唯一方法是將Cisco IOS軟體升級為較新版本。
您必須至少根據您運行的系列運行Cisco IOS軟體版本12.0(11)、12.0(11)S或12.1(2)。但是,如果您遇到其他錯誤,請考慮升級到適用於對應培訓的最新Cisco IOS軟體。如果問題仍存在於最新的Cisco IOS軟體版本中,您可以聯絡Cisco技術支援以開啟一個新錯誤。此時,請準備好show logging命令的完整輸出以及錯誤消息和show version的輸出,以便解碼回溯。
有關此問題的詳細資訊,請參閱Cisco錯誤ID CSCdp17107(僅限註冊客戶)。
每當嘗試註冊某個事件而不首先為該事件建立資料結構時,都會顯示此消息。這是Cisco IOS軟體中的內部軟體錯誤。輸出如下所示:
%SCHED-2-WATCH: Attempt to enqueue uninitialized watched queue (address 0). -Process= "Net Input", ipl= 0, pid= 29 -Traceback= 601B821C 60193428 604F59EC 604F6110 601C09F8 601934E0 6019304C 601A65E8 601A65D4
任何型別的卡的聯機插入和拆除(OIR)過程中都可能會遇到此類錯誤消息。例如,在Cisco 12000系列網際網路路由器上,當您更換GSR12016系列路由器中的Gigabit路由處理器(GRP)卡後,可以看到以下訊息:
%SCHED-2-WATCH: Attempt to set uninitialized watched boolean (address 0). -Process= "LC Crash Complete Process", ipl= 0, pid= 29 -Traceback= 60189CA8 60244E08 6017562C 60175618
早期版本的代碼包含一些冗餘問題。其中大多數問題已在最新的Cisco IOS軟體版本12.0S中修正。請務必運行Cisco IOS軟體版本,該版本遲於或至少等於Cisco IOS軟體版本12.0(18)S1和12.0(17)S2。如果重新拔插有故障的卡無法正常工作,則路由器冷重新載入很可能會解決此問題。
這些訊息類似7500系列路由器上的以下輸出:
%OIR-6-REMCARD: Card removed from slot 3, interfaces disabled %SCHED-2-WATCH: Attempt to set uninitialized watched Boolean (address 0). -Process= "OIR Handler", ipl= 0, pid= 7 -Traceback= 60236120 60C64838 60280594 60280874 602211BC 602211A8
大多數情況下,這些SCHED錯誤消息是由於Cisco IOS軟體中的內部軟體錯誤引起的。因此,排除這些錯誤訊息的第一步是尋找已知錯誤。
升級至版本系列中最新的Cisco IOS軟體映像可以清除所有已修復的Cisco IOS軟體排程器相關錯誤。
如果問題仍然存在,請與您的思科支援代表聯絡,並提供錯誤消息的準確副本,以及show tech-support和show log命令的輸出。
如果在執行本檔案中的疑難排解步驟後仍需要協助,您可以向思科技術支援開啟個案例(僅限註冊客戶)。請務必包括以下資訊: |
---|
註:除非必要,否則不要在收集此資訊之前手動重新載入或重新啟動路由器。這可能導致您丟失確定問題根本原因所需的重要資訊。 |
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
24-Jun-2008 |
初始版本 |