内容

はじめに

前提条件

要件

使用するコンポーネント

背景説明

メモリ不足のIOS XEルータの症状

TACの初期トリアージに必要な情報

高いメモリ使用率について

メモリ使用率を監視するEEM

トリガ

コアファイル

はじめに

このドキュメントでは、メモリリークの問題に関する追加情報を収集するための一般的なトラブルシューティングのヒントについて説明します。

前提条件

要件

次の項目に関する基本的な知識が推奨されます。

- 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(CHUNKSIBLINGSEXCEED)

QFP（データプレーン）:

QFPOOR-4-LOWRSRC_PERCENT_WARN

QFPOOR-4-TOP_EXMEM_USER

CPPEXMEM-3-NOMEM（オプション）

CPPEXMEM-3-TOPUSER（ユーザライセンス）

一時ファイルシステム(TMPFS):

PLATFORM-3- ELEMENT_TMPFS_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つは、警告しきい値に達するとログが生成されることです。これはメモリ消費率に応じて手動で実行しようとするため、詳細なトラブルシューティングを行うための十分な時間がありません。

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®プラットフォームでの予期しないリロードのトラブルシューティング』を参照してください。