top を使用すると、メモリデータが概要領域に次のように表示されます。
KiB Mem : 16092836 total, 143168 free, 11005184 used, 4944484 buff/cache
次に、m(対話型コマンド)を使用してメモリデータ表示モードを切り替えます。
KiB Mem : 88.7/16092836 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ]
私の質問は:結果はどのように計算され100*used/total
ますか?68.3856
88.7
答え1
想像できるように、その割合は100*used/total
。
この割合は100*(1-available/total)
混乱するほど異なります100*used/total
。
ここで、「使用可能」はに示されているのと同じ意味を持ちますfree
。
関連トピック:
参考書
スタンバイメモリ表示モードでは、次の要素を含む2つの簡単な要約行が表示されます。
a b c GiB Mem : 18.7/15.738 [ ... ] GiB Swap: 0.0/7.999 [ ... ]
ここで:a)は使用される割合です。 b) は利用可能な総量です。 c)>は、これらの表現の2つの可視化のうちの1つです。
物理メモリの場合、パーセンテージは次のことを示します。みんな マイナス推定効果がある上記のように。 「Mem」グラフ自体はキャッシュされていない部分に分かれています。使用されるそして他に説明されていない残りのメモリ効果がある。トピック4bを参照してください。サマリーエリアコマンドと「m」コマンドは、この特定の4方向スイッチに関する追加情報を提供します。
ソースコードtop
これは、現在のソースコードを調べることで確認できます。
グラフビューに渡されたデータ
#ifdef MEMGRAPH_OLD
my_misc = my_qued;
#else
my_misc = MEM_VAL(mem_TOT) - MEM_VAL(mem_AVL) - my_used;
#endif
Graph_mems->total = MEM_VAL(mem_TOT);
Graph_mems->part1 = my_used;
Graph_mems->part2 = my_misc;
チャートビューの計算
if (these->total > 0)
scale = 100.0 / these->total;
rx.pcnt_one = scale * these->part1;
rx.pcnt_two = scale * these->part2;
if (rx.pcnt_one + rx.pcnt_two > 100.0 || rx.pcnt_two < 0)
rx.pcnt_two = 0;
rx.pcnt_tot = rx.pcnt_one + rx.pcnt_two;
基本ビューにデータが渡される
prT(bfT(0), mkM(MEM_VAL(mem_TOT))); prT(bfT(1), mkM(MEM_VAL(mem_FRE)));
prT(bfT(2), mkM(MEM_VAL(mem_USE))); prT(bfT(3), mkM(my_qued));
prT(bfT(4), mkM(MEM_VAL(swp_TOT))); prT(bfT(5), mkM(MEM_VAL(swp_FRE)));
prT(bfT(6), mkM(MEM_VAL(swp_USE))); prT(bfT(7), mkM(MEM_VAL(mem_AVL)));
snprintf(row, sizeof(row), N_unq(MEMORY_line1_fmt)
, scT(label), N_txt(WORD_abv_mem_txt), bfT(0), bfT(1), bfT(2), bfT(3));
Msg_row += sum_see(row, mem2UP);
報告の不一致について
- 同じシステム状態で一致するスナップショットが撮影されたことを確認しましたか?同時に印刷する場合、デフォルトビューでも使用されるメモリは88.7%にすぎません。
- あなたのバージョンは何ですか
top
?メモリウィンドウの現在の動作はすでに3.3.10。 - どのプラットフォームで実行していますか?
グラフに渡されるデータを変更するフラグがあるようです。
追加情報とレビューに従って修正します。