クロムの合計メモリ使用量を取得する


28

google chrome / chromiumは複数のプロセスを生成するため、これらのプロセスが使用する合計メモリ量を確認するのは困難です。

一連の接続されたプロセスが使用している合計メモリ量を簡単に確認する方法はありますか?


印刷する数値をKiBからGiBに変換すると、解像度も変わります。メモリマシンのRAMとスワップの量を超えています。だから、何かが過大評価されているようです。
Ryan1729

回答:


30

ことを考えるとChrome版Google殺さ://メモリを 2016年3月に、私は今使用していますSMEMを

# detailed output, in kB apparently
smem -t -P chrom
# just the total PSS, with automatic unit:
smem -t -k -c pss -P chrom | tail -n 1
  • より正確にchromするには、フルパスに置き換えます。/opt/google/chromeまたは/usr/lib64/chromium-browser
  • これは、マルチプロセスFirefox(e10s)でも同じように機能します。 -P firefox
  • 注意してください、smemは出力で自分自身を報告します。私のシステムでは10〜20Mが追加されます。
  • topとは異なり、ルートプロセスを正確に監視するにはルートアクセスが必要sudo smemです。そのために使用します。
  • 参照このSOの答え SMEMは良いツールとどのように出力を読み取ることがある理由の詳細については、を。

これが私のために働いているかどうかはわかりません。2番目のコマンドを実行すると、戻り値が返されます338.0M。これは低すぎます。システムモニターを実行すると、11個のchromeプロセスがあり、それぞれが70MB〜400MBのRAMを使用していることがわかります。システムモニターが誤って報告しているかどうかはわかりません。
-sixtyfootersdude

Kali Linux 2017.1ディストリビューションのsmemでも同じ問題があります。出力は、5つのインスタンスと少なくとも30のタブを持つchromeが使用するRAMの800Moです...そして、システムモニターもsmemと一致しません。誰もがこれに対する解決策を見つけましたか?(答えと参考文献のおかげで)
matthieusb

1
あなたのコメントは、別の質問に値します(競合するプログラムの完全な出力)。コメントにリンクを投稿してください。
-eddygeek

1
クロムとクロムの両方を実行している場合は、両方の合計が表示されるため、chrome代わりに使用しchormます。
RJ

1
あなたは除外することができますsmemのようなものを使用することにより、自身の出力から[c]hrome、例えばsmem -tkP '[c]hrome'。これcは、角かっこ自体ではなく角かっこ内を照合することで機能します。
-wjandrea

3

私はそれが最善の解決策ではないと確信していますが、それでも私にとってはうまくいきます:

#!/bin/sh
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $5}' | awk '{sum += $1 } END { print sum }' 
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $6}' | awk '{sum += $1 } END { print sum }' 

注:[/]opt/google/chrome/chromeMac OS Xを使用している場合など、システムに適したものに変更します(単純grep "chrome"に機能します)。


1
これは数字を印刷するという点で「機能します」。ただし、複数のプロセス間で共有されるメモリは複数回カウントされるため、この数値はそれほど有用ではありません。
ジル 'SO-悪であるのをやめる'

Chromeは一般的なデスクトップで圧倒的に最大のメモリ消費量であり、Chromeプロセスを強制終了するとシステムが非常に高速になるため、実際にはまだ十分だと思います。
シュリダールSarnobat

なぜ2つのawkコマンドですか?それは、なぜなぜ... | awk '{sum += $6} END {print sum}'ですか?
wjandrea

2
FWIW、より短く、より明確なバージョンは次のps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
とおりです。– wjandrea

1
@Rushi気にしないでください。この解決策は意味のある数を与えません。smemトップアンサーごとに使用します。FWIWですが、エイリアスとしては複雑すぎるため、スクリプトまたは関数として実装します。
wjandrea

2

これを実行する:

perl -e '$a="x"x1000000000;sleep(10);print"done\n"'

1.8GB RAMを占有します。したがって、これを実行することを期待します:

perl -e '$a="x"x1000000000;fork;fork;fork;fork;sleep(10);print"done\n"'

16倍になります。しかし、そうではありません。

これは、Linuxカーネルのインテリジェントなコピーオンライトによるものです。「$ a」の内容は変わらないため、「$ a」のメモリを共有できます。ただし、「$ a」が変更されるまで共有されたままになります。その場合、変更されたセクションがコピーされ、RAMの使用が開始されます。

コピーオンライトのオーバーコミットのメモリ量を測定できるかどうかはわかりません。しかし、少なくともこれはあなたのオーバーカウントを説明しています。


0

プロセスの合計をすばやく計算します。

オンマック

  • に行きchrome://system/mem_usageで報告されたすべてを選択します
  • SublimeTextに貼り付けます
  • SelectAll(CMD + 'A')およびSelectAllLines(CMD + SHIFT + 'L')
  • CMD +右(eolに移動)、Backspace、Backspace、Backspace、ALT + Left、CMD + Backspace
  • バックスペース、タイプ「+」、CMD +「A」、CMD +「C」
  • ターミナルを開き、実行python、CMD + V、Enter

出来上がり!「簡単」...🤓😅

PS-ショートカットの忍者と80年代/ 90年代の格闘ゲームプレイヤーは、このソリューションで問題はないはずです🤖🕹💾


0

vimとawkで解決策を見つけました。chrome:// systemを開き、mem_usageを展開し、vimにコピーして正規表現を実行します。

:%s/\D*\(\d*\).MB.*/\1

これにより、MBの前の数字のみが残ります。ファイルを保存して実行する

cat file | awk '{sum += $1} END {print sum}'

vim正規表現コードをsedに変換できませんでした。


0

あるUSS利用できるクロスプラットフォームであります

USS(Unique Set Size)は、プロセスに固有のメモリであり、プロセスが現在終了した場合に解放されます。

psutil> 4.0 Pythonライブラリがアクセスできます

ここに私はそれを使用します

sudo python3 -c "import psutil;print(sum(p.memory_full_info().uss for p in psutil.Process(pid=292).children())/1024/1024);"

ここで、pid = 292はActivity Monitorからの最も外側のプロセスのPIDです


-1

chrome / chromiumにはタスクマネージャがあることは知っていましたが、使用されるメモリの合計はわかりません。タスクマネージャーの[Stats for nerds]リンクは、使用されたメモリの合計をリストするchrome:// memory-redirect /につながることがわかりました。これらの数値を外部で検証し、コマンドラインで情報を取得してより多くの情報を取得できるようにすると便利ですが、これが最善の方法と思われます。


2
この答えはもう有効ではありません。参照してくださいbugs.chromium.org/p/chromium/issues/detail?id=588790
eddygeek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.