最近奇妙な問題が発生しました。
時には(意図的に再現できません)、十分なRAMがあるにもかかわらず、システムはすべてのスワップスペースを使用します。これが発生すると、システムは数分間応答しなくなり、OOMキラーはあまり役に立たない「ランダム」プロセスを終了するか、Xサーバーをシャットダウンします。 「ランダム」プロセスを終了すると、システムは応答しません(まだスワップスペースはありませんが、空きRAMが多い)。 Xを終了すると、スワップ領域が解放され、システムが再び応答します。
free発生時の出力:
$ free -htl
total used free shared buff/cache available
Mem: 7.6G 1.4G 60M 5.7G 6.1G 257M
Low: 7.6G 7.5G 60M
High: 0B 0B 0B
Swap: 3.9G 3.9G 0B
Total: 11G 5.4G 60M
名前-a:
Linux fedora 4.4.7-300.fc23.x86_64 #1 SMP Wed Apr 13 02:52:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
交換性:
cat /proc/sys/vm/swappiness
5
dmesgの関連セクション:http://pastebin.com/0P0TLfsC
一時ファイルシステム:
$ df -h -t tmpfs
Filesystem Size Used Avail Use% Mounted on
tmpfs 3.8G 1.5M 3.8G 1% /dev/shm
tmpfs 3.8G 1.7M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs 3.8G 452K 3.8G 1% /tmp
tmpfs 776M 16K 776M 1% /run/user/42
tmpfs 776M 32K 776M 1% /run/user/1000
メモリ情報: http://pastebin.com/CRmitCiJ
トップ -o SHR -n 1 ミッション:合計231個、ランニング1個、睡眠230個、停止0個、ゾンビ0個 %Cpu(s): 8.5 us, 3.0 sy, 0.3 ni, 86.9 id, 1.3 wa, 0.0 hi, 0.0 si, 0.0 st KiBメモリ:合計7943020個、無料485368個、使用済み971096個、バフ/キャッシュ6486556個 交換されたKiB:合計4095996個、無料1698992個、使用された2397004個。 989768 利用可能なメモリ PID ユーザー PR NI VIRT RES SHR S %CPU %MEM TIME+ コマンド 2066 mkamlei+ 20 0 8342764 163908 145208 S 0.0 2.1 0:59.62 Xorg 2306 mkamlei+ 20 0 1892816 138536 27168 S 0.0 1.7 1:25.47 ノームシェル 3118 mkamlei+ 20 0 596392 21084 13152 S 0.0 0.3 0:04.86 GNOME端子 - 1646 gdm 20 0 1502632 60324 12976 S 0.0 0.8 0:01.91 GNOME シェル 2269 mkamlei+ 20 0 1322592 22440 8124 S 0.0 0.3 0:00.87 GNOME設定- 486 ルート 20 0 47048 8352 7656 S 0.0 0.1 0:00.80 システムログ 2277メカムレ+ 9 -11 570512 10080 6644 S 0.0 0.1 0:15.33 2581 mkamlei+ 20 0 525424 19272 5796 S 0.0 0.2 0:00.37 赤い色 gtk 1036 ルート 20 0 619016 9204 5408 S 0.0 0.1 0:01.70 ネットワーク管理者 1599 gdm 20 0 1035672 11820 5120 S 0.0 0.1 0:00.28 gnome-setup- 2386 mkamlei+ 20 0 850856 24948 4944 S 0.0 0.3 0:05.84 ゴアデーモン 2597 mkamlei+ 20 0 1138200 13104 4596 S 0.0 0.2 0:00.28 進化警報 2369 mkamlei+ 20 0 1133908 16472 4560 S 0.0 0.2 0:00.49 進化源 2529 mkamlei+ 20 0 780088 54080 4380 S 0.0 0.7 0:01.14 GNOMEソフトウェア 2821 mkamlei+ 20 0 1357820 44320 4308 S 0.0 0.6 0:00.23 進化力 2588 mkamlei+ 20 0 1671848 55744 4300 S 0.0 0.7 0:00.49 進化力 2525 mkamlei+ 20 0 613512 8928 4188 S 0.0 0.1 0:00.19 abrt アプレット
IPC:
[mkamleithner@fedora~]$ipcs -m -t ------共有メモリ接続/分離/変更時間------- shmid所有者の追加分離が変更されました 294912 mkamleithn 4月30日 20:29:16 未設定 4月30日 20:29:16 393217 mkamleithn 4月30日 20:29:19 4月30日 20:29:19 4月30日 20:29:17 491522 mkamleithn 4月30日 20:42:21 4月30日 20:42:21 4月30日 20:29:18 524291 mkamleithn 4月30日、20:38:10 4月30日、20:38:10 4月30日、20:29:18 786436 mkamleithn 4月30日 20:38:12 未設定 4月30日 20:38:12 [mkamleithner@fedora~]$ipcs ------ メッセージキュー--------- 主なmsqid所有者権限はバイトメッセージを使用しました。 ------共有メモリセグメント--------- キー shmid 所有者権限バイト nattch ステータス 0x00000000 294912 mkamleithn 600 524288 2ターゲット 0x00000000 393217 mkamleithn 600 2576 2 目的地 0x00000000 491522 mkamleithn 600 4194304 2ターゲット 0x00000000 524291 mkamleithn 600 524288目的地2 0x00000000 786436 mkamleithn 600 4194304 2ターゲット ------セマフォ配列-------- 主要な semid 所有者権限 nsems
[mkamleithner@fedora~]$ipcs -m -t ------共有メモリ接続/分離/変更時間------- shmid所有者の追加分離が変更されました 294912 mkamleithn 4月30日 20:29:16 未設定 4月30日 20:29:16 393217 mkamleithn 4月30日 20:29:19 4月30日 20:29:19 4月30日 20:29:17 491522 mkamleithn 4月30日 20:42:21 4月30日 20:42:21 4月30日 20:29:18 524291 mkamleithn 4月30日、20:38:10 4月30日、20:38:10 4月30日、20:29:18 786436 mkamleithn 4月30日 20:38:12 未設定 4月30日 20:38:12
[mkamleithner@fedora~]$ sudo grep 786436 /proc/*/maps /proc/2084/maps:7ff4a56cc000-7ff4a5acc000 rw-s 00000000 00:05 786436 /SYSV00000000 (削除済み) /proc/3984/maps:7f4574d00000-7f4575100000 rw-s 00000000 00:05 786436 /SYSV00000000 (削除済み)
[mkamleithner@fedora~]$ sudo grep 524291 /proc/*/maps /proc/2084/maps:7ff4a4593000-7ff4a4613000 rw-s 00000000 00:05 524291 /SYSV00000000 (削除済み) /proc/2321/maps:7fa9b8a67000-7fa9b8ae7000 rw-s 00000000 00:05 524291 /SYSV00000000 (削除済み)
[mkamleithner@fedora~]$ sudo grep 491522 /proc/*/maps /proc/2084/maps:7ff4a4ad3000-7ff4a4ed3000 rw-s 00000000 00:05 491522 /SYSV00000000 (削除済み) /proc/2816/maps:7f2763ba1000-7f2763fa1000 rw-s 00000000 00:05 491522 /SYSV00000000 (削除済み)
[mkamleithner@fedora~]$ sudo grep 393217 /proc/*/maps /proc/2084/maps:7ff4b1a60000-7ff4b1a61000 rw-s 00000000 00:05 393217 /SYSV00000000 (削除済み) /proc/2631/maps:7fb89be79000-7fb89be7a000 rw-s 00000000 00:05 393217 /SYSV00000000 (削除済み)
[mkamleithner@fedora~]$ sudo grep 294912 /proc/*/maps /proc/2084/maps:7ff4a5510000-7ff4a5590000 rw-s 00000000 00:05 294912 /SYSV00000000 (削除済み) /proc/2582/maps:7f7902dd3000-7f7902e53000 rw-s 00000000 00:05 294912 /SYSV00000000 (削除済み)
プロセス名を入手してください。
[mkamleithner@fedora ~]$ ps aux |クエリ 2084 mkamlei+ 2084 5.1 2.0 8149580 159272 tty2 Sl+ 20:29 1:10 /usr/libexec/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthoritynolist 3 mkamlei+ 5261 0.0 0.0 118476 2208ポイント/0 S+ 20:52 0:00 grep --color=auto 2084 [mkamleithner@fedora〜]$ ps aux grep 3984 | mkamlei+ 3984 11.4 3.6 1355100 293240 tty2 Sl+ 20:38 1:38 /usr/lib64/firefox/firefox mkamlei+ 5297 0.0 0.0 118472 2232ポイント/0 S+ 20:52 0:00 grep --color=auto 3984
結果を投稿する必要がある他のshmidはありますか?出力を解釈する方法がわかりません。
この問題をどのように解決できますか?
編集:「ファイルを作成してください」ゲームを開始すると、常にしばらくしてこの問題が発生しているようです。しかし、ゲームが始まっていないとき、このようなことが時々起こります。
Edit2:Xの問題のようです。 Waylandではこれは起こりません。それはおそらく、xorg.confのカスタム設定のためです。
最終編集:同じ問題が発生する人のために:私はDRI 2を使用しています。 DRI 3に切り替えると、問題が解決する可能性があります。私のxorg.confの関連部分は次のとおりです。
「デバイス」セクション 識別子「インテルグラフィックス」 ドライバー「インテル」 オプション "AccelMethod" "sna"# オプション「バックライト」「intel_backlight」 バスID「PCI:0:2:0」 オプション「DRI」「3」#ここ オプション "TearFree" "true" 終わり
私のシステムの関連ファイルは/usr/share/X11/xorg.conf.d/にあります。
答え1
tmpfsで使用される共有メモリ(主に)(/ proc / meminfoのShmem、カーネル2.6.32で利用可能、利用できない場合0)>
したがって、マンページの定義はShared
予想どおりに役に立ちません。 :(. tmpfsが実際に使用している場合いいえSharedの高い値を反映するには、その値はMAP_SHARED | MAP_ANONYMOUS(またはSystem V共有メモリ)でmmap()したプロセスを表す必要があります。
8Gシステムの6G共有メモリはまだたくさん。真剣に、少なくともデスクトップでは望ましくありません。
不思議なことに「バフ/キャッシュ」にも役立つようです。しかし、私はPythonで簡単なテストをしてみましたが、これがうまくいく方法です。
共有メモリが最も多いプロセスを表示するには、を使用しますtop -o SHR -n 1
。
システムV共有メモリ
最後に、System V共有メモリセグメントを使用する恐ろしいレガシーソフトウェアがある可能性があります。もし彼らが得るなら方法を提供、彼らは表示されませんtop
:(。
を使用して一覧表示できますipcs -m -t
。最近作成されたものがまだ使用されていることを願っています。たとえば、shmid 番号を取得します。
$ ipcs -m -t
------ Shared Memory Attach/Detach/Change Times --------
shmid owner attached detached changed
3538944 alan Apr 30 20:35:15 Apr 30 20:35:15 Apr 30 16:07:41
3145729 alan Apr 30 20:35:15 Apr 30 20:35:15 Apr 30 15:04:09
4587522 alan Apr 30 20:37:38 Not set Apr 30 20:37:38
# sudo grep 4587522 /proc/*/maps
->その後、/ procパスに表示される数字はSHMを使用するプロセスのpidです。 (したがって、psの出力をgrepしてpid番号を見つけることができます.)
明らかな矛盾
Xorgには8Gマッピングがあります。専用グラフィックカードRAMがなくても同じです。住民数は1億5千万人に過ぎません。スワップスペースが不足して残りを交換するのとは異なります。
示されたSHMセグメントは、両方の
ipcs
プロセスに接続されています。したがって、それらのどれも流出しておらず、すべてSHR列top
(偶数)に表示する必要があります。使用されるページ数がメモリセグメントのサイズより少なくてもかまいません。これは、使用されていないページがあるという意味にすぎません。しかし、free
私たちが占める必要がある6GBの割り当てられた共有メモリがありますが、見つからないとしましょう。
答え2
shared
tmpfsで使用されるメモリ(主に)(/proc/meminfoのShmem、カーネル2.6.32で使用可能、使用可能でない場合は0
tmpfsは交換可能です。 tmpfs ファイルシステムが安全限界を超えていっぱいになりました。比較のために、私がこの記事を書いているシステムには200Mの共有スペースがあります。 6Gはデスクトップを実行し、DropboxやSteamなどのものも実行できる8Gシステムに比べて多すぎます。
一般的なツールを使用すると、問題を引き起こすファイルを見つけることができます。理論的には、Xセッションが終了すると、これらのファイルが消える可能性があります。
$ df -h -t tmpfs
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.9G 1.7M 1.9G 1% /dev/shm
tmpfs 1.9G 1.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 1.9G 80K 1.9G 1% /tmp
tmpfs 376M 20K 376M 1% /run/user/42
tmpfs 376M 20K 376M 1% /run/user/1000
問題を解決して分析する機会を得て、問題を満たすソフトウェアで役に立つエラーメッセージをトリガーすることができるように、tmpfsマウントを制限します。
デフォルトでは、各 tmpfs は使用可能な RAM の 1/2 に制限されます。
したがって、デフォルトの制限を下回る複数のtmpfsマウントを追加しないことをお勧めします。上記のように、ディストリビューションは私の4GBシステムに関してはあまり良くありません。
確かに制限は実行時に変更されることがありますmount -oremount,size=10% /tmp
。
たとえば、起動時に実行される場所に再インストールコマンドを追加できます/etc/rc.local
(必要な場合がありますsystemctl enable rc-local
)。/run/user/*
これはスクリプトの実行後にインストールできます。適切な制限があることを願っています。
デフォルトのtmpfsインストールは/etc/fstab
。 systemdでは、以下を使用して/tmp
マウントを変更できます。systemctl edit tmp.mount
それ以外の場合は、システムスクリプトをgrepして/ tmpがマウントされている場所を見つけ、編集できる設定ファイルを使用することもできます。別の有効なオプション/tmp
は、tmpfsマウントを完全に無効にし、systemctl disable tmp.mount
プログラムがルートファイルシステムにのみ書き込むことを可能にすることです。