mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Nikita Danilov <Nikita@Namesys.COM>
To: Andrew Morton <akpm@osdl.org>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
	sgoel01@yahoo.com, linux-kernel@vger.kernel.org
Subject: Re: [VM PATCH 2.6.6-rc3-bk5] Dirty balancing in the presence of mapped pages
Date: Wed, 5 May 2004 20:56:49 +0400	[thread overview]
Message-ID: <16537.7377.317729.849584@laputa.namesys.com> (raw)
In-Reply-To: <20040504195753.0a9e4a54.akpm@osdl.org>

Andrew Morton writes:
 > Nick Piggin <nickpiggin@yahoo.com.au> wrote:
 > >
 > > Andrew Morton wrote:
 > > > Shantanu Goel <sgoel01@yahoo.com> wrote:
 > > > 
 > > >>Presently the kernel does not collection information
 > > >>about the percentage of memory that processes have
 > > >>dirtied via mmap until reclamation.  Nothing analogous
 > > >>to balance_dirty_pages() is being done for mmap'ed
 > > >>pages.  The attached patch adds collection of dirty
 > > >>page information during kswapd() scans and initiation
 > > >>of background writeback by waking up bdflush.
 > > > 
 > > > 
 > > > And what were the effects of this patch?
 > > > 
 > > 
 > > I havea modified patch from Nikita that does the
 > > if (ptep_test_and_clear_dirty) set_page_dirty from
 > > page_referenced, under the page_table_lock.
 > 
 > Dude.  I have lots of patches too.  The question is: what use are they?

Learning patch-scripts? :)

 > 
 > In this case, given that we have an actively mapped MAP_SHARED pagecache
 > page, marking it dirty will cause it to be written by pdflush.  Even though
 > we're not about to reclaim it, and even though the process which is mapping
 > the page may well modify it again.  This patch will cause additional I/O.

Dirty bit is transferred to the struct page when page is moved to the
inactive list, where pages are not supposedly referenced/dirtied
frequently. Besides, additional IO, if any, will be done through
->writepages() which is much more efficient than single-page pageout
from tail of the inactive list.

 > 
 > So we need to understand why it was written, and what effects were
 > observed, with what workload, and all that good stuff.

Another possible scenario where early transfer of dirty bit could be
useful: huge file consisting of single hole is mmapped, and user level
starts dirtying all pages. Current VM thinks happily that all memory is
clean, ->writepages() is not invoked. VM scanning starts, shrink_list()
dirties page-at-a-time
(shrink_list()->try_to_unmap()->set_page_dirty()), and calls
->writepage() that has to insert meta-data for the hole page (extent,
indirect pointer, whatever), and to submit IO. As order of pages at the
inactive list corresponds to the order of page faults (i.e., random),
this will result in the horrible fragmentation.

Nikita.

      parent reply	other threads:[~2004-05-05 16:56 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-05  0:20 Shantanu Goel
2004-05-05  1:03 ` Andrew Morton
2004-05-05  2:16   ` Nick Piggin
2004-05-05  2:57     ` Andrew Morton
2004-05-05  3:16       ` Nick Piggin
2004-05-05  3:24         ` Nick Piggin
2004-05-09 17:24         ` Bill Davidsen
2004-05-05  4:31       ` Shantanu Goel
2004-05-05  5:25         ` Andrew Morton
2004-05-05 16:56       ` Nikita Danilov [this message]

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=16537.7377.317729.849584@laputa.namesys.com \
    --to=nikita@namesys.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=sgoel01@yahoo.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®