この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、メモリ割り当て障害(MALLOCFAIL)の症状と考えられる原因について説明し、これらの問題を解決する方法について詳しく説明します。
このドキュメントに特有の要件はありません。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
すべての Cisco IOS® ソフトウェア バージョン
すべての Cisco ルータ
注:このドキュメントは、CatOSまたはMGXプラットフォームを使用するCisco Catalystスイッチには適用されません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
メモリ割り当ての失敗とは、次のいずれかを意味します。
ルータが使用可能なメモリを(一時的または継続的に)すべて使い果たした。
メモリが細かく断片化し、ルータが使用可能なブロックを見つけることができない。これは、プロセッサメモリ(Cisco Internet Operating System(Cisco IOS)で使用される)またはパケットメモリ(着信および発信パケットで使用される)で発生する可能性があります。
メモリ割り当てエラーの症状には次のようなものがありますが、これらに限定されるものではありません。
コンソールまたはログメッセージ:「%SYS-2-MALLOCFAIL: Memory allocation of 1028 bytes failed from 0x6015EC84, Pool Processor, alignment 0」
Telnet セッションの拒否
コンソールにどのコマンドを入力しても、show processor memory コマンドが表示される。
一部の show コマンドから何も出力されない。
「Low on memory」メッセージが出力される。
コンソールにメッセージ「Unable to create EXEC - no memory or too many processes」が出力される。
ルータがハングし、コンソールがまったく応答しない。
ルータのメモリが不足すると、そのルータに Telnet できなくなる場合があります。この場合は、すぐにコンソール ポートにアクセスして、トラブルシューティングに必要なデータを収集することが重要です。ただし、コンソールポートに接続すると、次のように表示されます。
%% Unable to create EXEC - no memory or too many processes
上記のメッセージが表示された場合は、コンソール接続を可能にする十分なメモリすらありません。ただし、この場合でもコンソールからデータを取得する方法があります。ルータがメモリを解放するのを手伝えば、コンソールが応答し、トラブルシューティングのためにルータから必要なデータをキャプチャできます。
注:ルータでBorder Gateway Protocol(BGP)が設定されている場合は、「最適なルーティングの実現とBGPメモリ消費の削減」を参照して、このプロセスに関連するメモリ消費を削減できます。
コンソールポートが非常に低いメモリ状態にあるときにデータをキャプチャするには、次の手順を実行します。
ルータのインターフェイスから LAN ケーブルと WAN ケーブルを取りはずします。これにより、ルータがパケットの受け渡しを停止する可能性があります。
コンソールをもう一度チェックします。応答があるか、またコマンドを実行できるかを確認します。しばらくすると、コンソールが応答できるだけの十分なメモリが必要になります。
特権 EXEC モード(Router#)から必要な情報を収集します。少なくとも、show memory allocating-process totals (またはshow memory summary if show memory allocating-process totals is not available)、show logging 、および可能であればshow technical-support コマンドの出力すべてを収集する必要があります。
必要なデータを収集し終えたら LAN リンクと WAN リンクをすべて再接続し、引き続きルータのメモリ使用状況を監視します。
show logging コマンドを実行すると、次のようなメッセージが表示されます。
%SYS-2-MALLOCFAIL: Memory allocation of [X] bytes failed from 0x6015EC84, pool [Pool], alignment 0 -Process= "[Process]" ipl= 6, pid=5
[X] はルータが割り当てを試みたものの、割り当てに必要な空きメモリが見つからなかったバイト数です。
[Pool]は、プロセッサメモリ(「Pool Processor」)またはパケットメモリ(「pool I/O」)が影響を受けるかどうかを示します。ハイエンドルータ(7000、7500シリーズ)では、メインのDynamic Random Access Memory(DRAM;ダイナミックランダムアクセスメモリ)にバッファが搭載されているため、パケットメモリの不足は「プールプロセッサ」として報告されることがあります。7200シリーズおよびVersatile Interface Processor(VIP)カードでも、パケットメモリのプールProtocol Control Information(「pool PCI 」)でエラーが報告される場合があります。
[Process] はメモリ不足の影響を受けたプロセスです。
メモリ サイズが Cisco IOS ソフトウェア イメージの要件を満たしていない
既知の問題
70x0 問題(フラッシュまたはネットブートから大きな Cisco IOS ソフトウェアをロードする場合に発生)
IP Input および CiscoWorks UT ディスカバリ
一般的に、MALLOCFAILエラーは、ネットワークで動作するワームやウイルスなどのセキュリティの問題が原因で発生します。ルータのCisco IOSのアップグレードなど、ネットワークに対する最近の変更がない場合は、これが原因である可能性が特に高くなります。通常は、アクセスリストに回線を追加するなどの設定変更を行うことで、この問題の影響を軽減できます。『Cisco 製品の Security Advisory と Notice』のページには、考えられる原因の検出方法と、具体的な回避策が記載されています。
詳細については、次を参照してください。
最初に、[Download Software Area] で、実行する機能セットとバージョンの最小メモリサイズを確認します。これらが十分満たされていることを確認します。Cisco.comのメモリ要件は、ほとんどの企業ネットワークでルータが正しく機能するために推奨される最小サイズです。実際のメモリ要件は、プロトコル、ルーティングテーブル、およびトラフィックパターンによって異なります。
注:シスコの内部情報およびツールにアクセスできるのは、登録ユーザのみです。
ご使用のシスコデバイスの、show memory allocating-process totalsコマンド、show memory summaryコマンド、またはshow technical-supportコマンド(イネーブルモード)の出力データがあれば、アウトプットインタープリタ(登録ユーザ専用)を使用して、今後予想される障害と修正を表示できます。
注:シスコの内部情報およびツールにアクセスできるのは、登録ユーザのみです。
メモリリークは、プロセスがメモリを要求または割り当て、そのタスクが終了したときにメモリを解放(割り当て解除)するのを忘れたときに発生します。結果として、ルータがリロードされるまでの間、メモリ ブロックが確保されます。時間が経つにつれて、プロセスによって割り当てられるメモリ ブロックが増え、最終的に使用可能な空きメモリがなくなります。この時点でのメモリ不足の状況の重大度に基づいて判断できる唯一のオプションは、ルータをリロードして再び動作させることです。
これは、Cisco Internet Operating System(Cisco IOS)のバグです。この問題を解決するには、リリーストレインの最新バージョンにアップグレードします。たとえば、Cisco IOSソフトウェアリリース11.2(14)を実行している場合は、最新の11.2(x)イメージにアップグレードします。
それでも問題が解決しない場合、またはルータのアップグレードを希望しない場合は、show processes memoryコマンドを一定の間隔で(たとえば、高速リークと低速リークのどちらに基づいて、数時間または数日おきに)入力します。これによって、空きメモリの減少が続き、元に戻らないかどうかをチェックします。空きメモリが減少する速度は、リークの原因となるイベントが発生する頻度によって異なります。メモリは決して解放されないため、時間の経過とともにメモリスナップショットを取得すれば、メモリを使用するプロセスを追跡できます。さまざまなプロセスが必要に応じてメモリの割り当てと割り当て解除を行うため、違いを確認できますが、リークが続くにつれて、より多くのメモリを継続的に消費するプロセスを確認する必要があります。
注:Border Gateway Protocol(BGP;ボーダーゲートウェイプロトコル)やOpen Shortest Path First(OSPF)ルータなどの一部のプロセスでは、通常は1 MBを超えるメモリが使用されます。これは、メモリリークが発生していることを意味するものではありません。
より多くのメモリを消費しているプロセスを特定するには、その時間間隔でshow processes memoryコマンドのHoldingカラムを比較します。あるプロセスが数 MB のメモリを保持していることが、はっきりとわかる場合があります。問題のプロセスを発見するために、スナップショットを数回取る必要がある場合もあります。著しい量のメモリが失われる場合は、さらに踏み込んだトラブルシューティングを行うために、show memory allocating-process totals コマンドまたは show memory summary コマンドの結果を収集します。次に Cisco Technical Assistance Center(TAC)に連絡し、収集した情報と、ルータの show technical-support サマリーを提供してください。
アウトプットインタープリタ ツールを使用すると、show memory allocating-process totals コマンドまたは show memory summary の出力の分析結果が得られます。
注:シスコの内部情報およびツールにアクセスできるのは、登録ユーザのみです。
次の表に、show memory summaryコマンド出力の最初の3行を示します。
Router>show memory summary Head Total (b) Used (b) Free (b) Lowest (b) Largest (b) Processor 60AB4ED0 5550384 2082996 3467388 3464996 3454608 I/O 40000000 16777216 1937280 14839936 14839936 14838908
Total = システム イメージがデータ構造をロードおよびビルドした後に使用可能なメモリ量の合計。
Used = 現在割り当てられているメモリの量。
Free = 現在空いているメモリの量。
Lowest = ルータが最後にブートされてから記録された最小の空きメモリ量。
Largest = 現在使用可能な空きメモリ ブロックの最大量。
show memory allocating-process totals コマンドには、show memory summary コマンドの最初の 3 行と同じ情報が含まれています。
show processes memory コマンドの出力からは次のことがわかります。
Router>show processes memory Total: 3149760, Used: 2334300, Free: 815460 PID TTY Allocated Freed Holding Getbufs Retbufs Process 0 0 226548 1252 1804376 0 0 *Initialization* 0 0 320 5422288 320 0 0 *Scheduler* 0 0 5663692 2173356 0 1856100 0 *Dead* 1 0 264 264 3784 0 0 Load Meter 2 2 5700 5372 13124 0 0 Virtual Exec 3 0 0 0 6784 0 0 Check heaps 4 0 96 0 6880 0 0 Pool Manager 5 0 264 264 6784 0 0 Timers 6 0 2028 672 8812 0 0 ARP Input 7 0 96 0 6880 0 0 SERIAL A' detect 8 0 504 264 7024 0 0 ATM ILMI Input 9 0 0 0 6784 0 0 ILMI Process 10 0 136 0 6920 0 0 M32_runts pring 11 0 136 0 6920 0 0 Call drop procs 12 0 340 340 12784 0 0 ATMSIG Timer 13 0 445664 442936 13904 0 0 IP Input 14 0 2365804 2357152 17992 0 0 CDP Protocol 15 0 528 264 7048 0 0 MOP Protocols 16 0 188 0 9972 0 0 IP Background 17 0 0 1608 6784 0 0 TCP Timer 18 0 5852116 0 14236 0 0 TCP Protocols
Allocated = ルータがブートして以降、プロセスによって割り当てられたメモリの総バイト数。
Freed = このプロセスによって解放されたメモリの総バイト数。
Holding = このプロセスによって現在保持されているメモリの総バイト数。このカラムは、このプロセスに割り当てられているメモリの実際の量を示しているため、トラブルシューティングの際には最も重要です。Holding は Allocated から Freed を引いた値とは必ずしも一致しません。これは、あるプロセスに割り当てられたメモリのブロックが、後で別のプロセスによって空きプールに戻される場合があるためです。
*Dead* プロセスは、実際のプロセスではありません。これは、終了した別のプロセスのコンテキストの下で割り当てられたメモリを説明するために存在します。このプロセスに割り当てられたメモリはカーネルによって回収され、ルータ自体によって必要に応じてメモリ プールに戻されます。これは、Cisco IOSがメモリを処理する方法です。メモリ ブロックは、そのブロックを作成したプロセスが終了して実行されなくなった場合に Dead 状態であると見なされます。各ブロックには、そのブロックを作成したプロセスのアドレスおよび pid が記録されています。定期的なメモリの集計中に、スケジューラがブロックpidから検出したプロセスが、ブロックが記憶していたプロセスと一致しない場合、ブロックはデッドとしてマークされます。
したがって、プロセス *Dead* に属するとマーキングされているメモリは、すでに実行されなくなったプロセスによって割り当てられたメモリです。通常、このような状態のメモリは大量に存在します。以下が一例です。
Telnetセッション中にネットワークアドレス変換(NAT)が設定されると、メモリが割り当てられます。このメモリは、Telnet プロセス(「Virtual Exec」)で割り当てられたものと見なされます。このプロセスが終了した後も、NAT 構成のためのメモリはまだ使用されています。これは、*dead*プロセスで示されます。
どのコンテキストでメモリが割り当てられたかを確認するには、 show memory dead
[What]列の下で次のコマンドを実行します。
Router#show memory dead Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) I/O 600000 2097152 461024 1636128 1635224 1635960 Processor memory Address Bytes Prev. Next Ref PrevF NextF Alloc PC What 1D8310 60 1D82C8 1D8378 1 3281FFE Router Init 2CA964 36 2CA914 2CA9B4 1 3281FFE Router Init 2CAA04 112 2CA9B4 2CAAA0 1 3A42144 OSPF Stub LSA RBTree 2CAAA0 68 2CAA04 2CAB10 1 3A420D4 Router Init 2ED714 52 2ED668 2ED774 1 3381C84 Router Init 2F12AC 44 2F124C 2F1304 1 3A50234 Router Init 2F1304 24 2F12AC 2F1348 1 3A420D4 Router Init 2F1348 68 2F1304 2F13B8 1 3381C84 Router Init 300C28 340 300A14 300DA8 1 3381B42 Router Init
メモリリークが検出され、*Dead*プロセスがメモリを消費しているように見える場合は、 show memory dead
Cisco TACに提供された情報に含まれています。
これは確認が非常に困難な原因の 1 つです。この問題の特徴は、空きメモリが大量にあるにもかかわらず、「Lowest」カラムの値が小さい点にあります。このケースでは、正常または異常なイベント(たとえば、大量のルーティングによって不安定になるなど)が原因で、ルータが短時間のうちにきわめて大量のプロセッサ メモリを使用し、この間にメモリが枯渇します。この状況が発生している間は、ルータから MALLOCFAIL が報告されます。その直後にメモリが解放され、問題が解消されることがあります(たとえば、ネットワークが安定します)。メモリ不足は、次のような要因が組み合わさって発生する場合もあります。
メモリ リークによって大量のメモリが消費され、続いてネットワークが不安定になって空きメモリがゼロになる。
ルータに最初から十分なメモリがないにもかかわらず、まれなネットワーク イベントでしか問題が顕在化しない。
ルータがリブートされていない場合は、 show memory allocating-process totals
コマンド(または show memory summary
もし show memory allocating-process totals
は使用できません)を参照し、最初の3行を確認します。ログメッセージは、どのプロセスが大量のメモリを消費しているかについての手がかりになります。
メモリが大量に使用される原因が、
通常のイベントの場合は、メモリの増設が解決策になります。
まれなイベント、または異常なイベントの場合は、関連する問題を修正する必要があります。その後、将来の「保険」のために余分なメモリを購入することを決定できます。
この状況は、あるプロセスが大量のプロセッサメモリを消費し、そのほとんどまたはすべてを解放した後、このプロセスまたは問題全体でメモリを割り当てた他のプロセスによって割り当てられたメモリの断片が残っていることを意味します。同じイベントが何度も発生すると、メモリは非常に小さなブロックに断片化する可能性があり、大きなメモリブロックを必要とするすべてのプロセスが、必要なメモリ量を取得できなくなります。これにより、ルータの動作に影響が及び、メモリが著しく断片化している場合は、ルータに接続してプロンプトを表示できない場合があります。
この問題の特徴は、「Largest」列(20,000バイト未満)の値が show memory
コマンドを使用する必要がありますが、「Freed」列に十分な値(1MB以上)を指定するか、2つの列の間に大きな差異がある場合に使用します。これは、Cisco IOSにフラグメンテーションルーチンが存在しないため、ルータのメモリが非常に少なくなったときに発生する可能性があります。
メモリ断片化の疑いがある場合は、いくつかのインターフェイスをシャットダウンします。これにより、フラグメント化されたブロックが解放されます。これが動作すると、メモリは正常に動作し、メモリを追加するだけで済みます。インターフェイスをシャットダウンしても役に立たない場合は、バグである可能性があります。この場合は Cisco のサポート担当者に連絡し、収集した情報を提供してください。
この状況は、エラー メッセージ中のプロセスによって特定できます。プロセスが次の例のように<interrupt level>とリストされている場合、メモリ割り当ての失敗はソフトウェアの問題が原因です。
"%SYS-2-MALLOCFAIL: Memory allocation of 68 bytes failed from 0x604CEF48, pool Processor, alignment 0-Process=, ipl= 3"
これは、Cisco Internet Operating System(Cisco IOS)のバグです。Bug Toolkitを使用して、この問題に対応するソフトウェアのバグIDを検索できます。ソフトウェアの不具合を特定したら、問題を解決するための修正が含まれたバージョンの Cisco IOS ソフトウェアにアップグレードします。
注:シスコの内部情報およびツールにアクセスできるのは、登録ユーザのみです。
ユーザごとにアクセス リストを使用すると、大量のメモリを消費する場合があります。この場合には、アクセス リストはミニ Access Control List(ACL; アクセス コントロール リスト)として分類するには大き過ぎるため、ターボ ACL としてコンパイルされます。この場合、毎回 TACL プロセスが起動され、新しい ACL が処理されます。その結果、コンパイル時間と利用可能なプロセス時間に基づいて許可または拒否されるトラフィックが発生する可能性があります。
コンパイルされた ACL は、XCM に送信される必要があります。利用可能な領域が非常に少ないためにメモリ不足に陥った場合は、コンソール メッセージが表示され、メモリ デフラグ ツールが起動します。
回避策は次のとおりです。
簡潔なACLを使用し、ミニACLとしてコンパイルできるアプリケーションコントロールエンジン(ACE)の数を減らし、メモリ消費とコンパイル時のプロセス電力の両方を削減します。
ルータで、RADIUS アトリビュート filterID を使用して参照される事前定義された ACL を使用する。
7000 Route Processor(RP; ルート プロセッサ)がフラッシュからイメージをブートするときは、メモリにまず ROM イメージがロードされ、次にフラッシュ イメージがロードされます。古いRPには16 MBのメモリしかなく、バージョン11.0以降のCisco IOSソフトウェアリリースのエンタープライズバージョンは、非圧縮時に8 MBより大きくなります。したがって、ROMからイメージをロードした後でフラッシュにロードすると、7000 RPでメモリが不足するか、ブートアッププロセス中にメモリがフラグメント化され、ルータにメモリ関連のエラーメッセージが表示される可能性があります。
この問題を解決するには、コンフィギュレーション レジスタを使用して Fast Boot を有効にします。これにより、RP は ROM から Cisco IOS ソフトウェア イメージの最少サブセットのみをロードし、次にフラッシュから Cisco IOS ソフトウェア全体をロードします。ファストブートを有効にするには、コンフィギュレーションレジスタを0x2112に設定します。これにより、ブートプロセスの速度も向上します。
CiscoWorksのUTディスカバリ機能を使用すると、一部のルータで空きメモリの量が非常に少なくなる場合があります。show proc memoryコマンドは、「IP input」プロセスによって保持されているメモリの量を示すことができます。これは「IP Input」プロセスの「正常または異常プロセスによる大量のメモリ使用」の問題に特有の現象です。またメモリ不足が原因でメモリが断片化すると、「メモリ断片化」の問題が発生することもあります。
UT ディスカバリ機能を使用すると、検出されたすべてのサブネット内のすべての IP に対して、ネットワーク管理ステーションから一斉に ping が送信されます。メモリの問題は、新しい宛先ごとに新しいキャッシュエントリが作成されるため、ルータのIPファーストスイッチングキャッシュのサイズが大きくなることが原因で発生します。キャッシュ内のエントリに使用されるマスクはサブネット化の方法によって異なるため、メジャーネットワークに32ビットマスクのアドレス(ループバックアドレスなど)が存在すると、そのネットワークのすべてのエントリが32ビットマスクを使用することになります。その結果、膨大な数のキャッシュエントリが作成され、大量のメモリが使用されます。
最善の解決策は、UT ディスカバリを無効にすることです。これを行うには、次の手順を実行します。
C:\Program Files\CSCOpx\etc\cwsi\ANIServer.properties に移動します。
「UTPingSweep=0」を追加します。
ANI を再始動します。
これにより、User Trackingテーブルで一部のエンドサーバが欠落したり、古くなったりすることがあります(これは、UTに依存するUser Registration Toolと呼ばれる別のシスコアプリケーションの問題である可能性があります)。ただし、SNMPトラフィックのみを使用するCampus Discoveryには影響しません。CEFスイッチングを使用すると、この状況を改善することもできます(CEFでは、IPキャッシュはブートアップ時にルーティングテーブルから作成されます)。CEF とその他の使用可能なスイッチング パスについての詳細は、『ネットワークに最適なルータ スイッチング パスの選択方法』を参照してください。
同様のメモリ不足状況につながるアプリケーションは、他にも多数存在します。ほとんどの場合、問題の根本的原因は、ルータではなくアプリケーション自体にあります。通常は、アプリケーションの設定をチェックすることによって、これらのパケットストームを防止できる必要があります。
一部のルータ(2600、3600、および 4000 シリーズなど)は、特定の種類のインターフェイス プロセッサをサポートするために最小限の I/O メモリが必要です。
ルータの共有メモリが不足している場合は、リロード後でも、インターフェイスを物理的に取り外して問題を解決できます。
3600シリーズルータでは、グローバル設定コマンド memory-size iomem i/o-memory-percentage
は、I/Oメモリとプロセッサメモリに使用するDRAMの割合を再割り当てするために使用できます。i/o-memory-percentage で使用できる値は、10、15、20、25(デフォルト)、30、40、および 50 です。I/O メモリには、最小で 4 MB のメモリが必要です。
この問題のトラブルシューティングについては、次を参照してください。
4000/4500/4700ルータの共有メモリ要件。
出力が show buffers
コマンドまたは show technical-support
コマンド(イネーブルモード)を使用して、Output Interpreterを使用して潜在的な問題と修正を表示できます。
注:シスコの内部情報およびツールにアクセスできるのは、登録ユーザのみです。
プロセスがバッファを使って終了した場合、そのプロセスはバッファを解放しなければならない。バッファリークは、コードがバッファの処理を忘れたり、パケットを処理した後にバッファの解放を忘れたりした場合に発生します。その結果、バッファにスタックされるパケットが増えるにつれて、バッファ プールのサイズが拡張していきます。バッファリークは、 show buffers
コマンドが表示されない場合もあります。パブリックバッファプールの中には、空きバッファがほとんどない異常に大きなプールが必要なものがあります。リロード後、フリーバッファの数が合計バッファの数に決して近づかないことがわかります。
アウトプットインタープリタ(登録ユーザ専用)を使用すると、 show buffers
エラーが表示される場合があります。
次の例では、Middle バッファに問題があります。「 show buffers
コマンドは、約8094個のバッファが使用され、解放されていないことを示します(合計8122個から28個を引いた値)。
Public buffer pools: Small buffers, 104 bytes (total 50, permanent 50): 50 in free list (20 min, 150 max allowed) 403134 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Middle buffers, 600 bytes (total 8122, permanent 200): 28 in free list (10 min, 300 max allowed) 154459 hits, 41422 misses, 574 trims, 8496 created Big buffers, 1524 bytes (total 50, permanent 50): 50 in free list (5 min, 150 max allowed) 58471 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) VeryBig buffers, 4520 bytes (total 10, permanent 10): 10 in free list (0 min, 100 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Large buffers, 5024 bytes (total 0, permanent 0) 0 in free list (0 min, 10 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Huge buffers, 18024 bytes (total 0, permanent 0): 0 in free list (0 min, 4 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory)
これは、Cisco IOS ソフトウェアの不具合です。既知のバッファ リークの不具合を修正するために、リリーストレインの最新のバージョンにアップグレードしてください(たとえば、Cisco IOS ソフトウェア リリース 11.2(14) の場合は、最新の 11.2(x) イメージにアップグレードします)。それでも問題が解決しない場合、またはルータをアップグレードできない場合は、ルータのメモリが不足しているときに、問題のあるプールに対して次のコマンドを発行します。次のコマンドを使用すると、バッファの内容に関する追加情報を表示できます。
show buffer old
割り当てられてから 1 分以上経過したバッファを示します
show buffer pool
(small - middle - big - verybig - large - huge)
指定されたプールに関するバッファのサマリーを示します。
show buffer pool
(small - middle - big - verybig - large - huge) dump
指定されたプールで使用されているすべてのバッファの 16 進数/ASCII ダンプを示します。
詳細については、「バッファリークのトラブルシューティング」を参照してください。
これは 7500 シリーズに固有の問題です。ルータが「高速」メモリを使い果たした場合は、代わりにメインのDynamic RAM(DRAM;ダイナミックRAM)を使用できます。必要な操作はありません。
trying
プレフィックスエントリ[IP_address]/[dec]を削除します([hex]が必要ですが、[hex]を取得しました)。IPFAST-4-RADIXDELETE: Error trying to delete prefix entry [IP_address]/[dec] (expected [hex], got [hex]) エラーメッセージは、メモリ内のルータファーストスイッチングキャッシュテーブルが破損していることを示しています。ルータが通常のプロセスでキャッシュテーブルをクリアしようとするか、 clear ip cache
コマンドが入力されると、メモリの破損が原因でエントリの削除に失敗します。ルータがこのようなエントリの削除に失敗すると、IPFAST-4-RADIXDELETEメッセージが報告されます。
キャッシュ テーブルのメモリ破損の問題を解決するには、ルータのハード リブートが必要です。リブートによってシステムメモリ構造が再度分割され、高速キャッシュが破損することなく再構築されます。
%SYS-2-CHUNKEXPANDFAIL: TACLビットマップのチャンクプールを拡張できませんでした。No memory available」エラーメッセージは、指定されたチャンクプールを拡張するための十分なプロセッサメモリが残っていないことを示します。異常な動作をするプロセスが原因である場合があります。
回避策は、ルータのメモリ使用量を監視できるように、これらのコマンドの出力を(問題の頻度に基づいて)定期的にキャプチャすることです。
show processes memory sorted
show memory statistics
show memory allocating-process totals
次の手順を実行します。
使用中の IOS ソフトウェア リリース バージョンまたは機能セットのメモリ要件をチェックします。
可能な場合は、ご使用の Cisco IOS ソフトウェア リリース トレインの最新バージョンにアップグレードします。
正常または異常プロセスによる大量のメモリ使用についてチェックします。必要であればメモリを追加します。
これがリークまたは断片化(ハイエンド ルータではバッファ リーク)によるものかどうかをチェックします。
関連する情報を収集し、TAC に連絡します。
次の手順を実行します。
共有メモリの用件をチェックします(「インターフェイス用の共有メモリの不足」を参照)。
可能な場合は、ご使用の Cisco IOS ソフトウェア リリース トレインの最新バージョンにアップグレードします。
問題が発生しているバッファ プールを特定し、関連する情報を収集して、Cisco TAC に連絡します。
改定 | 発行日 | コメント |
---|---|---|
2.0 |
19-Jan-2023 |
更新された形式、修正されたCCWアラート。再認定。 |
1.0 |
02-Nov-2001 |
初版 |