Hello, Kirill.
On Tue, Dec 05, 2017 at 01:49:42AM +0300, Kirill Tkhai wrote:
quoted
If the only reason is kernel memory consumption protection, the only
thing we need to do is making sure that memory used for aio commands
are accounted against cgroup kernel memory consumption and
relaxing/removing system wide limit.
So, we just use GFP_KERNEL_ACCOUNT flag for allocation of internal aio
structures and pages, and all the memory will be accounted in kmem and
limited by memcg. Looks very good.
Yeah.
One detail about memory consumption. io_submit() calls primitives
file_operations::write_iter and read_iter. It's not clear for me whether
they consume the same memory as if writev() or readv() system calls
would be used instead. writev() may delay the actual write till dirty
pages limit will be reached, so it seems logic of the accounting should
be the same. So aio mustn't use more not accounted system memory in file
system internals, then simple writev().
Could you please to say if you have thoughts about this?
I'm not too familiar with vfs / filesystems but I don't think there's
gonna be significant unaccounted memory consumption. It shouldn't be
too difficult to find out with experiments too.
Thanks.
--
tejun