From: Tejun Heo <tj@kernel.org>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: Ingo Molnar <mingo@elte.hu>, "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
x86@kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Jeremy Fitzhardinge <jeremy@goop.org>,
cpw@sgi.com
Subject: Re: #tj-percpu has been rebased
Date: Sat, 14 Feb 2009 09:45:14 +0900 [thread overview]
Message-ID: <4996141A.1050506@kernel.org> (raw)
In-Reply-To: <200902140728.55954.rusty@rustcorp.com.au>
Rusty Russell wrote:
> On Thursday 12 February 2009 14:14:08 Tejun Heo wrote:
>> Oops, those are the same ones. I'll give a shot at cooking up
>> something which can be dynamically sized before going forward with
>> this one.
>
> That's why I handed it to you! :)
>
> Just remember we waited over 5 years for this to happen: the point of these
> is that Christoph showed it's still useful.
>
> (And I really like the idea of allocing congruent areas rather than remapping
> if someone can show that it's semi-reliable. Good luck!)
I finished writing up the first draft last night. Somehow I can feel
long grueling debugging hours ahead of me but it generally goes like
the following.
Percpu areas are allocated in chunks in vmalloc area. Each chunk is
consisted of num_possible_cpus() units and the first chunk is used for
static percpu variables in the kernel image (special boot time
alloc/init handling necessary as these areas need to be brought up
before allocation services are running). Unit grows as necessary and
all units grow or shrink in unison. When a chunk is filled up,
another chunk is allocated. ie. in vmalloc area
c0 c1 c2
------------------- ------------------- ------------
| u0 | u1 | u2 | u3 | | u0 | u1 | u2 | u3 | | u0 | u1 | u
------------------- ...... ------------------- .... ------------
Allocation is done in offset-size areas of single unit space. Ie,
when UNIT_SIZE is 128k, an area at 134k of 512bytes occupy 512bytes at
6k of c1:u0, c1:u1, c1:u2 and c1u3. Percpu access can be done by
configuring percpu base registers UNIT_SIZE apart.
Currently it uses pte mappings but byn using larger UNIT_SIZE, it can
be modified to use pmd mappings. I'm a bit skeptical about this tho.
Percpu pages are allocated with HIGHMEM | COLD, so they won't
interfere with the physical mapping and on !NUMA it lifts load from
pgd tlb by not having stuff for different cpus occupying the same pgd
page. What we can also do is to use large page sized UNIT_SIZE but
default to pte mappings and convert to pmd mapping if a chunk becomes
full occupied. Anyways, we can think about this later.
I'm going back to get this thing working.
Happy Valentine's everyone. :-)
--
tejun
next prev parent reply other threads:[~2009-02-14 0:46 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-30 17:05 #tj-percpu has been rebased Tejun Heo
2009-01-31 5:46 ` Tejun Heo
2009-01-31 13:28 ` Ingo Molnar
2009-02-02 9:04 ` Rusty Russell
2009-02-04 3:18 ` Tejun Heo
2009-02-12 3:37 ` Tejun Heo
2009-02-12 3:44 ` Tejun Heo
2009-02-13 20:58 ` Rusty Russell
2009-02-13 21:17 ` Jeremy Fitzhardinge
2009-02-13 22:59 ` H. Peter Anvin
2009-02-14 0:45 ` Tejun Heo [this message]
2009-02-14 1:53 ` H. Peter Anvin
2009-02-14 2:10 ` Tejun Heo
2009-02-16 7:23 ` Rusty Russell
2009-02-16 17:28 ` H. Peter Anvin
2009-02-16 23:22 ` Rusty Russell
2009-02-16 23:28 ` H. Peter Anvin
2009-02-18 4:25 ` Rusty Russell
2009-02-18 6:40 ` H. Peter Anvin
2009-02-18 7:11 ` Rusty Russell
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=4996141A.1050506@kernel.org \
--to=tj@kernel.org \
--cc=cpw@sgi.com \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rusty@rustcorp.com.au \
--cc=tglx@linutronix.de \
--cc=x86@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox