Re: [PATCH 5/5] writeback, memcg: Implement foreign dirty flushing

2019-08-27 Thread Jan Kara
On Mon 26-08-19 09:06:56, Tejun Heo wrote: > There's an inherent mismatch between memcg and writeback. The former > trackes ownership per-page while the latter per-inode. This was a > deliberate design decision because honoring per-page ownership in the > writeback path is complicated, may lead t

[PATCH 5/5] writeback, memcg: Implement foreign dirty flushing

2019-08-26 Thread Tejun Heo
There's an inherent mismatch between memcg and writeback. The former trackes ownership per-page while the latter per-inode. This was a deliberate design decision because honoring per-page ownership in the writeback path is complicated, may lead to higher CPU and IO overheads and deemed unnecessar

Re: [PATCH 5/5] writeback, memcg: Implement foreign dirty flushing

2019-08-21 Thread Tejun Heo
On Wed, Aug 21, 2019 at 09:00:37AM -0700, Tejun Heo wrote: > > 2) When you invalidate frn entry here by writing 0 to 'at', it's likely to > > get > > reused soon. Possibly while the writeback is still running. And then you > > won't start any writeback for the new entry because of the > > atomic_r

Re: [PATCH 5/5] writeback, memcg: Implement foreign dirty flushing

2019-08-21 Thread Tejun Heo
Hello, On Fri, Aug 16, 2019 at 06:02:56PM +0200, Jan Kara wrote: > 1) You ask to writeback LONG_MAX pages. That means that you give up any > livelock avoidance for the flusher work and you can writeback almost > forever if someone is busily dirtying pages in the wb. I think you need to > pick some

Re: [PATCH 5/5] writeback, memcg: Implement foreign dirty flushing

2019-08-16 Thread Jan Kara
On Thu 15-08-19 12:59:30, Tejun Heo wrote: > +/* issue foreign writeback flushes for recorded foreign dirtying events */ > +void mem_cgroup_flush_foreign(struct bdi_writeback *wb) > +{ > + struct mem_cgroup *memcg = mem_cgroup_from_css(wb->memcg_css); > + unsigned long intv = msecs_to_jiffi

[PATCH 5/5] writeback, memcg: Implement foreign dirty flushing

2019-08-15 Thread Tejun Heo
There's an inherent mismatch between memcg and writeback. The former trackes ownership per-page while the latter per-inode. This was a deliberate design decision because honoring per-page ownership in the writeback path is complicated, may lead to higher CPU and IO overheads and deemed unnecessar