在一些 ML 训练过程中,htop
当发生 OOM 时,会显示所有 RAM(16GB)的使用率以及只有 2G(16GB 中)的 SWAP。
dmesg
显示:
[pon sie 12 11:53:44 2019] Purging GPU memory, 0 bytes freed, 131072 bytes still pinned.
[pon sie 12 11:53:44 2019] 73728 and 0 bytes still available in the bound and unbound GPU page lists.
[pon sie 12 11:53:44 2019] iscsid invoked oom-killer: gfp_mask=0x24200ca, order=0, oom_score_adj=0
[pon sie 12 11:53:44 2019] iscsid cpuset=/ mems_allowed=0
[pon sie 12 11:53:44 2019] CPU: 1 PID: 1306 Comm: iscsid Tainted: P OE 4.4.0-116-generic #140-Ubuntu
[pon sie 12 11:53:44 2019] Hardware name: MSI MS-7996/H110M PRO-VD (MS-7996), BIOS 2.E0 08/11/2017
[pon sie 12 11:53:44 2019] 0000000000000286 faad9ce5c4d517dc ffff8804677a79d8 ffffffff813ffc13
[pon sie 12 11:53:44 2019] ffff8804677a7b90 ffff880464551e00 ffff8804677a7a48 ffffffff8121012e
[pon sie 12 11:53:44 2019] 0000000000000015 0000000000000000 ffff88046464f300 ffff880463138000
[pon sie 12 11:53:44 2019] Call Trace:
[pon sie 12 11:53:44 2019] [<ffffffff813ffc13>] dump_stack+0x63/0x90
[pon sie 12 11:53:44 2019] [<ffffffff8121012e>] dump_header+0x5a/0x1c5
[pon sie 12 11:53:44 2019] [<ffffffff81397c44>] ? apparmor_capable+0xc4/0x1b0
[pon sie 12 11:53:44 2019] [<ffffffff811968f2>] oom_kill_process+0x202/0x3c0
[pon sie 12 11:53:44 2019] [<ffffffff81196d19>] out_of_memory+0x219/0x460
[pon sie 12 11:53:44 2019] [<ffffffff8119cd45>] __alloc_pages_slowpath.constprop.88+0x965/0xb00
[pon sie 12 11:53:44 2019] [<ffffffff8119d168>] __alloc_pages_nodemask+0x288/0x2a0
[pon sie 12 11:53:44 2019] [<ffffffff811e84ed>] alloc_pages_vma+0xad/0x250
[pon sie 12 11:53:44 2019] [<ffffffff811d8ece>] __read_swap_cache_async+0xee/0x140
[pon sie 12 11:53:44 2019] [<ffffffff811d8f46>] read_swap_cache_async+0x26/0x60
[pon sie 12 11:53:44 2019] [<ffffffff811d9085>] swapin_readahead+0x105/0x1b0
[pon sie 12 11:53:44 2019] [<ffffffff811c60f0>] handle_mm_fault+0x1320/0x1820
[pon sie 12 11:53:44 2019] [<ffffffff810f340c>] ? hrtimer_nanosleep+0xdc/0x210
[pon sie 12 11:53:44 2019] [<ffffffff8106c747>] __do_page_fault+0x197/0x400
[pon sie 12 11:53:44 2019] [<ffffffff8106c9d2>] do_page_fault+0x22/0x30
[pon sie 12 11:53:44 2019] [<ffffffff818519d8>] page_fault+0x28/0x30
[pon sie 12 11:53:44 2019] Mem-Info:
[pon sie 12 11:53:44 2019] active_anon:3530449 inactive_anon:422028 isolated_anon:384
active_file:179 inactive_file:100 isolated_file:0
unevictable:913 dirty:0 writeback:0 unstable:0
slab_reclaimable:9555 slab_unreclaimable:17443
mapped:666425 shmem:1068600 pagetables:11052 bounce:0
free:35287 free_pcp:0 free_cma:0
[pon sie 12 11:53:44 2019] Node 0 DMA free:15888kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15988kB managed:15888kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
[pon sie 12 11:53:44 2019] lowmem_reserve[]: 0 1811 15874 15874 15874
[pon sie 12 11:53:44 2019] Node 0 DMA32 free:63400kB min:7704kB low:9628kB high:11556kB active_anon:1349712kB inactive_anon:449972kB active_file:164kB inactive_file:172kB unevictable:904kB isolated(anon):768kB isolated(file):0kB present:1987100kB managed:1906332kB mlocked:904kB dirty:0kB writeback:0kB mapped:53540kB shmem:495788kB slab_reclaimable:3864kB slab_unreclaimable:7812kB kernel_stack:400kB pagetables:7000kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:11349276 all_unreclaimable? yes
[pon sie 12 11:53:44 2019] lowmem_reserve[]: 0 0 14062 14062 14062
[pon sie 12 11:53:44 2019] Node 0 Normal free:61860kB min:59812kB low:74764kB high:89716kB active_anon:12772084kB inactive_anon:1238140kB active_file:552kB inactive_file:228kB unevictable:2748kB isolated(anon):768kB isolated(file):0kB present:14663680kB managed:14400224kB mlocked:2748kB dirty:0kB writeback:0kB mapped:2612160kB shmem:3778612kB slab_reclaimable:34356kB slab_unreclaimable:61960kB kernel_stack:3952kB pagetables:37208kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:89423048 all_unreclaimable? yes
[pon sie 12 11:53:44 2019] lowmem_reserve[]: 0 0 0 0 0
[pon sie 12 11:53:44 2019] Node 0 DMA: 2*4kB (U) 3*8kB (U) 3*16kB (U) 0*32kB 3*64kB (U) 2*128kB (U) 0*256kB 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB (M) = 15888kB
[pon sie 12 11:53:44 2019] Node 0 DMA32: 147*4kB (UME) 54*8kB (UME) 458*16kB (UME) 139*32kB (UME) 106*64kB (UME) 51*128kB (UME) 23*256kB (UE) 17*512kB (UE) 3*1024kB (UME) 0*2048kB 5*4096kB (M) = 64252kB
[pon sie 12 11:53:44 2019] Node 0 Normal: 267*4kB (UME) 183*8kB (UME) 230*16kB (UMEH) 215*32kB (UMEH) 86*64kB (UEH) 86*128kB (UMEH) 70*256kB (UMEH) 26*512kB (UMEH) 1*1024kB (U) 0*2048kB 0*4096kB = 61860kB
[pon sie 12 11:53:44 2019] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
[pon sie 12 11:53:44 2019] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
[pon sie 12 11:53:44 2019] 1083770 total pagecache pages
[pon sie 12 11:53:44 2019] 14283 pages in swap cache
[pon sie 12 11:53:44 2019] Swap cache stats: add 81268022, delete 81253739, find 37239561/47307273
[pon sie 12 11:53:44 2019] Free swap = 14632936kB
[pon sie 12 11:53:44 2019] Total swap = 16662524kB
[pon sie 12 11:53:44 2019] 4166692 pages RAM
[pon sie 12 11:53:44 2019] 0 pages HighMem/MovableOnly
[pon sie 12 11:53:44 2019] 86081 pages reserved
[pon sie 12 11:53:44 2019] 0 pages cma reserved
[pon sie 12 11:53:44 2019] 0 pages hwpoisoned
[pon sie 12 11:53:44 2019] [ pid ] uid tgid total_vm rss nr_ptes nr_pmds swapents oom_score_adj name
[pon sie 12 11:53:44 2019] [ 449] 0 449 42126 113 18 3 75 0 lvmetad
[pon sie 12 11:53:44 2019] [ 461] 0 461 11311 172 22 3 361 -1000 systemd-udevd
[pon sie 12 11:53:44 2019] [ 917] 0 917 151045 242 28 3 730 0 lxcfs
[pon sie 12 11:53:44 2019] [ 924] 0 924 7557 409 19 3 80 0 cron
[pon sie 12 11:53:44 2019] [ 929] 0 929 1099 288 7 3 36 0 acpid
[pon sie 12 11:53:44 2019] [ 944] 112 944 11227 404 25 3 117 0 avahi-daemon
[pon sie 12 11:53:44 2019] [ 946] 0 946 6511 375 18 3 77 0 atd
[pon sie 12 11:53:44 2019] [ 951] 0 951 6320 398 17 4 227 0 smartd
[pon sie 12 11:53:44 2019] [ 954] 104 954 64098 283 28 3 283 0 rsyslogd
[pon sie 12 11:53:44 2019] [ 956] 107 956 10792 329 25 3 191 -900 dbus-daemon
[pon sie 12 11:53:44 2019] [ 977] 112 977 11196 0 24 3 81 0 avahi-daemon
[pon sie 12 11:53:44 2019] [ 982] 0 982 112713 309 73 4 700 0 NetworkManager
[pon sie 12 11:53:44 2019] [ 983] 0 983 8863 347 20 3 241 0 openvpn
[pon sie 12 11:53:44 2019] [ 986] 0 986 69321 328 37 3 234 0 accounts-daemon
[pon sie 12 11:53:44 2019] [ 1002] 0 1002 3343 226 11 3 41 0 mdadm
[pon sie 12 11:53:44 2019] [ 1011] 0 1011 69277 371 39 4 188 0 polkitd
[pon sie 12 11:53:44 2019] [ 1087] 0 1087 4030 321 13 3 215 0 dhclient
[pon sie 12 11:53:44 2019] [ 1275] 0 1275 16377 341 37 3 185 -1000 sshd
[pon sie 12 11:53:44 2019] [ 1284] 0 1284 211630 0 86 6 9081 -500 dockerd
[pon sie 12 11:53:44 2019] [ 1306] 0 1306 1305 405 9 3 51 0 iscsid
[pon sie 12 11:53:44 2019] [ 1310] 0 1310 1430 876 9 3 0 -17 iscsid
[pon sie 12 11:53:44 2019] [ 1409] 0 1409 4868 367 14 3 73 0 irqbalance
[pon sie 12 11:53:44 2019] [ 1418] 0 1418 4289 313 14 3 39 0 agetty
[pon sie 12 11:53:44 2019] [ 1457] 0 1457 168379 0 65 6 5264 -500 docker-containe
[pon sie 12 11:53:44 2019] [ 2193] 0 2193 10705 145 14 5 154 -500 docker-proxy
[pon sie 12 11:53:44 2019] [ 2229] 0 2229 66420 186 21 5 660 -500 docker-proxy
[pon sie 12 11:53:44 2019] [ 2264] 0 2264 29138 123 16 5 167 -500 docker-proxy
[pon sie 12 11:53:44 2019] [ 2299] 0 2299 1876 0 8 5 347 -999 docker-containe
[pon sie 12 11:53:44 2019] [ 2391] 100 2391 396 0 7 3 29 0 entrypoint.sh
[pon sie 12 11:53:44 2019] [ 2638] 100 2638 12125 0 30 3 7058 0 tor
[pon sie 12 11:53:44 2019] [30130] 0 30130 7160 153 20 3 89 0 systemd-logind
[pon sie 12 11:53:44 2019] [30475] 0 30475 10959 278 23 3 1630 0 systemd-journal
[pon sie 12 11:53:44 2019] [31698] 1001 31698 11319 336 25 3 216 0 systemd
[pon sie 12 11:53:44 2019] [31701] 1001 31701 53717 0 39 3 1509 0 (sd-pam)
[pon sie 12 11:53:44 2019] [31955] 100 31955 24023 294 17 3 72 0 systemd-timesyn
[pon sie 12 11:53:44 2019] [31981] 0 31981 23731 413 49 4 236 0 sshd
[pon sie 12 11:53:44 2019] [32013] 1001 32013 23731 266 48 4 259 0 sshd
[pon sie 12 11:53:44 2019] [32014] 1001 32014 6235 500 17 3 599 0 bash
[pon sie 12 11:53:44 2019] [32194] 0 32194 23731 419 49 3 236 0 sshd
[pon sie 12 11:53:44 2019] [32287] 1001 32287 23788 197 48 3 244 0 sshd
[pon sie 12 11:53:44 2019] [32288] 1001 32288 6229 420 17 3 659 0 bash
[pon sie 12 11:53:44 2019] [32738] 1001 32738 11646105 3547862 9767 28 454793 0 training.py
[pon sie 12 11:53:44 2019] [32754] 0 32754 4286 267 14 3 45 0 nvidia-persiste
[pon sie 12 11:53:44 2019] [ 343] 0 343 23731 437 51 3 236 0 sshd
[pon sie 12 11:53:44 2019] [ 445] 1001 445 23731 101 49 3 206 0 sshd
[pon sie 12 11:53:44 2019] [ 451] 1001 451 6188 480 17 3 514 0 bash
[pon sie 12 11:53:44 2019] [ 473] 1001 473 6847 408 18 3 2 0 htop
[pon sie 12 11:53:44 2019] Out of memory: Kill process 32738 (training.py) score 486 or sacrifice child
[pon sie 12 11:53:44 2019] Killed process 32738 (training.py) total-vm:46584420kB, anon-rss:11534960kB, file-rss:2656488kB
为什么剩余的 SWAP 没有被使用?
答案1
如果 Linux OOM 杀手真的耗尽了内存,它仍然会发怒。RAM 中需要有某个地方来放置页表。交换空间也慢得多,可能无法足够快地换页以跟上高分配率。
从最后一行来看,training.py 使用了大约 14 GB 的 RSS。这本身就会对 16 GB 的主机造成内存压力,还不包括运行操作系统所需的开销。
此外,在 Mem-Info 部分,文件是低三位数。您的文件缓存这么低(相对于 anon 和 shmem)表明所有易用页面都已回收。
需要更多 RAM。