cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
24594
Views
10
Helpful
7
Replies

Catalystスイッチのメモリー使用率について

NOBORU MATSUDA
Level 1
Level 1

Catalystスイッチのメモリー使用率についての質問です。
何か関連する情報でも良いので、ご教示いただけないでしょうか。

【カテゴリ】
[H/W] WS-C3750G、WS-C3750V2
[メモリサイズ]128M
[S/W] 12.2(53)SE2


【質問内容】
複数の機器でLargestの値が「16768896」となっており、メモリ使用率の算出が同じ値となってしまいます。
上記の事象は機種・IOSによる影響、または仕様でしょうか?


■実行結果
show memory summary

                Head    Total(b)     Used(b)     Free(b)   Lowest(b)  Largest(b)
Processor    42C5464    68639304    33248528    35390776    33458556    16768896
      I/O    6400000    12582912     8547404     4035508     3948956     4033256
Driver te    2E00000     1048576          44     1048532     1048532     1048532


【メモリ使用率算出】
(( Used + Free ) - Largest ) / ( Used + Free ) * 100 = メモリ使用率

(( 33248528 + 35390776 ) - 16768896 ) / ( 33248528 + 35390776 ) * 100
=75.56954249

7 Replies 7

t.higashimura
Level 1
Level 1

NOBORU MATSUDA さん、こんにちは。

今回書いていただいている、メモリ使用率算出の計算式はどこか Cisco.com から引用してきたものになるのでしょうか?ちょっと探してみましたが、この式の根拠を見つけることができませんでした。。

私の認識では、Largest は Free のメモリサイズ内で、連続して確保できる最大ブロック数を表しているだけです。

そのため、プロセスメモリの使用率は単純に (Used/Total) * 100 = (33248528/68639304)*100 = 48.44% で良いのではないかと思いました。

私の認識も外れているかもしれないので、式の出所など根拠となる情報があれば、シェアしてもらえると助かります。

こんにちは。代わりに返信いたします。

以後、私が引き継ぎますので、よろしくお願いします。


式の根拠となる情報ですが、Largestの値がFreeよりも大きく離れているとメモリリークの可能性が高いため、TotalからLargest分を差し引いた値を使用メモリサイズとして算出しています。
以下のURLにその旨が記載されています。
http://www.cisco.com/cisco/web/support/JP/100/1007/1007953_mallocfail-j.html

メモリ使用率の算出は、単純に (Used/Total) * 100で問題ないのでしょうか。

あと、こちらの質問の回答をお持ちでしたら、教えていただけないでしょうか。

【質問内容】
複数の機器でLargestの値が「16768896」となっており、メモリ使用率の算出が同じ値となってしまいます。上記の事象は機種・IOSによる影響、または仕様でしょうか?

kitten さん、

URLの情報ありがとうございました。

この問題の特徴は、show memory コマンドの「Largest」カラムの値が小さい(20,000 バイト未満)にもかかわらず、「Freed」カラムの値は十分(1 MB 以上)であるか、またはこの 2 つのカラムの値の差が大きい点にあります。この問題は、ルータが極端なメモリ不足になると発生する可能性があります。これは、IOS には断片化を解消するルーチンがないためです。

根拠とした文面は上記でしょうか。こちらの説明はメモリリークを言っているわけではなく、メモリ断片化の状況を判断するためのものと思います。また、Largest の値が多いからと言って問題となるわけではなく、特定のプロセスがまとまったメモリブロックが必要な場合に割り当てられる状況ということなので、むしろ良い状況と思います。

そのため、計算式で Largest を差し引くという状況が分かりかねました。。違う場所を参照している、または何かまだ理解ができていない部分があったら、申し訳ないです。

メモリ使用率の算出は、単純に (Used/Total) * 100で問題ないのでしょうか。

実装メモリが 128M で IOS の読み込みを差し引いて、プロセス及びI/O でメモリが消費されるものとの認識です。プロセスメモリのみの使用率という意味では私が提示したもので良いのではないかと思いのですが、確かな情報が必要であれば Cisco TAC へ問い合わせしてみてください。

あと、こちらの質問の回答をお持ちでしたら、教えていただけないでしょうか。

【質問内容】
複数の機器でLargestの値が「16768896」となっており、メモリ使用率の算出が同じ値となってしまいます。上記の事象は機種・IOSによる影響、または仕様でしょうか?

こちらは IOS の実装上の動作ではないでしょうか。実装上の動作は Cisco TAC に確認するしかないですが、値が 2の24乗(2^24=16777216) に近いことから、連続して確保するブロックとして持っておこうとするサイズの上限が実装上で決まっていたりするのかもしれません。

HIGASHIMURAさん、こんにちは。

回答いただき、ありがとうございました。

私のチームで検討した結果、回答の内容は正しくて妥当であり、メモリ使用率は (Used/Total) * 100で計算するほうが良いということに決まりました。

いろいろアドバイスいただき、大変助かりました。

kittenさん

返信ありがとうございます。お役に立てたなら幸いです。

少し時間が過ぎてしまっていますが、Lagestの意味を説明している記事があったので、投稿させて頂きます。こちらの記事を確認する限り、やはりHIGASHIMURAさんのお考えは妥当だと思います。

https://supportforums.cisco.com/discussion/11155706/show-memory-statistics-head-totalb-usedb-freeb-lowestb-largestb

有用な記事をありがとうございます。内容を確認したところ、上記の回答にさらに裏付けが取れた感じです。