web-dev-qa-db-ja.com

Chromeの合計メモリ使用量を取得する

Google chrome/chromiumは複数のプロセスを生成するため、これらのプロセスが合計でどれだけの合計メモリを使用しているかを確認することは困難です。

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

29
Ryan1729

2016年3月に google killed chrome:// memory とすると、現在 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
  • これは、-P firefoxを使用したマルチプロセスFirefox(e10s)でも同じように機能します
  • 注意してください、smemは出力に自分自身を報告します。私のシステムではさらに約10〜20Mです。
  • topとは異なり、rootプロセスを正確に監視するにはrootアクセスが必要です-そのためにはSudo smemを使用します。
  • smemが優れたツールである理由と出力の読み方の詳細については、 this SO answer を参照してください。
31
eddygeek

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

#!/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/chromeをシステムに適したものに、たとえばMac OS Xを使用している場合(単にgrep "chrome" 動作します)。

3
Lev Bystritskiy

これを実行する:

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を使用し始めます。

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

2
Ole Tange

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

0
Ryan1729

プロセスの合計をすばやく計算するだけです。

オンMac

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

出来上がり! 「簡単」... ????????

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

0
Kamafeather

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

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

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

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

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

0
swedman

@eddygeekの改善策:

smem -ktP chrome

最後の行の「USS」列の値を見てください。

注:このエイリアスを作成することもできます:

alias mem='smem -ktP '

次に使用します:

mem chrome
0
Topera

[〜#〜] uss [〜#〜]があり、クロスプラットフォームで利用できます

USS(ユニークセットサイズ)は、プロセスに固有のメモリであり、プロセスが現在終了している場合は解放されます。

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は、アクティビティモニターの最も外側のプロセスのPIDです。

0
gadelat