Linuxオペレーティングシステムがどのくらいのメモリを使用しているかを知る方法を探しています(他のアプリケーションのメモリサイズは心配しません)。
私はUbuntuディストリビューション(Ubuntu 15.10)を使用しています。
答え1
オペレーティングシステムメモリ v. Ubuntuメモリv。カーネルメモリ
「Linuxオペレーティングシステム」で使用されるメモリ量(「アプリケーション」で使用されるメモリ量ではない)を尋ねます。 「Linux」は単なるカーネルです(モノリシックカーネルではありませんが、カーネルモジュールはスペースを効率的に占有するのに役立ちます)。エンドユーザーが「オペレーティングシステム」と見なすことのほとんどは、カーネルの一部ではなく、より大きなUbuntuディストリビューションの一部です。一般的なデスクトップインストールでは、これにはWindowsシステム(通常はxorg)、Windows Manager、およびデスクトップ環境(デフォルトではUbuntuのUnity、他にはGnomeとKDEが含まれています)、および基本的なタスクを実行するその他の完全なホストが含まれます。システムと対話できます。
エンドユーザーにとって、「アプリケーション」という言葉は、しばしば「Webブラウザ」、「スプレッドシート」などを意味します。私はこれを「ユーザーアプリケーション」と呼びます。
これを行うにはいくつかの方法があります。カーネルサイズ推定ただし、Ubuntuが使用するメモリ量を推定するには、関連するすべてのプロセス(xorg、initなど)を識別して追加する必要があります。別のオプションは、top
他のユーザーアプリケーションが実行されていないときと同じものを使用し、ターミナルtop
エミュレータとシェルで使用されているメモリを取り除くことです。
総メモリ
Linuxシステムのメモリ使用量を表示する方法はいくつかあり、そのうちのいくつかは他のものよりも正確です。 「使用中のメモリ」にもさまざまな定義があります。つまり、ほとんどの非技術的な目的では、タワー(1)仕事をすばらしく終わるでしょう:
top - 17:23:50 up 7 days, 19:15, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 172 total, 2 running, 170 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 0.1 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 2049992 total, 1735420 used, 314572 free, 372420 buffers
KiB Swap: 2095100 total, 192 used, 2094908 free. 679116 cached Mem
追加ボーナスとして、次の質問は一般的に」何メモリ不足ですか? 「次の行には、実行中のプロセスと(何よりも)それらが使用する仮想メモリの量が表示されます。
Linuxでは、「利用可能な」メモリは通常非常に小さい数です。良いこと。空きメモリは本質的に無駄なリソースなので、Linuxはさまざまなキャッシュ目的でそれを割り当てます。アプリケーションにメモリが必要な場合、Linuxはそれを最大限に活用します。
答え2
デフォルトのカーネルvmlinuz
はです/boot
。 「z」は「zライブラリを使用した圧縮」を意味する。残念ながら、解凍したサイズを見るには、解凍する方法がわかりません。
また、@type_outcastで述べたように、カーネルはモジュールを使用してハードウェアにアクセスし、他の機能を処理します。詳しくは下記をご覧ください/lib/modules/<version>
。を使用して、どのモジュールがロードされているかを確認できますlsmod
。リストには、Size
各モジュールのサイズを含む列が含まれています。
したがって、カーネルが使用するサイズを知りたい場合は、これは比較的近いものです。
また、メモリファイルもあります。努力するcat /proc/meminfo
。これにより、2つの追加パラメータ、およびKernelStack
が提供されますBuffers
。
また、プロセス1のような個々のプロセスからも情報を得ることができる。これはカーネルの一部と見なすことができるinitプロセスです。この情報は以下で確認できます/proc/1
。メモリ使用量にはいくつかの数値が表示されます。以下に説明します。この列を使用しps -ef | less
て表示すると、そのような下位レベルのプロセスのリストを見つけることができますCMD
。括弧 "[...name...]"の間に現れるのは、実際には下位レベルの項目です(モジュールに関連する項目、実際にはモジュールで作成された操作である可能性がありますが、これについてはわかりません)。 .)
me $ cat /proc/1
46511 1381 790 348 0 37483 0
この数値の測定単位は次のとおりです。ページ。ほとんどの場合、これはバイト単位のサイズを取得するには、その数に4096を掛ける必要があることを意味します。
/proc/[pid]/statm
Provides information about memory usage, measured in pages.
The columns are:
size (1) total program size
(same as VmSize in /proc/[pid]/status)
resident (2) resident set size
(same as VmRSS in /proc/[pid]/status)
shared (3) number of resident shared pages (i.e., backed by a file)
(same as RssFile+RssShmem in /proc/[pid]/status)
text (4) text (code)
lib (5) library (unused since Linux 2.6; always 0)
data (6) data + stack
dt (7) dirty pages (unused since Linux 2.6; always 0)
他のさまざまなプロセスに興味がある場合は、すべてのデータが以下に提供されます/proc
。