web-dev-qa-db-ja.com

LinuxOSが使用しているメモリ量を知る方法

Linux OSが使用しているメモリのサイズを知る方法を探しています(他のアプリケーションのメモリサイズについては心配していません)。

Ubuntuディストリビューション(Ubuntu 15.10)を使用しています。

4
Younes

OSメモリv。Ubuntuメモリv。カーネルメモリ

「LinuxOS」がどれだけ使用しているか(「アプリケーション」がどれだけのメモリを使用しているかではない)を知りたいとのことです。 「Linux」は単なるカーネルです(モノリシックではありませんが、カーネルモジュールは効果的なフットプリントに貢献します)。エンドユーザーが「OS」と見なすものの多くは、カーネルの一部ではなく、より大きなUbuntuディストリビューションの一部です。典型的なデスクトップインストールでは、これにはウィンドウシステム(通常はxorg)、ウィンドウマネージャーとデスクトップ環境(デフォルトではUbuntuのUnity、その他にはGnomeとKDEが含まれます)、および重要な操作を実行する他のプロセスのホスト全体が含まれます。システムと対話できること。

エンドユーザーにとっての「アプリケーション」という言葉は、通常、「Webブラウザ」、「スプレッドシート」などを意味します。これらを「ユーザーアプリケーション」と呼びます。

カーネルサイズを見積もる にはいくつかの方法がありますが、Ubuntuが使用しているメモリの量を見積もる場合は、関連するすべてのプロセスを特定して合計する必要があります(xorg、 initなど)。もう1つのオプションは、他のユーザーアプリケーションを実行していないときに、topのようなものを使用し、topとターミナルエミュレーターおよびシェルによって使用されるメモリを差し引くことです。

総メモリ

Linuxシステムのメモリ使用量を確認するには、他の方法よりも正確な方法がたくさんあります。 「使用中のメモリ」の定義もたくさんあります。とは言うものの、ほとんどの非技術的な用途では、 top(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

追加のボーナスとして、次の質問は「whatがメモリを使い果たしているか?」であることが多いため、次の行は実行中のプロセスと(とりわけ物事)、彼らが使用している仮想メモリの量。

Linuxの「空き」メモリは非常に少ない場合が多く、それは良いことです。空きメモリは本質的に無駄なリソースであるため、Linuxは代わりにさまざまなキャッシュ用途に割り当てます。 。アプリケーションがそのメモリを必要とする場合でも、それは利用可能です。 Linuxは、当面の間、それを有効に活用しているところです。

4
type_outcast

基本的なカーネルは、/bootの下のvmlinuzファイルです。 「z」は「zライブラリで圧縮された」を表します。残念ながら、解凍したサイズを確認するために解凍する方法がわかりません。

また、@ type_outcastで言及されているように、カーネルはモジュールを使用してハードウェアにアクセスし、他のいくつかの機能を処理します。これらは/lib/modules/<version>の下にあります。 lsmodを使用して、ロードされているモジュールを判別できます。このリストには、各モジュールのサイズを含むSize列が含まれています。

したがって、カーネルが使用しているサイズを知りたい場合は、比較的近似値になります。

また、メモリファイルがあります。 cat /proc/meminfoをお試しください。これにより、KernelStackBuffersの2つの追加パラメーターが得られます。

さらに、プロセス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で利用可能になります。

0
Alexis Wilke