カーネルは少し誤った呼び名です。Linuxカーネルはいくつかのプロセス/スレッド+モジュール(lsmod
)で構成されているため、完全な図を取得するには、単一のコンポーネントだけでなくボール全体を見る必要があります。
ちなみに私のショーslabtop
:
Active / Total Size (% used) : 173428.30K / 204497.61K (84.8%)
のmanページにslabtop
も次のように書かれています:
slabtop統計ヘッダーは、使用されているスラブのバイト数を追跡しており、物理メモリの測定値ではありません。/ proc / meminfoファイルの「Slab」フィールドは、使用されているスラブの物理メモリに関する情報を追跡しています。
キャッシュを削除する
あなたの質問の下のコメントで@derobertが 示唆したように私のキャッシュをドロップすると、私にとって次のことが行われます:
$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$
Active / Total Size (% used) : 61858.78K / 90524.77K (68.3%)
3を送信すると、次のことが行われます。無料のページキャッシュ、デントリ、iノード。これについては、このU&Lに関するQ&Aで詳しく説明します。メモリキャッシュとバッファをダンプする方法やツールはありますか?"。だから、ページキャッシュ、歯、iノードに関する情報を維持するだけで、110MBのスペースが使用されていました。
追加情報
それでは、カーネルはどのくらいのRAMを使用していますか?
この写真は私にとっては少しぼやけていますが、ここに私が知っている「考える」ものを示します。
スラブ
この手法を使用して、スラブの使用状況のスナップショットを取得できます。基本的に、この情報をから引き出すことができます/proc/meminfo
。
$ grep Slab /proc/meminfo
Slab: 100728 kB
モジュール
また、以下から値を取得することで、カーネルモジュールのサイズ値を取得できます(ディスク上のサイズなのか、RAMなのかは不明です)/proc/modules
。
$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758
スラブインフォ
SLABに関する詳細の多くは、このproc構造でアクセスできます/proc/slabinfo
。
$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000 0 0 320 25 2 : tunables 0 0 0 : slabdata 0 0 0
fuse_request 100 125 632 25 4 : tunables 0 0 0 : slabdata 5 5 0
fuse_inode 21 21 768 21 4 : tunables 0 0 0 : slabdata 1 1 0
ドメス
システムが起動すると、Linuxカーネルがロードされた直後のメモリ使用量を報告する行があります。
$ dmesg |grep Memory:
[ 0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)
参照資料