On Wed 27-01-21 11:53:55, Christian König wrote: [...] > In general processes are currently not held accountable for memory they > reference through their file descriptors. DMA-buf is just one special case. True > In other words you can currently do something like this > > fd = memfd_create("test", 0); > while (1) > write(fd, buf, 1024); > > and the OOM killer will terminate random processes, but never the one > holding the memfd reference. memfd is just shmem under cover, no? And that means that the memory gets accounted to MM_SHMEMPAGES. But you are right that this in its own doesn't help much if the fd is shared and the memory stays behind a killed victim. But I do agree with you that there are resources which are bound to a process life time but the oom killer has no idea about those as they are not accounted on a per process level and/or oom_badness doesn't take them into consideration. -- Michal Hocko SUSE Labs