はじめに
このドキュメントでは、メモリリークの問題に関する追加情報を収集するための一般的なトラブルシューティングのヒントについて説明します。
前提条件
要件
次の項目に関する基本的な知識が推奨されます。
- Cisco IOS® XEに関する基礎知識
- Embedded Event Manager(EEM)の基礎知識
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。ASR1000、ISR4000、ISR1000、Cat8000、またはCat8000vなどのルーティングCisco IOS XEプラットフォームに適用されます。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
このドキュメントでは、メモリ使用率が高い場合にデバイスが生成する一般的なログを確認できます。
また、IOS XEルータでメモリ不足が頻繁に発生する状況を監視してデータを取得するTACを支援するEmbedded Event Manager(EEM)機能の利点も確認できます。
このドキュメントの目的は、可能であれば、トラブルシューティング手順を広く説明することではなく、より詳細なトラブルシューティングガイドへの参照のみを提供することです。
メモリ不足のIOS XEルータの症状
高いメモリ使用率の問題を処理する場合、通常、85 %の警告制限に達したことを示すログメッセージが表示されます。この値はバージョンによって異なります。 システムが問題を検出した場所に応じて、異なるログが生成されます。
TCAMの問題:
CPP_FM-3-CPP_FM_TCAM_WARNING
IOSd(コントロールプレーン):
SYS-2-MALLOCFAIL
SYS-2-CHUNKEXPANDFAIL
SYS-4-CHUNKSIBLINGSEXCEED
QFP(データプレーン):
QFPOOR-4-LOWRSRC_PERCENT_WARN
QFPOOR-4-TOP_EXMEM_USER
CPPEXMEM-3-NOMEM(デフォルト)
CPPEXMEM-3-TOPUSER
一時ファイルシステム(TMPFS):
PLATFORM-3- ELEMENT_TMPFS_WARNING
一般システムログ(分離が必要):
PLATFORM-4-ELEMENT_WARNING(プラットフォーム–4要素_警告)
プラットフォーム3 – 要素_重要
注:バージョン16.12以降では、ログの改良が利用可能です。
TACの初期トリアージに必要な情報
show clock
show version
プラットフォームリソースの表示
show platform software status control-processor brief
プロセスメモリの並べ替えの表示
show memory statistics
show memory allocating-process totals
プロセスメモリプラットフォームの並べ替えの表示
show logging
- メモリ不足が原因で予期しないリロードが発生した場合:
コアファイル/システムレポート
show techを添付することが望ましいですが、これはTACにとっては役に立ちます。また、問題をより迅速に見つけるのに役立つようにTACが開発した自動化の恩恵を受けることができます。
メモリ使用率が高くなる状況は、常にソフトウェアに関連しています。ただし、高いメモリ使用率のインスタンスがすべて予期しないわけではありません。使用可能なDRAMと、デバイスで実行されている機能の組み合わせを考慮することが重要です。
Radkitを使用する場合、メモリ使用率が高い場合のトラブルシューティングはよりスムーズで効果的であり、TACとのインタラクションも改善されます。シスコが開発したこのツールにより、TACは、ネットワーク内で選択したデバイスに安全かつ簡単にアクセスできます。詳細については、次のサイトを参照してください。Cisco RADKit
注:サポートされているバージョンを実行していることを確認してください。リリースの販売終了およびサポート終了に関する文書を探します。必要に応じて、現在Software Maintenance Releasesの対象になっているバージョンに移行します。それ以外の場合、TACはトラブルシューティングと解決のオプションを制限できます。
メモリのトラブルシューティングに関する詳細なドキュメントについては、次のガイドを参照してください。
ISR4Kの場合:Cisco 4000シリーズISRのメモリトラブルシューティングガイド。
ASR1K:ASR 1000シリーズルータメモリのトラブルシューティングガイド。
高いメモリ使用量の理解
Cisco IOS XEルータでは、DRAMはコア機能をサポートする最も重要なリソースの1つです。DRAMは、コントロールプレーンとデータプレーンの両方の動作に不可欠な、さまざまなデータタイプとプロセス/機能の情報を保存するために使用されます。
IOS XEルータでのDRAMの主な用途は次のとおりです。
IOSdメモリ(コントロールプレーン構造):デバイスのコントロールプレーンに関連するプロセス関連情報(ルーティング情報/プロトコル、ネットワーク管理構造、システム設定、機能情報など)を保存します。
QFPメモリ(データプレーン構造):QFPに格納される機能のキー構造、マイクロコード命令、転送命令など、マイクロコードで処理されるQFP操作に関するすべての情報を格納します。
一時ファイルシステム(TMPFS):DRAMにマウントされ、IOSdによって管理されるTMPFSは、プロセスに必要なファイルのためのクイックアクセス記憶領域として機能します。これらのファイルが永続的な場合は、ハードディスク/ブートフラッシュに移動されます。一時データの読み取り/書き込み時間を短縮することで、システムのパフォーマンスを向上させます。
Linuxカーネル上で動作する一般的なプロセス:IOS XEはLinuxベースのカーネル上で動作するため、DRAMはこのカーネル上で動作するさまざまなシステムプロセスもサポートします。
メモリ使用率が85 %を超える場合は、通常、DRAMの消費量が大きいことを示し、ルータのパフォーマンスに影響を与える可能性があります。このような使用率の上昇は、大量のルーティングテーブルの保存やリソースを大量に消費する機能の有効化など、正当な要求に起因する可能性があります。ただし、特定の機能による非効率なメモリ管理や、使用後にメモリが適切に解放されないメモリリークなどの問題を示す可能性もあります。
IOSdメモリ、QFPメモリ、TMPFS、および一般的なLinuxプロセスのメモリ使用率を監視することで、お客様とTACは潜在的な問題を早期に特定できます。
メモリ使用率を監視するEEM
メモリのトラブルシューティングを行うには、TACが一定期間に渡って一連のコマンドを収集し、問題のプロセスを特定する必要があります。原因となるプロセスを特定した後で、さらに特定のコマンドを実行する必要が生じることがあります。これにより、メモリのトラブルシューティングは、最も時間のかかるトラブルシューティングの1つになります。
このトラブルシューティングを容易にするために、EEM機能を使用して情報を監視し、自動的に収集することができます。EEMスクリプトを記述する際の主な考慮事項は、トリガーと収集するコマンドの2つです。
トリガ
パターン.セクション「Symptoms of Cisco IOS XE routers running out of memory」のパターンを使用できます。形式は次のようになります。
event syslog pattern <pattern> ratelimit 300 maxrun 180
パターンをトリガーとして使用する際の考慮事項の1つは、警告のしきい値に達すると、メモリ消費率に応じてログが生成されることです。このログを手動で実行しようとすると、詳細なトラブルシューティングを行うための十分な時間がユーザーまたはTACにありません。
Cronタイマー。 30分ごとにアクティブ化されるcronタイマーの例:
イベントタイマcron名HalfHour cron-entry "*\30 * * *"
パターンに対するcronタイマーの利点の1つは、デバイスが情報を収集するためにメモリリソースをほとんど使い果たすまで待つ必要がないことです。メモリ消費率に応じて、適切なモニタリングと情報を使用して、TACは警告しきい値に達する前に問題のプロセスを特定できます。
注:Ratelimitおよびmaxrunオプションは、出力セット全体が収集されることを保証するために使用されます。また、短時間で複数のログが表示される状況で、追加のノイズやEEMのアクティベーションを回避するのにも役立ちます。
初期トリアージ用の一般的なコマンドを使用したEEMの例:
configure terminal
event manager applet TAC_EEM authorization bypass
event syslog pattern " PLATFORM-4-ELEMENT_WARNING" ratelimit 300 maxrun 180
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 0.3 cli command "term length 0"
action 0.4 cli command "show process memory platform sorted | append bootflash:TAC_EEM.txt"
action 0.5 cli command "show processes memory platform sorted location chassis 1 R0 | append bootflash:TAC_EEM.txt"
action 0.9 cli command "show platform resources | append bootflash:TAC_EEM.txt"
action 1.0 cli command "show platform software status control-processor brief | append bootflash:TAC_EEM.txt"
action 1.1 cli command "show clock | append bootflash:TAC_EEM.txt"
action 1.3 cli command "show platform software process memory chassis active r0 all sorted | append bootflash:TAC_EEM.txt"
action 1.5 cli command "show process memory platform accounting | append bootflash:TAC_EEM.txt"
cronタイマーを使用して毎日モニタする:
configure terminal
event manager applet TAC_EEM2 authorization bypass
event timer cron name DAYLY cron-entry "0 0 * * *"
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 0.3 cli command "term length 0"
action 0.4 cli command "show process memory platform sorted | append bootflash:TAC_EEM2.txt"
action 0.5 cli command "show processes memory platform sorted location chassis 1 R0 | append bootflash:TAC_EEM2.txt"
action 0.6 cli command "show processes memory platform sorted location chassis 2 R0 | append bootflash:TAC_EEM2.txt"
action 0.9 cli command "show platform resources | append bootflash:TAC_EEM2.txt"
action 1.0 cli command "show platform software status control-processor brief | append bootflash:TAC_EEM2.txt"
action 1.1 cli command "show log | append bootflash:TAC_EEM2.txt"
action 1.2 cli command "show clock | append bootflash:TAC_EEM2.txt"
action 1.3 cli command "show platform software process memory chassis active r0 all sorted | append bootflash:TAC_EEM2.txt"
action 1.5 cli command "show process memory platform accounting | append bootflash:TAC_EEM2.txt"
コマンドの包括的なリストについては、「TACの初期トリアージのニーズに関する情報」セクションのガイドを参照してください。
コアファイル
メモリ使用率が重大なレベルに達すると、オペレーティングシステムがこの状態から回復するためにクラッシュを強制し、コアファイルを含むシステムレポートを生成する可能性があります。
コアファイルは、特定の時点でクラッシュしたプロセスのメモリの完全なダンプです。このコアファイルは、TACがメモリを検査し、ソースコードを分析して、プロセスの予期しないリロード/クラッシュの状態と潜在的な理由を理解するために重要です。
このコアファイルは、TACと開発者が問題の根本原因を特定し、デバッグして、問題を解決するために役立ちます。
注:TACと開発者が根本原因の究明に努めているにもかかわらず、クラッシュがネットワークイベントやタイミングの問題に起因するものであったために、ラボでは再現できないような場合があります。
予期しないリロードとコアファイルの取得方法の詳細については、「TACによるCisco IOS®プラットフォームでの予期しないリロードのトラブルシューティング」を参照してください。