From: Theodore Ts'o <tytso@mit.edu>
To: Dave Hansen <dave.hansen@intel.com>,
linux-ext4@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
Jan kara <jack@suse.cz>
Subject: Re: ext4 extent status tree LRU locking
Date: Fri, 14 Jun 2013 14:00:54 -0400 [thread overview]
Message-ID: <20130614180054.GB1017@thunk.org> (raw)
In-Reply-To: <20130614170028.GA21544@gmail.com>
On Sat, Jun 15, 2013 at 01:00:28AM +0800, Zheng Liu wrote:
> > I have a suggestion for how to address this: Keep a timestamp of when
> > the list last has been sorted in struct ext4_super_info. When
> > iterating over the list, looking for a candidate inode, if inode's
> > i_touch_when is greater than the last time sorted, skip the inode. If
> > there are no inodes left in the list, or more than some threshold
> > inodes have been skipped, only then resort the list (and update the
> > timestamp in the ext4_super_info structure).
> >
>
> Thanks for your suggestion. I fully agree with you. What I concern is
> how to define this threshold. A fixed value is very simple but too
> inflexible. If this value is too big, this lru list could never be
> sorted.
In my proposal, if the list is never sorted before, we would
definitely sort the list the first time there is a request to shrink
the number of extent caches. So the list would always be sorted at
least once.
If an inode gets accessed after the time when the list has been
sorted, then the last_touch time will be greater than the last_sorted
time, right? And our goal is to use the least recently used inode, so
as long as we know they have been used more recently than the time the
list was sorted, and there are still inodes on the list where the
last_touch time is older than the last_sort time, we don't have a
problem. So we will evict all of the non-delalloc extent cache items
from that inode, and remove it from the list.
The original reason for having the threshold at all is so that if we
skip a huge number of inodes on the list, this would take a long time.
But thinking about this some more, we don't even need a threshold.
What we do instead is if the the last_touch time is newer than the
last_sort time, we just move the inode to the end of the list. That
means the end of the list will be unsorted, but that's OK, because the
oldest inodes are still at the beginning of the list. Once the head
of the list is newer than the last_sorted time, then we know we need
to resort the entire list.
Does that make sense to you?
- Ted
next prev parent reply other threads:[~2013-06-14 18:00 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-11 23:22 ext4 extent status tree LRU locking Dave Hansen
2013-06-12 7:17 ` Zheng Liu
2013-06-12 15:09 ` Dave Hansen
2013-06-12 16:03 ` Zheng Liu
2013-06-12 17:52 ` Dave Hansen
2013-06-12 20:48 ` Theodore Ts'o
2013-06-13 13:27 ` Zheng Liu
2013-06-13 13:35 ` Theodore Ts'o
2013-06-14 3:27 ` Zheng Liu
2013-06-14 14:09 ` Zheng Liu
2013-06-14 14:02 ` Theodore Ts'o
2013-06-14 17:00 ` Zheng Liu
2013-06-14 18:00 ` Theodore Ts'o [this message]
2013-06-17 10:10 ` Zheng Liu
2013-06-17 21:12 ` Dave Hansen
2013-06-18 2:25 ` Zheng Liu
2013-06-18 2:51 ` Theodore Ts'o
2013-06-18 3:49 ` Zheng Liu
2013-06-18 2:47 ` Theodore Ts'o
2013-06-14 15:57 ` Dave Hansen
2013-06-14 17:11 ` Zheng Liu
2013-06-14 16:55 ` Dave Hansen
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=20130614180054.GB1017@thunk.org \
--to=tytso@mit.edu \
--cc=dave.hansen@intel.com \
--cc=jack@suse.cz \
--cc=linux-ext4@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.