xfs
[Top] [All Lists]

Re: [PATCH 09/19] list_lru: per-node list infrastructure

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 09/19] list_lru: per-node list infrastructure
From: Glauber Costa <glommer@xxxxxxxxxxxxx>
Date: Fri, 18 Jan 2013 11:10:00 -0800
Cc: <linux-kernel@xxxxxxxxxxxxxxx>, <linux-fsdevel@xxxxxxxxxxxxxxx>, <linux-mm@xxxxxxxxx>, <xfs@xxxxxxxxxxx>, Greg Thelen <gthelen@xxxxxxxxxx>, Ying Han <yinghan@xxxxxxxxxx>, Suleiman Souhlal <suleiman@xxxxxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20130118081133.GQ2498@dastard>
References: <1354058086-27937-1-git-send-email-david@xxxxxxxxxxxxx> <1354058086-27937-10-git-send-email-david@xxxxxxxxxxxxx> <50F6FDC8.5020909@xxxxxxxxxxxxx> <20130116225521.GF2498@dastard> <50F7475F.90609@xxxxxxxxxxxxx> <20130117042245.GG2498@dastard> <50F84118.7030608@xxxxxxxxxxxxx> <20130118001029.GK2498@dastard> <50F893D2.7080103@xxxxxxxxxxxxx> <20130118081133.GQ2498@dastard>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0
On 01/18/2013 12:11 AM, Dave Chinner wrote:
> On Thu, Jan 17, 2013 at 04:14:10PM -0800, Glauber Costa wrote:
>> On 01/17/2013 04:10 PM, Dave Chinner wrote:
>>> And then each object uses:
>>>
>>> struct lru_item {
>>>     struct list_head global_list;
>>>     struct list_head memcg_list;
>>> }
>> by objects you mean dentries, inodes, and the such, right?
> 
> Yup.
> 
>> Would it be acceptable to you?
> 
> If it works the way I think it should, then yes.
> 
>> We've been of course doing our best to avoid increasing the size of the
>> objects, therefore this is something we've never mentioned. However, if
>> it would be acceptable from the fs POV, this would undoubtedly make our
>> life extremely easier.
> 
> I've been trying hard to work out how to avoid increasing the size
> of structures as well. But if we can't work out how to implement
> something sanely with only a single list head per object to work
> from, then increasing the size of objects is something that we need
> to consider if it solves all the problems we are trying to solve.
> 
> i.e. if adding a second list head makes the code dumb, simple,
> obviously correct and hard to break then IMO it's a no-brainer.
> But we have to tick all the right boxes first...
> 

One of our main efforts recently has been trying to reduce memcg impact
when it is not in use, even if its compiled in. So what really bothers
me here is the fact that we are increasing the size of dentries and
inodes no matter what.

Still within the idea of exploring the playing field, would an
indirection be worth it ?
We would increase the total per-object memory usage by 8 bytes instead
of 16: the dentry gets a pointer, and a separate allocation for the
list_lru. When memcg is not being actively used, we can allocate a
smaller list_lru, with only the global list. When it is, we allocate the
whole thing.

Embedding the lru is certainly easier from my PoV, the main question is
how much do you, as a fs representative, value those 8 bytes?

<Prev in Thread] Current Thread [Next in Thread>