Pop!_OS 20.04に問題があります。デフォルトでは、十分に長い間実行した後、バッファ/キャッシュがいっぱいになり(読み取り内容は完全に正常です)、使用可能なメモリが減少します。結局のところ、私のコンピュータはメモリスワップを試み始め、kswapdプロセスが始まりました。これが発生すると、コンピュータが完全に停止して使用できなくなり、ハード再起動が必要になります。以下は、これが発生する直前に上から出力されたいくつかの例です。
top - 20:01:56 up 2:20, 1 user, load average: 0.89, 0.89, 0.96
Tasks: 273 total, 2 running, 271 sleeping, 0 stopped, 0 zombie
%Cpu(s): 15.2 us, 3.5 sy, 0.0 ni, 80.9 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7916.1 total, 156.4 free, 3212.3 used, 4547.4 buff/cache
MiB Swap: 4095.5 total, 2097.5 free, 1998.0 used. 118.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5717 bob 20 0 6981324 529316 40100 S 52.5 6.5 93:20.71 WoWClassic.exe
1895 bob -2 0 6984436 84200 17752 S 5.3 1.0 2:31.27 gnome-shell
1614 bob 20 0 4878928 24088 3960 S 8.6 0.3 5:45.16 Xorg
2214 bob 20 0 639644 19208 8840 S 4.3 0.2 0:27.15 gnome-terminal-
2349 bob 20 0 2091024 7800 2096 S 0.3 0.1 0:48.83 io.elementary.a
1219 geoclue 20 0 584040 6000 4044 S 0.0 0.1 0:00.41 geoclue
1733 bob 20 0 323980 4896 1724 S 1.0 0.1 0:14.02 ibus-daemon
1 root 20 0 167800 4536 1292 S 0.3 0.1 0:18.14 systemd
876 root 20 0 394572 4448 1940 S 0.3 0.1 0:09.84 udisksd
1836 bob 20 0 505000 4280 2116 S 0.3 0.1 0:00.59 xdg-desktop-por
445 root 19 -1 70136 4272 3608 S 0.0 0.1 0:00.71 systemd-journal
top - 20:16:50 up 2:35, 1 user, load average: 0.88, 0.41, 0.70
Tasks: 274 total, 1 running, 273 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.6 us, 0.2 sy, 0.0 ni, 99.2 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7916.1 total, 459.5 free, 2943.0 used, 4513.6 buff/cache
MiB Swap: 4095.5 total, 2300.2 free, 1795.3 used. 526.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1614 bob 20 0 5060228 37668 11568 S 4.0 0.5 6:02.94 Xorg
2214 bob 20 0 639644 28544 17288 S 3.7 0.4 0:30.20 gnome-terminal-
1895 bob -2 0 7291972 211512 64668 S 3.0 2.6 2:50.37 gnome-shell
1 root 20 0 167800 6812 3568 S 0.3 0.1 0:18.68 systemd
838 root 20 0 419244 5876 4464 S 0.3 0.1 0:01.53 NetworkManager
1733 bob 20 0 323980 7052 2484 S 0.3 0.1 0:14.62 ibus-daemon
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
10 root 20 0 0 0 0 S 0.0 0.0 0:00.21 ksoftirqd/0
11 root 20 0 0 0 0 I 0.0 0.0 0:10.40 rcu_sched
12 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/0
13 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0
ご覧のとおり、バッファ/キャッシュはかなり大きく、使用可能なメモリの半分以上を使用しています。この値は通常、コンピュータの電源が入るにつれて時間の経過とともにゆっくりと増加します。結局のところ、コンピュータが動作を停止して再起動する必要があるほど大きくなりました。
これまで実際に試した唯一の方法は、/etc/ vm.swappiness=0
sysctl.confに追加してswappinessを0に変更することでしたが、役に立ちませんでした。
キャッシュ/バッファが高くなり、使用可能なメモリが低くなったときに定期的に再起動するだけでなく、kswapdがクレイジーに実行されて停止するのを防ぐために他にできる方法はありますか?
答え1
これは、一部のプロセスでメモリが漏れたり、多すぎるメモリを使用してガベージでいっぱいになったりする可能性があります。メモリがいっぱいになるとスワップ領域を占有します。ディスクが遅いため、(過度に使用される)メモリへの(ランダム)アクセスが多すぎると、システムがクロールされる可能性があります。
出力size
のプロセスを見ると、ps(1)
犯人を指摘する必要があります。