web-dev-qa-db-ja.com

カーネルはどの程度RAMを使用しますか?

この質問の動機は Mac OS Xカーネルが750MBのRAMを使用していることを発見したときの私のショック です。

私は20年間Linuxを使用しており、カーネルRAM=の使用がXに比べて小さいことを常に知っていました(それは本当ですか?.

それで、グーグルの後で、私はslabtopを試してみました:

Active / Total Size (% used)       : 68112.73K / 72009.73K (94.6%)

これは、私のカーネルが約72MBのRAM now?を使用していることを意味しますか?

topXorgのRSSを17Mと報告すると、カーネルはXを矮小化しますが、その逆ではありません)。

「通常の」カーネルとはRAMラップトップの使用量(範囲)?

MacOSがLinuxよりも桁違いに多い理由RAM?

PS。ここでの回答は最後の質問に対応していません。関連する質問を参照してください。

47
sds

カーネルは少し誤称です。 Linuxカーネルは、いくつかのプロセス/スレッド+モジュール(lsmod)で構成されているため、全体像を把握するには、単一のコンポーネントだけでなく、ボール全体を見る必要があります。

ちなみに私はslabtopを示しています:

 Active / Total Size (% used)       : 173428.30K / 204497.61K (84.8%)

slabtopのmanページにも次のように書かれています。

Slabtop統計ヘッダーは、使用されているスラブのバイト数を追跡​​しており、物理メモリの測定値ではありません。/proc/meminfoファイルの「Slab」フィールドは、使用されているスラブの物理メモリに関する情報を追跡しています。

キャッシュを削除する

質問の下のコメントに @ derobertsuggested としてキャッシュを削除すると、次のようになります。

$ Sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$

 Active / Total Size (% used)       : 61858.78K / 90524.77K (68.3%)

3を送信すると、次のことが行われます。ページキャッシュ、エントリ、iノードを解放します。 メモリキャッシュとバッファをダンプする方法またはツールはありますか? "なので、ページキャッシュ、デントリに関する情報を維持するだけで、110MBのスペースが使用されていました。およびiノード。

追加情報

  • 興味があれば、このブログ投稿でslabtopについてもう少し詳しく説明しています。タイトルは その日のLinuxコマンド:slabtop です。
  • スラブキャッシュの詳細については、Wikipediaで Slab allocation というタイトルで説明しています。

RAM私のカーネルはどのくらい使用していますか?

この写真は少しぼやけていますが、ここでは私たちが知っている「考える」ものを示します。

スラブ

この手法を使用して、スラブの使用状況のスナップショットを取得できます。基本的に、この情報を/proc/meminfoから引き出すことができます。

$ grep Slab /proc/meminfo
Slab:             100728 kB

モジュール

また、/proc/modulesからこれらの値を取得することにより、カーネルモジュールのサイズ値を取得できます(ディスク上のサイズかRAM内のサイズか不明)。

$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758

Slabinfo

SLABに関する詳細の多くは、このプロシージャ構造/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

Dmesg

システムが起動すると、ロードされた直後のLinuxカーネルのメモリ使用量を報告する行があります。

$ dmesg |grep Memory:
[    0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)

参考文献

40
slm

これはどう:

Active / Total Size (% used)       : 4709.24K / 5062.03K

通常のカーネルでヘッドレスで実行される、新しく起動した非常に小さなマシンでの使用です。

Derobertが示唆するように、カーネルはキャッシュに利用可能なメモリを利用しますが、これはslabtopに表示されるものの多くです。これは、ファイルキャッシュに加えて、使用されなくなったユーザースペースプロセスからの共有可能なメモリに関係しています。カーネルは、同じものが再び必要になるまで、または何かがアクティブにRAMを必要とするまで、そこに残します。この場合、RAMは忘れられます。たとえは、本を棚から取り出して、テーブルの上で読むために置いておくことです。読書が終わったら、もう一度見たい場合に備えて、本を開いたままにしておくことができます。

8
goldilocks

この512 GB RAM Solarisを実行しているサーバーでは、カーネルは25 GBを使用します:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    3210102             25078    5%
Anon                     15266226            119267   23%
Exec and libs               41457               323    0%
Page cache                3539331             27651    5%
Free (cachelist)         13799571            107809   21%
Free (freelist)          30093164            235102   46%

Total                    65949851            515233
Physical                 65927406            515057

その小さい方は、RAM)の半分以上を持っています:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    2149699             16794   52%
Anon                       517016              4039   13%
Exec and libs               15420               120    0%
Page cache                  21840               170    1%
Free (cachelist)             8768                68    0%
Free (freelist)           1404862             10975   34%

Total                     4117605             32168
Physical                  4096002             32000

心配する必要はありません。未使用のRAMは無駄ですRAMとにかく。

4
jlliagre