From: Wu Fengguang <fengguang.wu@intel.com>
To: Jan Kara <jack@suse.cz>
Cc: "linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Christoph Hellwig <hch@lst.de>,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 3/5] writeback: fix dirtied pages accounting on sub-page writes
Date: Tue, 22 Nov 2011 21:02:31 +0800 [thread overview]
Message-ID: <20111122130231.GA18638@localhost> (raw)
In-Reply-To: <20111122124811.GD8058@quack.suse.cz>
On Tue, Nov 22, 2011 at 08:48:11PM +0800, Jan Kara wrote:
> On Tue 22-11-11 20:30:01, Wu Fengguang wrote:
> > > > @@ -1743,6 +1738,8 @@ void account_page_dirtied(struct page *p
> > > > __inc_bdi_stat(mapping->backing_dev_info, BDI_DIRTIED);
> > > > task_dirty_inc(current);
> > > > task_io_account_write(PAGE_CACHE_SIZE);
> > > > + current->nr_dirtied++;
> > > > + __get_cpu_var(bdp_ratelimits)++;
> > > I think you need preempt_disable() and preempt_enable() pair around
> > > __get_cpu_var(). Otherwise a process could get rescheduled in the middle of
> > > read-modify-write cycle...
> >
> > Hmm, I'm not worried about it at all, because bdp_ratelimits don't
> > need to be accurate. In normal cases it won't even trigger one single
> > call to balance_dirty_pages().
> I agree regarding the accuracy. But the CPU can change when the process
> is scheduled again. So you could modify counter of a CPU you are not
> running on. And that can cause bad things...
Will modifying another CPU's per-cpu data lead to more serious
problems than inaccuracy? If not, it would be fine. bdp_ratelimits is
only meant to be a coarse grained safeguard after all :-)
> > btw, account_page_dirtied() is called inside spinlock, will it be
> > sufficient?
> Currently it is not enough in real-time kernels and when sleeping
> spinlocks work gets merged it won't be enough even in standard kernels...
> And in kernels where spinlock means preemption is disabled
> preempt_enable/disable will be almost for free...
I see, spinlock won't be a general superset of preempt_enable/disable
indeed.
Thanks,
Fengguang
next prev parent reply other threads:[~2011-11-22 13:02 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-21 13:03 [PATCH 0/5] dirty throttling bits for 3.3 Wu Fengguang
2011-11-21 13:03 ` [PATCH 1/5] writeback: balanced_rate cannot exceed write bandwidth Wu Fengguang
2011-11-21 22:50 ` Jan Kara
2011-11-22 6:41 ` Wu Fengguang
2011-11-22 21:04 ` Jan Kara
2011-11-23 13:17 ` Wu Fengguang
2011-11-21 13:03 ` [PATCH 2/5] writeback: charge leaked page dirties to active tasks Wu Fengguang
2011-11-21 21:49 ` Andrew Morton
2011-11-21 23:46 ` Jan Kara
2011-11-22 13:35 ` Wu Fengguang
2011-11-21 13:03 ` [PATCH 3/5] writeback: fix dirtied pages accounting on sub-page writes Wu Fengguang
2011-11-22 0:11 ` Jan Kara
2011-11-22 9:21 ` Wu Fengguang
2011-11-22 12:21 ` Jan Kara
2011-11-22 12:30 ` Wu Fengguang
2011-11-22 12:48 ` Jan Kara
2011-11-22 13:02 ` Wu Fengguang [this message]
2011-11-22 12:57 ` Peter Zijlstra
2011-11-22 13:07 ` Wu Fengguang
2011-11-22 13:41 ` Wu Fengguang
2011-11-22 13:53 ` Peter Zijlstra
2011-11-22 14:11 ` Wu Fengguang
2011-11-28 13:51 ` Wu Fengguang
2011-11-21 13:03 ` [PATCH 4/5] writeback: fix dirtied pages accounting on redirty Wu Fengguang
2011-11-21 21:51 ` Andrew Morton
2011-11-22 13:59 ` Wu Fengguang
2011-11-21 13:03 ` [PATCH 5/5] writeback: dirty ratelimit - think time compensation Wu Fengguang
2011-11-23 12:44 ` [PATCH 0/5] dirty throttling bits for 3.3 Peter Zijlstra
2011-11-28 13:56 ` Wu Fengguang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111122130231.GA18638@localhost \
--to=fengguang.wu@intel.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.