キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

Cisco IOS Router のMemory/Buffer に関するTroubleshooting

New Member
11-05-2013 01:00 AM PST thru 11-05-2013 01:00 AM PST

2013年9月10日(火)開催 Live Expert Webcast で行われたLive Q&A 集です。

録画ビデオはこちらから、資料はこちらよりご覧いただけます。

---------------------------------------------------------------------
Q1. Router#show processes memory sortedとは何を基準にソートして表示されますか?

A1. Holdingカラムを基準にソートしています。オプションで  allocated  , getbufs を指定してソートすることが出来ます。

Q2.メモリリークの疑いがある場合は、Router#show processes memory sortedを定期的に実行し、その値を継続して確認するしか無いのでしょうか? 他に何か問題解決への近道はありますでしょうか?

A2. show memory debug leak があります。但しこのコマンドの実行でルータのCPU負荷が上昇するので実行の際は注意が必要です。このコマンドの実行が難しい場合は show processes memory sorted, show processes memory <PID>, show buffer, show memory summary の4つを適当な間隔で繰り返し取得してください。

Q3. メモリの「十分な」空き容量とは、全体の何%が推奨でしょうか?

A3. 一概にはお答えできませんが、少なくとも20%程度は空いているのが好ましいかと思います。

Q4. MALLOCFAILが発生した場合に、その後の処理に影響をあたえるかの判断はどう考えればいいのでしょうか。

A4. MALLOCFAIL が発生した場合には Memory が不足していて Memory の割り当てを行えておりません。そのため、Process を正常に実行できておりません。そのままにしておくと継続的に MALLOCFAIL が発生するため、Memory が少ない状況を解消するために、Reload をご実施頂いたり、Memory の拡張を検討頂ければと思います。

Q5. Linux等だとMalloc Failureが起きない様にガベージコレクション機能がありますが、IOSは無いのでしょうか。

A5. ありません。IOSではMalloc Failureが発生した場合は再起動が必要となります。

Q6. 今後ガーベッジコレクションを実装する予定はありますか。

A6. ございません。

Q7. メモリーの単位はなんですか。

A7. byteです。

Q8. RxRing のサイズを教えてください。

A8. 機器によって異なります。

Q9. Public bufferのサイズを教えて下さい。

A9. 搭載するメモリー容量とコマンドにより変化します。

Q10. Show process memory の出力で、holding、allocated, freed の意味を考えると、Holding の値は allocated の値から freed の値を引き算した値になりそうですが、なってない場合があります。なぜですか。

A10.  あるプロセスで取得したメモリを他のプロセスが解放することがあるためです。

Q11. RIB と FIB の違いは何ですか。

A11. RIB はルータが保持しているルーティング情報を全て併せ持つデータで、実際には転送に関与しないエントリも含まれます。これに対して FIB は RIB から

作成されるもので RIB を最適化し転送情報のみにもつようにしたものです。

Q12. 最近ルータを使用していて気づいたのですが、show region の出力で Start の値が固定されていないようです。特に動作での変化は見られませんが何か問題があるんでしょうか。

A12. この振舞は12.4(24)T 以降で実装された Address Space Layout Randomization 機能によるものです。IOSに特有の機能ではないので詳細はググって頂きたいのですが、目的はIOSでのアドレス配置を特定されにくくすることで攻撃されないようにすることです。

Q13. Particle buffer と Public buffer の使用用途の違いについて教えて下さい。

A13. スライドで説明した通り、particle bufferは受信パケットを格納する場所ですが、基本的には非連続バッファです。非連続バッファを幾つか繋いで1つのパケットを格納するイメージですが、これは固定長の連続バッファだとパケット長によっては使用しているバッファに余りが出てしまい使用効率が落ちるためです。

これに対して public buffer は連続したメモリ領域ですが、これはCPUがプロセス処理を行う際に細切れになっていると効率的ではないためです。

Q14. showコマンドリストの中で重要なものがあれば教えてください。

A14. スライドの後半にある 「show コマンドリスト」にあるコマンドはどれも重要なコマンドですが、特に重要なコマンドをあげるとすれば、show process memory sorted, show buffer, show memory summaryの3つになるかと思います。

Q15. メモリ使用量が増大していることを事前に警告する機能などはありますでしょうか。

A15. "memory free low-watermark processor/IO <メモリ容量下限>" の設定を投入するとメッセージが出力されるようになります。詳細はコマンドリファレンスかコンフィグガイド(下記)を参照してください。

http://www.cisco.com/en/US/docs/ios/12_3t/12_3t4/feature/guide/gt_memnt.html

Q16. showコマンドの出力でプロセス名が表示されていますが、両側に * が付いているものは何か意味があるのでしょうか。

A16. * がついているものはIOSのスケジューラで管理されるような通常の意味でのプロセスではないため、区別する意味でこのようにしています。

Q17. Fragmentation は、FreeとLargestの値がどの程度違っていると発生していると言えるでしょうか。

A17. 具体的な数値はありませんが、値の桁が数桁違っていたらfragmentationが起きていると言っていいと思います。過去にあった事例ではfreeが10Mbyte程度あるのに Largest が10Kbyte程度で 100Kbyte のメモリが割り当てられないというのもありました。

Q18. memory leak なのか使用状況が原因でmemory leakしているように見えるだけなのか、見分け方があれば教えて下さい。

A18. 設定内容やプロトコルに関連するデータを保持してmemoryを多く保持している場合は、通常の場合は再起動後に同じ状態、例えばBGPなら全てのセッションを張り、全てのupdateを受信した後に再起動前と同じ程度のメモリを使用していれば memory leak ではない可能性が高いです。これに対して大幅にメモリ使用状況が異なる場合はleakしている可能性があります。

43
閲覧回数
0
いいね!
0
コメント