Messages in this thread | | | Date | Wed, 1 Jul 2015 21:26:51 -0400 | From | Tejun Heo <> | Subject | Re: [PATCH 26/51] writeback: let balance_dirty_pages() work on the matching cgroup bdi_writeback |
| |
Hello, Jan.
On Tue, Jun 30, 2015 at 04:31:00PM +0200, Jan Kara wrote: ... > > + if (inode_cgwb_enabled(inode)) > > + wb = wb_get_create_current(bdi, GFP_KERNEL); > > + if (!wb) > > + wb = &bdi->wb; > > + > > So this effectively adds a radix tree lookup (of wb belonging to memcg) for > every set_page_dirty() call. That seems relatively costly to me. And all
Hmmm... idk, radix tree lookups should be cheap especially when shallow and set_page_dirty(). It's a glorified array indexing. If not, we should really be improving radix tree implementation. That said,
> that just to check wb->dirty_exceeded. Cannot we just use inode_to_wb() > instead? I understand results may be different if multiple memcgs share an > inode and that's the reason why you use wb_get_create_current(), right? > But for dirty_exceeded check it may be good enough?
Yeah, that probably should work. I'll think more about it.
Thanks.
-- tejun
| |