From: Rik van Riel <riel@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@surriel.com>,
linux-mm@kvack.org, akpm@linux-foundation.org,
aarcange@redhat.com, minchan@gmail.com,
kosaki.motohiro@gmail.com, andi@firstfloor.org,
hannes@cmpxchg.org, mel@csn.ul.ie, linux-kernel@vger.kernel.org,
danielfsantos@att.net
Subject: Re: [PATCH -mm v2 01/11] mm: track free size between VMAs in VMA rbtree
Date: Tue, 26 Jun 2012 11:49:48 -0400 [thread overview]
Message-ID: <4FE9DA1C.1010305@redhat.com> (raw)
In-Reply-To: <1340718349.21991.81.camel@twins>
On 06/26/2012 09:45 AM, Peter Zijlstra wrote:
> On Tue, 2012-06-26 at 09:05 -0400, Rik van Riel wrote:
>> On 06/26/2012 04:31 AM, Peter Zijlstra wrote:
>>
>>> If you look at your patch 1, __vma_unlink has an adjust_free_gap() right
>>> next to the rb_augment_erase(), vma_adjust() has 3 adjust_free_gap()
>>> calls right next to each other.
>>>
>>> All these will do an entire path walk back to the root. I would think we
>>> could save quite a bit of updating by not having them all walk back to
>>> the root. No point in re-computing the top levels if you know the next
>>> update will change them again anyway.
>>
>> The problem is, unless we look at the augmented data at
>> rotate time, we do not know when it is safe to stop
>> iterating up the tree.
>
> argh,.. you're using adjust_vma_gap() for insertions instead of
> rb_augment_insert().
>
> I was going on the premise that you're doing updates for augmented data
> without modifying the tree structure and that doing insert/delete will
> keep the stuff up-to-date.
>
> So now I'm not sure why you do if (insert) adjust_free_gap(insert),
> since __insert_vm_struct(mm, insert) -> __vma_link() -> __vma_link_rb()
> already does an augment update.
I have fixed that in patch 3/11 of this series,
which I kept separate for this round of submission
to make it easier for reviewers to see what I
changed there.
However, doing an insert or delete changes the
gap size for the _next_ vma, and potentially a
change in the maximum gap size for the parent
node, so both insert and delete cause two tree
walks :(
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Rik van Riel <riel@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@surriel.com>,
linux-mm@kvack.org, akpm@linux-foundation.org,
aarcange@redhat.com, minchan@gmail.com,
kosaki.motohiro@gmail.com, andi@firstfloor.org,
hannes@cmpxchg.org, mel@csn.ul.ie, linux-kernel@vger.kernel.org,
danielfsantos@att.net
Subject: Re: [PATCH -mm v2 01/11] mm: track free size between VMAs in VMA rbtree
Date: Tue, 26 Jun 2012 11:49:48 -0400 [thread overview]
Message-ID: <4FE9DA1C.1010305@redhat.com> (raw)
In-Reply-To: <1340718349.21991.81.camel@twins>
On 06/26/2012 09:45 AM, Peter Zijlstra wrote:
> On Tue, 2012-06-26 at 09:05 -0400, Rik van Riel wrote:
>> On 06/26/2012 04:31 AM, Peter Zijlstra wrote:
>>
>>> If you look at your patch 1, __vma_unlink has an adjust_free_gap() right
>>> next to the rb_augment_erase(), vma_adjust() has 3 adjust_free_gap()
>>> calls right next to each other.
>>>
>>> All these will do an entire path walk back to the root. I would think we
>>> could save quite a bit of updating by not having them all walk back to
>>> the root. No point in re-computing the top levels if you know the next
>>> update will change them again anyway.
>>
>> The problem is, unless we look at the augmented data at
>> rotate time, we do not know when it is safe to stop
>> iterating up the tree.
>
> argh,.. you're using adjust_vma_gap() for insertions instead of
> rb_augment_insert().
>
> I was going on the premise that you're doing updates for augmented data
> without modifying the tree structure and that doing insert/delete will
> keep the stuff up-to-date.
>
> So now I'm not sure why you do if (insert) adjust_free_gap(insert),
> since __insert_vm_struct(mm, insert) -> __vma_link() -> __vma_link_rb()
> already does an augment update.
I have fixed that in patch 3/11 of this series,
which I kept separate for this round of submission
to make it easier for reviewers to see what I
changed there.
However, doing an insert or delete changes the
gap size for the _next_ vma, and potentially a
change in the maximum gap size for the parent
node, so both insert and delete cause two tree
walks :(
next prev parent reply other threads:[~2012-06-26 15:51 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-21 21:57 [PATCH -mm v2 00/11] mm: scalable and unified arch_get_unmapped_area Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-21 21:57 ` [PATCH -mm v2 01/11] mm: track free size between VMAs in VMA rbtree Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-22 9:57 ` Peter Zijlstra
2012-06-22 9:57 ` Peter Zijlstra
2012-06-22 9:58 ` Peter Zijlstra
2012-06-22 9:58 ` Peter Zijlstra
2012-06-22 14:11 ` Rik van Riel
2012-06-22 14:11 ` Rik van Riel
2012-06-22 14:13 ` Peter Zijlstra
2012-06-22 14:13 ` Peter Zijlstra
2012-06-22 14:25 ` Rik van Riel
2012-06-22 14:25 ` Rik van Riel
2012-06-22 14:37 ` Peter Zijlstra
2012-06-22 14:37 ` Peter Zijlstra
2012-06-22 15:41 ` Rik van Riel
2012-06-22 15:41 ` Rik van Riel
2012-06-25 19:29 ` Peter Zijlstra
2012-06-25 19:29 ` Peter Zijlstra
2012-06-25 21:52 ` Rik van Riel
2012-06-25 21:52 ` Rik van Riel
2012-06-26 8:31 ` Peter Zijlstra
2012-06-26 8:31 ` Peter Zijlstra
2012-06-26 13:05 ` Rik van Riel
2012-06-26 13:05 ` Rik van Riel
2012-06-26 13:45 ` Peter Zijlstra
2012-06-26 13:45 ` Peter Zijlstra
2012-06-26 15:49 ` Rik van Riel [this message]
2012-06-26 15:49 ` Rik van Riel
2012-06-27 12:27 ` Peter Zijlstra
2012-06-27 12:27 ` Peter Zijlstra
2012-06-26 8:37 ` Peter Zijlstra
2012-06-26 8:37 ` Peter Zijlstra
2012-06-22 10:02 ` Peter Zijlstra
2012-06-22 10:02 ` Peter Zijlstra
2012-06-29 23:46 ` Michel Lespinasse
2012-06-29 23:46 ` Michel Lespinasse
2012-07-03 21:37 ` Rik van Riel
2012-07-03 21:37 ` Rik van Riel
2012-07-03 23:16 ` Michel Lespinasse
2012-07-03 23:16 ` Michel Lespinasse
2012-07-04 10:12 ` Peter Zijlstra
2012-07-04 10:12 ` Peter Zijlstra
2012-06-21 21:57 ` [PATCH -mm v2 02/11] mm: rearrange vm_area_struct for fewer cache misses Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-21 21:57 ` [PATCH -mm v2 03/11] mm: vma_adjust: only call adjust_free_gap when needed Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-21 21:57 ` [PATCH -mm v2 04/11] rbtree: add helpers to find nearest uncle node Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-22 9:49 ` Peter Zijlstra
2012-06-22 9:49 ` Peter Zijlstra
2012-06-21 21:57 ` [PATCH -mm v2 05/11] mm: get unmapped area from VMA tree Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-30 1:33 ` Michel Lespinasse
2012-06-30 1:33 ` Michel Lespinasse
2012-07-03 0:23 ` Michel Lespinasse
2012-07-03 0:23 ` Michel Lespinasse
2012-06-30 2:42 ` Michel Lespinasse
2012-06-30 2:42 ` Michel Lespinasse
2012-06-21 21:57 ` [PATCH -mm v2 06/11] mm: arbitrary address ranges for arch_get_unmapped_area Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-21 21:57 ` [PATCH -mm v2 07/11] mm: make cache alignment code generic Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-30 2:22 ` Michel Lespinasse
2012-06-30 2:22 ` Michel Lespinasse
2012-06-21 21:57 ` [PATCH -mm v2 08/11] mm: remove x86 arch_get_unmapped_area(_topdown) Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-21 21:57 ` [PATCH -mm v2 09/11] mm: remove MIPS arch_get_unmapped_area code Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-21 21:57 ` [PATCH -mm v2 10/11] mm: remove ARM arch_get_unmapped_area functions Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-22 22:27 ` Russell King - ARM Linux
2012-06-22 22:27 ` Russell King - ARM Linux
2012-06-23 17:50 ` Johannes Weiner
2012-06-23 17:50 ` Johannes Weiner
2012-06-21 21:57 ` [PATCH -mm v2 11/11] mm: remove SH " Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-21 21:57 ` Rik van Riel
2012-06-25 2:11 ` Paul Mundt
2012-06-25 2:11 ` Paul Mundt
2012-06-25 2:11 ` Paul Mundt
2012-06-22 14:24 ` [PATCH -mm v2 00/11] mm: scalable and unified arch_get_unmapped_area John Stoffel
2012-06-22 14:24 ` John Stoffel
2012-06-22 21:47 ` Andrew Morton
2012-06-22 21:47 ` Andrew Morton
2012-06-23 16:03 ` John Stoffel
2012-06-23 16:03 ` John Stoffel
2012-06-22 15:01 ` Johannes Weiner
2012-06-22 15:01 ` Johannes Weiner
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=4FE9DA1C.1010305@redhat.com \
--to=riel@redhat.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=danielfsantos@att.net \
--cc=hannes@cmpxchg.org \
--cc=kosaki.motohiro@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=minchan@gmail.com \
--cc=peterz@infradead.org \
--cc=riel@surriel.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 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.