新たに起動したシステムでfree
は、1.5GがRAMを使用していることを報告します(8G RAM全体、lightdmおよびplasmaデスクトップを備えたUbuntu 12.04、1つのコンソールウィンドウが起動しました)。私が使用しているアプリを実行していても、消費するのはまだ2G以下です。ただし、システムを数日間実行すると、使用中のアプリのリストに表示されずに、ますます多くの空きRAMが消えます:使用smem --pie=name
率が20%未満(および80%が使用可能)であると報告されているが、他のすべてのメッセージ異なる。free -m
たとえば、約7日目のレポート:
total used free shared buffers cached
Mem: 7459 7013 446 0 178 997
-/+ buffers/cache: 5836 1623
Swap: 9536 296 9240
(ご覧のとおり、バッファでもキャッシュでもありません)。今日、これはようやくシステムが完全にクラッシュして終了しました:Windowsマネージャーが消え、アプリが「空中にぶら下がっています」(フレームレス)-ポップアップが「開いているファイルが多すぎる」ことを通知します。syslogレポート:
kernel: [856738.020829] VFS: file-max limit 752838 reached
そこで、閉じることができたアプリケーションを閉じ、Ctrl-Alt-backspaceを使用してXを強制終了しました。Xはその後failsafeXを使用して再度起動しようとしましたが、構成を検出できなくなったため、起動できませんでした。そこで、Ctrl-Alt-F2を使用してコンソールに切り替え、考えられるすべての情報(vmstat、free、smem 、、proc/meminfo
lsof、ps aux
)をキャプチャし、最終的に再起動しました。Xは再びfailsafeXを思いつきました。今回は、「バックアップされた構成から回復する」ように指示し、コンソールに切り替えstartx
て、グラフィカル環境の起動に使用しました。
Xを殺した後、free -m
出力は次のようになったため、X自体またはXで実行されている一部のユーザープロセスのいずれかを使用する必要がありますが、この問題の原因について本当の手がかりはありません。
total used free shared buffers cached
Mem: 7459 2677 4781 0 62 419
-/+ buffers/cache: 2195 5263
Swap: 9536 59 9477
(〜3.5GBが解放されます)-再起動後の出力と比較するには:
total used free shared buffers cached
Mem: 7459 1483 5975 0 63 730
-/+ buffers/cache: 689 6769
Swap: 9536 0 9536
さらに2つの便利な出力が提供されmemstat -u
ます。クラッシュの少し前:
User Count Swap USS PSS RSS
mail 1 0 200 207 616
whoopsie 1 764 740 817 2300
colord 1 3200 836 894 2156
root 62 70404 352996 382260 569920
izzy 80 177508 1465416 1519266 1851840
Xを殺した後:
User Count Swap USS PSS RSS
mail 1 0 184 188 356
izzy 1 1400 708 739 1080
whoopsie 1 848 668 826 1772
colord 1 3204 804 888 1728
root 62 54876 131708 149950 267860
そして、再起動後、Xに戻ります。
User Count Swap USS PSS RSS
mail 1 0 212 217 628
whoopsie 1 0 1536 1880 5096
colord 1 0 3740 4217 7936
root 54 0 148668 180911 345132
izzy 47 0 370928 437562 915056
編集:監視システムから2つのグラフを追加しました。興味深いことに、メモリ消費に「ジャンプ」があるたびに、CPUもピークに達します。今すぐこれを見つけました-それは、X自体を指し示す別のインジケーターを思い出させます:私のマシンに戻って画面のロックを解除するとき、しばしばCPUで重い仕事をしている何かを見つけました。と確認するとtop
、それは常に判明した/usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none
。
この長い説明の後、ついに私の質問:
- 考えられる原因は何ですか?
- 関係するプロセス/アプリケーションをよりよく特定するにはどうすればよいですか?
- この動作を回避するためにどのような手順を踏むことができますか?X日間すべてマシンをリブートするのに短いですか?
古いマシンで8.04(Hardy)を約5年間実行していましたが、同じようなことは一度もありませんでした(常に100日以上の稼働時間、カーネル更新などのために再起動する前)。これは、12.04の新規インストールを備えた完全に新しいマシンです。重要な場合、いくつかの仕様:
Radeon(tm)HDグラフィックス搭載のAMD A4-3400 APU、オープンソースati / radeonドライバー(fglrxがインストールされていない)、8GB RAM、WDC WD1002FAEX-0 hdd(1TB)、Asus F1A75-V Evoメインボードを使用 Ubuntu 12.04 64ビットとKDE4 / Plasma。通常、アプリは多かれ少なかれ恒久的に開き、Evolution、Firefox、konsole(Midnight Commanderを実行中、約4つのタブ)、およびLibreOfficeに加えて、Calibre、Gimp、Moneyplex(私はすでに20年近く使用している銀行ソフトウェア、 Hardyで問題なく動作したバージョン)。
編集:
今日、私は「邪悪な男」の1人を見つけました:KDE4sプラズマデスクトップ。使用したメモリは、最大5GBでしたkillall plasma-desktop && plasma-desktop
。これにより、1.3GBのRAMが解放されました!ps
言う:
RSS SIZE VSZ
plasma usage before restart 120988 526472 1300816
plasma usage after restart 92352 495972 1263632
では、1.3GBはどこにあるのでしょうか?これらの値の差分は、合計すると、1.3MBではなく96MBになります。
そして、3.7GBがまだ使用されているので、これは1つの部分にすぎません(2GB未満でなければなりません)。過去6日間、いくつかのツールを使用してこれを監視しました。使用済みメモリ(キャッシュとバッファについては説明していません)はゆっくりですが着実に増加します。たとえ私が机に何も走らなくても...
開いているファイルを使用したプロセスの監視については、現在、次の1ライナー(シェル、特にbashが大好き)を使用して、トップ5を取得しています。
echo "$(for pid in $(ls -a /proc|egrep '^([0-9])*$'|sort -n 2>/dev/null); do \
if [ -e /proc/$pid/fd ]; then FHC=$(ls -l /proc/$pid/fd|wc -l); \
if [ $FHC -gt 0 ]; then PNAME="$(cat /proc/$pid/comm)"; \
echo "$FHC files opened by $pid ($PNAME)"; fi; fi; done)"|sort -r -n|head -n5
読みやすくするために、ここに4行でコマンドを入力します。そこからはまだ何もありません-Skypeがインターネット接続の切断を好まないことを除いて。切断するたびに、開いているファイルがわずかに増加しますが、劇的なことはありません。一方、プラズマもその原因であるようです:
最後にファイルハンドルのドロップが表示されますか?それがプラズマの再起動でした。
free
。実際に私が検討した別のDEへの切り替え。KDE3.5が利用可能であった場合、私はプラズマに行き着きませんでした。これは、Plasmaが関係しているかどうかを確認するための一時的なものです。
sudo bash -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
余分なラムをクリアしますか?次を使用してプログラムの開いているファイルを表示できますlsof