シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

IOS Router : Memory 関連の問題が発生した際に取得するログ

     

     


     

    IOS Router にて Memory 関連の問題が発生した場合に取得するログなどを記載しています。

     

     

    ログ取得前に事前に設定頂きたいコマンド

     

    ログを取得する場合は以下の Link に記載されている設定を行ったうえでログをご取得ください。

    IOS/IOS-XE Router でログ取得前に事前に設定頂きたいコマンド

     

     



    show コマンド

     

    IOS Router にて Memory 関連の問題が発生した場合には事象発生中に以下のコマンドを複数回ご取得ください。なお、Memory Leak や Buffer Leak などの問題の場合には、問題が発生するまで時間がかかるため、数日程度時間をおいて(場合によっては数週間程度時間をおいて)から再度ログをご取得頂かな いと 、どの部分の問題かの troubleshooting を行えない場合があります。

     

     

    show region
    show memory
    show memory allocating-process
    show memory allocating-process totals
    show memory dead
    show memory dead totals
    show memory failures alloc
    show memory fragment
    show memory fragment detail
    show memory statistics history
    show memory statistics history table
    show memory summary
    show memory debug leaks
    show processes memory sorted
    show processes memory <PID>
    show processes
    show processes <PID>
    show stacks <PID>
    show buffers
    show buffers all
    show buffers all dump
    show buffers old
    show buffers old dump
    show buffers leak
    show buffers leak resource user
    show ip traffic

    show ip route summary

    show ipv6 traffic

    show ipv6 route summary
    show interfaces

    show interfaces accounting
    show interfaces stats
    show interfaces switching
    show controllers
    show tech-support

    show log

     

    show memory debug leaks は CPU に負荷をかけるのでご注意ください。

    show tech-support は多少CPUに負荷がかかります。

     

    • <PID> の部分には show processes memory sorted で Holding の値が大きい Process の PID を確認して、PID を入力してください。

     

     

    Router#show processes memory sorted
    Processor Pool Total:  393510656 Used:  141951864 Free:  251558792
          I/O Pool Total:   16777216 Used:   11879808 Free:    4897408

     PID TTY  Allocated      Freed    Holding    Getbufs    Retbufs Process
     236   0 3983602708 3276708724  106030048      61236          0 VTEMPLATE Backgr
       0   0  119975904   66938500   39827164          0          0 *Init*          
       1   0     689704       5052     696908          0          0 Chunk Manager  


    この例であれば、PID 236 の Holding の値が非常に大きくなっているので <PID> の部分には 236 を入力してください。

     

     

    • show ipv6 ... のコマンドは IPv6 使用時のみご取得ください。

     

     



    Memory Traceback/Event Recording

     

    Memory Traceback/Event Recording の機能を使用することで、Memory を割り当てた際の Stack を確認することができます。Stack を Decode することで、どのような処理が走り Memory の割り当てが行われたかを確認することが可能です。Memory Leak 等が発生した場合に使用して頂くことで、どのような処理が発生し Memory Leak が起こったのかを追うことが出来るので、解析の助けになる場合があります。ただし、こちらの機能は社内の解析用の機能のため社外の方が解析に使えるような 機能ではありません。TAC へのお問い合わせ時にご取得頂ければと思います。

    *この機能は CPU にかなり負荷をかけるので注意が必要です。実環境で使用する場合はメンテナンスウィンドウを設けて実施した方がよいかと思います。



    Memory Traceback/Event Recording の使用手順は以下の通りです。

     



    Step1(Option): show processes memory sorted を使用して Memory Leak が疑われる process のプロセス名を確認

    こ こでは例として OSPF-1 Hello というプロセスに問題が発生していると仮定して話をすすめます。以下の例では OSPF-1 Hello の Holding(memory 使用量) の値が大きな値になっていないため、実際には何も問題は発生していません。Memory Leak が発生しているような状況であれば、プロセスの Holding の値が大きな値になっていて、かつ、そのプロセスの使用状況等が変化していないにも関わらず、Holding の値が増加していきます。

    Router#show processes memory sorted
    --- snip ---
     PID TTY  Allocated      Freed    Holding    Getbufs    Retbufs Process
    --- snip ---
     131   0      20840          0      34016          0          0 OSPF-1 Hello  
    --- snip ---

     

     



    Step2(Option): Filter の設定

    特 定のプロセスの問題ということがわかっていれば、そのプロセスに対してのみ Memory Traceback/Event Recording の機能が動作するように Filter を設定します。ここでは "OSPF-1 Hello" というプロセスに対してのみ Memory Traceback/Event Recording が動作するように Filter をかけています。

    Router(config)#service internal

    Router(config)#memory record filter process "OSPF-1 Hello"

     

     



    Step3: Memory Traceback/Event Recording の機能を有効にします。

     

    Router(config)#service internal

    Router(config)#memory record traceback

     Note: Memory traceback recording causes a significant performance hit.


    Router(config)#memory record event

     

     



    Step4: show command を取得する

    Memory Leak 等が発生する前後に以下のコマンドを取得してください。


    show memory events
    show memory events tracebacks

     

     

     

     



    Memory関連の問題の例

    以下に Memory 関連の問題の例を示します。

     

    • MALLOCFAIL

    MALLOCFAIL は Memory を割り当てようとした際に Memory が不足していたために Memory の割り当てを行えないと発生します。MALLOCFAIL が発生すると以下のようなログが出力されます。

    %SYS-2_MALLOCFAIL: Memory allocation of 1000 bytes failed from 0x6024C00C, pool Processor, alignment 32 -Process=“IP Input” ipl= 6, pid=5

     

    この例では IP Input が 1000 byte の memory を割り当てようとして、memory が足りないために Main memory(pool Processor) の割り当てに失敗しています。

     

     

     

    • Process Memory Leak

    プロセスが適切に Memory の解放を行わないと Process Memory Leak が発生します。

    以下に Process Memory Leak が疑われる場合の show コマンドの出力例を示します。

    Router#show processes memory sorted

    Processor Pool Total: 396524744 Used: 396516668 Free:       8076

         I/O Pool Total:   26214400 Used:   12790512 Free:   13423888

    PID TTY Allocated     Freed   Holding   Getbufs   Retbufs Process

    549   0 675546944 310921668 318160840         0         0 BGP Router

       0   0 104758072   60708852   40117648         0         0 *Init*        

    31   0   25593724   22170424   2201772         0         0 Exec          

       0   0         0         0   1640780         0         0 *MallocLite*

    こ の例では BGP Router の Process が大量の Memory を使用しているために、使用可能な Process Memory が不足していることがわかります。ですが、この出力だけでは Process Memory Leak が発生しているかどうかはわかりません。扱うデータのサイズが大きいなどの正当な理由で単純に Memory の使用量が多く、Memory が不足していることも考えられます。特にルーティングのプロセスで使用される Memory は学習している経路数に比例して増加するので、学習経路数の数も確認してください。

     

     

    • Public Buffer Leak

    Public Buffer の Buffer の解放が適切に行わないと Public Buffer Leak が発生します。
    以下に Public Buffer Leak が疑われる場合の show コマンドの出力例を示します。

    Router#show buffer

    --- snip ---

    Big buffers, 1536 bytes (total 4237, permanent 50, peak 4237 @ 00:59:50):

         0 in free list (5 min, 150 max allowed)

         31862 hits, 382411 misses, 12 trims, 4199 created

         380981 failures (601505 no memory)


     

    created は Buffer を作成した回数を示していて、trims は Buffer の解放を行った回数を示しています。この例では、created が 4199 という値に対して trims の値が 12 になっているため Buffer の解放が正常に行われていません。Public Buffer Leak が発生しています。

     

     

     

    • Interface Buffer Leak

    Interface Buffer の解放が適切に行われないと Interface Buffer Leak が発生します。
    以下に Interface Buffer Leak が疑われる場合の show コマンドの出力例を示します。

    Router#show buffer

    --- snip ---

    GigabitEthernet0/2 buffers, 1664 bytes (total 768, permanent 768):
         0 in free list (0 min, 768 max allowed)
         768 hits, 0 fallbacks
         768 max cache size, 10 in cache
         1014151098 hits in cache, 2531019 misses in cache

    上記の例では misses in cache のカウンタが上昇しており、Interface Buffer の Leak が疑われます。

     

    • タグ付けされた記事をさらに検索:
    437
    閲覧回数
    5
    いいね!
    0
    コメント