All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Jens Axboe <axboe@kernel.dk>
Cc: Christoph Hellwig <hch@infradead.org>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, hannes@cmpxchg.org, clm@fb.com, jack@suse.cz
Subject: Re: [PATCH 7/7] fs-writeback: only allow one inflight and pending full flush
Date: Mon, 25 Sep 2017 11:35:32 +0200	[thread overview]
Message-ID: <20170925093532.GC5741@quack2.suse.cz> (raw)
In-Reply-To: <3682c4c2-6e8a-e883-9f62-455ea2944496@kernel.dk>

On Thu 21-09-17 10:00:25, Jens Axboe wrote:
> On 09/21/2017 09:36 AM, Jens Axboe wrote:
> >> But more importantly once we are not guaranteed that we only have
> >> a single global wb_writeback_work per bdi_writeback we should just
> >> embedd that into struct bdi_writeback instead of dynamically
> >> allocating it.
> >
> > We could do this as a followup. But right now the logic is that we
> > can have on started (inflight), and still have one new queued.
> 
> Something like the below would fit on top to do that. Gets rid of the
> allocation and embeds the work item for global start-all in the
> bdi_writeback structure.

Hum, so when we consider stuff like embedded work item, I would somewhat
prefer to handle this like we do for for_background and for_kupdate style
writeback so that we don't have another special case. For these don't queue
any item, we just queue writeback work into the workqueue (via
wb_wakeup()). When flusher work gets processed wb_do_writeback() checks
(after processing all normal writeback requests) whether conditions for
these special writeback styles are met and if yes, it creates on-stack work
item and processes it (see wb_check_old_data_flush() and
wb_check_background_flush()).

So in this case we would just set some flag in bdi_writeback when memory
reclaim needs help and wb_do_writeback() would check for this flag and
create and process writeback-all style writeback work. Granted this does
not preserve ordering of requests (basically any specific request gets
priority over writeback-whole-world request) but memory gets cleaned in
either case so flusher should be doing what is needed.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Jens Axboe <axboe@kernel.dk>
Cc: Christoph Hellwig <hch@infradead.org>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, hannes@cmpxchg.org, clm@fb.com, jack@suse.cz
Subject: Re: [PATCH 7/7] fs-writeback: only allow one inflight and pending full flush
Date: Mon, 25 Sep 2017 11:35:32 +0200	[thread overview]
Message-ID: <20170925093532.GC5741@quack2.suse.cz> (raw)
In-Reply-To: <3682c4c2-6e8a-e883-9f62-455ea2944496@kernel.dk>

On Thu 21-09-17 10:00:25, Jens Axboe wrote:
> On 09/21/2017 09:36 AM, Jens Axboe wrote:
> >> But more importantly once we are not guaranteed that we only have
> >> a single global wb_writeback_work per bdi_writeback we should just
> >> embedd that into struct bdi_writeback instead of dynamically
> >> allocating it.
> >
> > We could do this as a followup. But right now the logic is that we
> > can have on started (inflight), and still have one new queued.
> 
> Something like the below would fit on top to do that. Gets rid of the
> allocation and embeds the work item for global start-all in the
> bdi_writeback structure.

Hum, so when we consider stuff like embedded work item, I would somewhat
prefer to handle this like we do for for_background and for_kupdate style
writeback so that we don't have another special case. For these don't queue
any item, we just queue writeback work into the workqueue (via
wb_wakeup()). When flusher work gets processed wb_do_writeback() checks
(after processing all normal writeback requests) whether conditions for
these special writeback styles are met and if yes, it creates on-stack work
item and processes it (see wb_check_old_data_flush() and
wb_check_background_flush()).

So in this case we would just set some flag in bdi_writeback when memory
reclaim needs help and wb_do_writeback() would check for this flag and
create and process writeback-all style writeback work. Granted this does
not preserve ordering of requests (basically any specific request gets
priority over writeback-whole-world request) but memory gets cleaned in
either case so flusher should be doing what is needed.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2017-09-25  9:35 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-20 15:32 [PATCH 0/7 v2] More graceful flusher thread memory reclaim wakeup Jens Axboe
2017-09-20 15:32 ` Jens Axboe
2017-09-20 15:32 ` [PATCH 1/7] buffer: cleanup free_more_memory() flusher wakeup Jens Axboe
2017-09-20 15:32   ` Jens Axboe
2017-09-21 14:55   ` Christoph Hellwig
2017-09-21 14:55     ` Christoph Hellwig
2017-09-20 15:32 ` [PATCH 2/7] fs: kill 'nr_pages' argument from wakeup_flusher_threads() Jens Axboe
2017-09-20 15:32   ` Jens Axboe
2017-09-21 14:55   ` Christoph Hellwig
2017-09-21 14:55     ` Christoph Hellwig
2017-09-22 13:12   ` Jan Kara
2017-09-22 13:12     ` Jan Kara
2017-09-20 15:32 ` [PATCH 3/7] fs-writeback: provide a wakeup_flusher_threads_bdi() Jens Axboe
2017-09-20 15:32   ` Jens Axboe
2017-09-21 14:56   ` Christoph Hellwig
2017-09-21 14:56     ` Christoph Hellwig
2017-09-20 15:32 ` [PATCH 4/7] page-writeback: pass in '0' for nr_pages writeback in laptop mode Jens Axboe
2017-09-20 15:32   ` Jens Axboe
2017-09-21 14:59   ` Christoph Hellwig
2017-09-21 14:59     ` Christoph Hellwig
2017-09-25 14:57     ` Jens Axboe
2017-09-25 14:57       ` Jens Axboe
2017-09-21 15:00   ` Christoph Hellwig
2017-09-21 15:00     ` Christoph Hellwig
2017-09-22 13:14   ` Jan Kara
2017-09-22 13:14     ` Jan Kara
2017-09-20 15:33 ` [PATCH 5/7] fs-writeback: make wb_start_writeback() static Jens Axboe
2017-09-20 15:33   ` Jens Axboe
2017-09-21 15:01   ` Christoph Hellwig
2017-09-21 15:01     ` Christoph Hellwig
2017-09-20 15:33 ` [PATCH 6/7] fs-writeback: move nr_pages == 0 logic to one location Jens Axboe
2017-09-20 15:33   ` Jens Axboe
2017-09-21 15:02   ` Christoph Hellwig
2017-09-21 15:02     ` Christoph Hellwig
2017-09-22 13:17   ` Jan Kara
2017-09-22 13:17     ` Jan Kara
2017-09-20 15:33 ` [PATCH 7/7] fs-writeback: only allow one inflight and pending full flush Jens Axboe
2017-09-20 15:33   ` Jens Axboe
2017-09-21 15:05   ` Christoph Hellwig
2017-09-21 15:05     ` Christoph Hellwig
2017-09-21 15:36     ` Jens Axboe
2017-09-21 15:36       ` Jens Axboe
2017-09-21 16:00       ` Jens Axboe
2017-09-21 16:00         ` Jens Axboe
2017-09-21 17:33         ` Christoph Hellwig
2017-09-21 17:33           ` Christoph Hellwig
2017-09-25  9:35         ` Jan Kara [this message]
2017-09-25  9:35           ` Jan Kara
2017-09-25 14:48           ` Jens Axboe
2017-09-25 14:48             ` Jens Axboe
2017-09-28 18:09           ` Jens Axboe
2017-09-28 18:09             ` Jens Axboe
2017-09-29 23:20             ` Jens Axboe
2017-09-29 23:20               ` Jens Axboe
2017-10-02 14:53             ` Jan Kara
2017-10-02 14:53               ` Jan Kara

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=20170925093532.GC5741@quack2.suse.cz \
    --to=jack@suse.cz \
    --cc=axboe@kernel.dk \
    --cc=clm@fb.com \
    --cc=hannes@cmpxchg.org \
    --cc=hch@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.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.