[Intel-gfx] [i-g-t] dumb_buffer at clear_create triggers OOM since 0b0eaa353
Li Zhijian
zhijianx.li at intel.com
Sun Apr 26 03:04:43 UTC 2020
On 4/23/20 5:38 PM, Li Zhijian wrote:
> Hi guys
>
> 0Day noticed that dumb_buffer at clear_create triggers OOM since commit:
> 0b0eaa353 ("tests/dumb_buffer: Try to compute the largest possible
> dumb buffer")
>
> our platform is
> - CPU: Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
> - memory: 48G
> - kernel: v5.5, v5.6, v5.7-rc2
i tried 2 other platforms
- i7-3770K + 16G
- AMD Opteron(TM) Processor 6276 + 128G
dumb_buffer at clear_create works well on both of them.
i have no enough knowledge in IGT and Kernel Graphic Driver, so if you
want to more debug info, please let me know.
Thanks
>
>
> i tried to add some debug into the code as following
> diff --git a/tests/dumb_buffer.c b/tests/dumb_buffer.c
> index c1e7b4d3..22611f95 100644
> --- a/tests/dumb_buffer.c
> +++ b/tests/dumb_buffer.c
> @@ -58,11 +58,13 @@ static int __dumb_create(int fd, struct
> drm_mode_create_dumb *create)
> {
> int err = 0;
>
> + igt_info("start __dumb_create %ld\n", create->size);
> if (igt_ioctl(fd, DRM_IOCTL_MODE_CREATE_DUMB, create)) {
> err = -errno;
> igt_assume(err);
> }
>
> + igt_info("end __dumb_create %ld, err %d\n", create->size, err);
> errno = 0;
> return err;
> }
> @@ -80,10 +82,12 @@ static void *__dumb_map(int fd, uint32_t handle,
> uint64_t size, unsigned prot)
> if (igt_ioctl(fd, DRM_IOCTL_MODE_MAP_DUMB, &arg))
> return NULL;
>
> + igt_info("size %ld, offset %x\n", size, arg.offset);
> ptr = mmap(NULL, size, prot, MAP_SHARED, fd, arg.offset);
> if (ptr == MAP_FAILED)
> return NULL;
>
> + igt_info("mmap success, size %ld, offset %x\n", size,
> arg.offset);
> return ptr;
> }
>
> @@ -356,6 +360,7 @@ static uint64_t estimate_largest_dumb_buffer(int fd)
> return largest / PAGE_SIZE;
> }
>
> + sleep(1);
> for (create.height = 1; create.height; create.height *= 2) {
> if (__dumb_create(fd, &create))
> longjmp(sigjmp, SIGABRT);
> @@ -368,7 +373,9 @@ static uint64_t estimate_largest_dumb_buffer(int fd)
> if (!*ptr)
> largest = create.size;
>
> + igt_info("mmap %ld\n", create.size);
> munmap(ptr, create.size);
> + igt_info("unmmap %ld\n", create.size);
> ptr = NULL;
> }
>
>
> then get below outputs:
>
> Subtest map-invalid-size: SUCCESS (0.000s)
> Starting subtest: create-clear
> start __dumb_create 0
> end __dumb_create 4194304, err 0
> size 4194304, offset 1a48000
> mmap success, size 4194304, offset 1a48000
> mmap 4194304
> unmmap 4194304
> start __dumb_create 4194304
> end __dumb_create 8388608, err 0
> size 8388608, offset 1a48000
> mmap success, size 8388608, offset 1a48000
> mmap 8388608
> unmmap 8388608
> start __dumb_create 8388608
> end __dumb_create 16777216, err 0
> size 16777216, offset 1a48000
> mmap success, size 16777216, offset 1a48000
> mmap 16777216
> unmmap 16777216
> start __dumb_create 16777216
> end __dumb_create 33554432, err 0
> size 33554432, offset 1a48000
> mmap success, size 33554432, offset 1a48000
> mmap 33554432
> unmmap 33554432
> start __dumb_create 33554432
> end __dumb_create 67108864, err 0
> size 67108864, offset 1a48000
> mmap success, size 67108864, offset 1a48000
> mmap 67108864
> unmmap 67108864
> start __dumb_create 67108864
> end __dumb_create 134217728, err 0
> size 134217728, offset 1a48000
> mmap success, size 134217728, offset 1a48000
> mmap 134217728
> unmmap 134217728
> start __dumb_create 134217728
> end __dumb_create 268435456, err 0
> size 268435456, offset 1a48000
> mmap success, size 268435456, offset 1a48000
> mmap 268435456
> unmmap 268435456
> start __dumb_create 268435456
> end __dumb_create 536870912, err 0
> size 536870912, offset 1a48000
> mmap success, size 536870912, offset 1a48000
> mmap 536870912
> unmmap 536870912
> start __dumb_create 536870912
> end __dumb_create 1073741824, err 0
> size 1073741824, offset 1a48000
> mmap success, size 1073741824, offset 1a48000
> mmap 1073741824
> unmmap 1073741824
> start __dumb_create 1073741824
> end __dumb_create 2147483648, err 0
> size 2147483648, offset 1a48000
> mmap success, size 2147483648, offset 1a48000
> Killed
>
>
> attached the dmesg as well[10703.523385] dumb_buffer invoked
> oom-killer: gfp_mask=0x0(), order=0, oom_score_adj=1000
> [10703.531385] CPU: 0 PID: 7166 Comm: dumb_buffer Not tainted
> 5.6.0-00335-g7111951b8d497 #1
> [10703.539466] Hardware name: Supermicro
> SYS-5018D-FN4T/X10SDV-8C-TLN4F, BIOS 1.1 03/02/2016
> [10703.547630] Call Trace:
> [10703.550080] dump_stack+0x66/0x8b
> [10703.553398] dump_header+0x4a/0x220
> [10703.556889] oom_kill_process+0xf6/0x150
> [10703.560805] out_of_memory+0x105/0x540
> [10703.564548] pagefault_out_of_memory+0x64/0x80
> [10703.568987] page_fault+0x3e/0x50
> [10703.572296] RIP: 0033:0x556f7b09257a
> [10703.575867] Code: e8 2b fe ff ff 8b 74 24 40 44 89 f7 48 89 44 24
> 28 e8 ea fb ff ff 48 8b 44 24 28 48 85 c0 74 7d 48 8b 44 24 28 48 8b
> 4c 24 48 <80> 38 00 75 05 48 89 4c 24 20 48 8d 15 71 0b 00 00 31 ff 31
> c0 be
> [10703.594613] RSP: 002b:00007fff025dc330 EFLAGS: 00010206
> [10703.599829] RAX: 00007fd2e42cf000 RBX: 00007fff025dc360 RCX:
> 0000000080000000
> [10703.606955] RDX: 00007fff025dc31c RSI: 00000000c00464b4 RDI:
> 0000000000000003
> [10703.614078] RBP: 00007fff025dc4e0 R08: 0000556f7b3b8014 R09:
> 0000000000000001
> [10703.621201] R10: 0000556f7b3e2530 R11: 0000000000000246 R12:
> 0000556f7b091f60
> [10703.628324] R13: 00007fff025dc5f0 R14: 0000000000000003 R15:
> 0000000000000000
> [10703.635457] Mem-Info:
> [10703.637734] active_anon:64644 inactive_anon:13676 isolated_anon:0
> active_file:189 inactive_file:80 isolated_file:0
> unevictable:567302 dirty:0 writeback:0 unstable:0
> slab_reclaimable:17803 slab_unreclaimable:19262
> mapped:6355 shmem:14081 pagetables:614 bounce:0
> free:11608206 free_pcp:7728 free_cma:51062
> [10703.671836] Node 0 active_anon:258576kB inactive_anon:54704kB
> active_file:756kB inactive_file:320kB unevictable:2269208kB
> isolated(anon):0kB isolated(file):0kB mapped:25420kB dirty:0kB
> writeback:0kB shmem:56324kB shmem_thp: 0kB shmem_pmdmapped: 0kB
> anon_thp: 235520kB writeback_tmp:0kB unstable:0kB all_unreclaimable? yes
> [10703.700131] Node 0 DMA free:15888kB min:20kB low:32kB high:44kB
> reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB
> active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB
> present:15972kB managed:15888kB mlocked:0kB kernel_stack:0kB
> pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [10703.727907] lowmem_reserve[]: 0 1865 47608 47608 47608
> [10703.733056] Node 0 DMA32 free:1898672kB min:2636kB low:4544kB
> high:6452kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB
> active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB
> present:1975952kB managed:1910416kB mlocked:0kB kernel_stack:0kB
> pagetables:0kB bounce:0kB free_pcp:11596kB local_pcp:1384kB free_cma:0kB
> [10703.762653] lowmem_reserve[]: 0 0 45742 45742 45742
> [10703.767534] Node 0 Normal free:44518264kB min:64924kB low:111968kB
> high:159012kB reserved_highatomic:0KB active_anon:258576kB
> inactive_anon:54704kB active_file:756kB inactive_file:320kB
> unevictable:2269208kB writepending:0kB present:48234496kB
> managed:47316716kB mlocked:2208kB kernel_stack:3584kB
> pagetables:2456kB bounce:0kB free_pcp:19312kB local_pcp:1388kB
> free_cma:204248kB
> [10703.800750] lowmem_reserve[]: 0 0 0 0 0
> [10703.804598] Node 0 DMA: 0*4kB 0*8kB 1*16kB (U) 0*32kB 2*64kB (U)
> 1*128kB (U) 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB
> (UM) = 15888kB
> [10703.817726] Node 0 DMA32: 28*4kB (UM) 9*8kB (UM) 19*16kB (UM)
> 12*32kB (UM) 11*64kB (UM) 10*128kB (UM) 22*256kB (UM) 22*512kB (UM)
> 11*1024kB (U) 2*2048kB (U) 455*4096kB (U) = 1898792kB
> [10703.834063] Node 0 Normal: 697*4kB (UMEC) 893*8kB (UME) 239*16kB
> (UME) 208*32kB (UMEC) 59*64kB (UME) 58*128kB (UME) 139*256kB (UMEC)
> 86*512kB (UME) 40*1024kB (UMC) 7*2048kB (UC) 10828*4096kB (UMC) =
> 44518012kB
> [10703.852656] Node 0 hugepages_total=0 hugepages_free=0
> hugepages_surp=0 hugepages_size=1048576kB
> [10703.861361] Node 0 hugepages_total=0 hugepages_free=0
> hugepages_surp=0 hugepages_size=2048kB
> [10703.869807] 581564 total pagecache pages
> [10703.873740] 0 pages in swap cache
> [10703.877069] Swap cache stats: add 0, delete 0, find 0/0
> [10703.882302] Free swap = 0kB
> [10703.885198] Total swap = 0kB
> [10703.888093] 12556605 pages RAM
> [10703.891161] 0 pages HighMem/MovableOnly
> [10703.895008] 245850 pages reserved
> [10703.898337] 51200 pages cma reserved
> [10703.901923] 0 pages hwpoisoned
> [10703.904994] Tasks state (memory values in pages):
> [10703.909720] [ pid ] uid tgid total_vm rss pgtables_bytes
> swapents oom_score_adj name
> [10703.918358] [ 354] 100 354 31823 1063 151552
> 0 0 systemd-timesyn
> [10703.927405] [ 358] 0 358 12470 885 143360
> 0 0 rpcbind
> [10703.935750] [ 384] 105 384 11285 969 126976
> 0 -900 dbus-daemon
> [10703.944453] [ 399] 0 399 63585 782 147456
> 0 0 rsyslogd
> [10703.952886] [ 406] 0 406 1074 32 53248
> 0 0 lkp-bootstrap
> [10703.961762] [ 408] 0 408 1107 453 57344
> 0 -1000 lkp-setup-rootf
> [10703.970816] [ 414] 0 414 11621 1190 131072
> 0 0 systemd-logind
> [10703.979776] [ 420] 0 420 17488 1564 172032
> 0 -1000 sshd
> [10703.987873] [ 438] 0 438 1491 174 57344
> 0 -1000 tail
> [10703.995967] [ 440] 0 440 42374 38686 380928
> 0 -1000 sed
> [10704.003976] [ 441] 0 441 1491 177 57344
> 0 -1000 tail
> [10704.012071] [ 442] 0 442 26356 22656 253952
> 0 -1000 sed
> [10704.020077] [ 464] 0 464 3218 431 69632
> 0 0 agetty
> [10704.028362] [ 665] 0 665 1112 452 53248
> 0 -1000 run-lkp
> [10704.036710] [ 690] 106 690 8860 595 114688
> 0 0 rpc.statd
> [10704.045237] [ 757] 0 757 5716 459 86016
> 0 0 bmc-watchdog
> [10704.054027] [ 796] 0 796 1070 380 57344
> 0 -1000 watchdog
> [10704.062480] [ 1436] 0 1436 3470 623 61440
> 0 0 cron
> [10704.070562] [ 4323] 0 4323 7077 825 81920
> 0 -1000 systemd-udevd
> [10704.079426] [ 4997] 0 4997 3872 410 73728
> 0 0 lvmetad
> [10704.087765] [ 7024] 0 7024 18206 1724 176128
> 0 0 sshd
> [10704.095857] [ 7033] 0 7033 1546 918 49152
> 0 0 bash
> [10704.103953] [ 7165] 0 7165 1015 197 49152
> 0 -1000 sleep
> [10704.112135] [ 7166] 0 7166 564400 3494 327680
> 0 1000 dumb_buffer
> [10704.120836]
> oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-0.slice/session-35.scope,task=dumb_buffer,pid=7166,uid=0
> [10704.137173] Out of memory: Killed process 7166 (dumb_buffer)
> total-vm:2257600kB, anon-rss:3832kB, file-rss:10144kB, shmem-rss:0kB,
> UID:0 pgtables:320kB oom_score_adj:1000
> [10704.153758] oom_reaper: reaped process 7166 (dumb_buffer), now
> anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
>
>
> Thanks
> Zhijian
>
>
More information about the Intel-gfx
mailing list