From: Zoltan Menyhart <Zoltan.Menyhart@bull.net>
To: Andi Kleen <ak@suse.de>
Cc: discuss@x86-64.org, Chase Venters <chase.venters@clientec.com>,
Brent Casavant <bcasavan@sgi.com>, Jes Sorensen <jes@sgi.com>,
Tony Luck <tony.luck@intel.com>,
linux-kernel@vger.kernel.org, libc-alpha@sourceware.org,
vojtech@suse.cz, linux-ia64@vger.kernel.org
Subject: Re: [discuss] Re: FOR REVIEW: New x86-64 vsyscall vgetcpu()
Date: Mon, 19 Jun 2006 08:42:43 +0000 [thread overview]
Message-ID: <44966383.1030006@bull.net> (raw)
In-Reply-To: <200606170855.49123.ak@suse.de>
Brent Casavant wrote:
> To this last point, it might be more reasonable to map in a page that
> contained a new structure with a stable ABI, which mirrored some of
> the task_struct information, and likely other useful information as
> needs are identified in the future. In any case, it would be hard
> to beat a single memory read for performance.
>
> Cache-coloring and kernel bookkeeping effects could be minimized if this
> was provided as an mmaped page from a device driver, used only by
> applications which care. This does work somewhat contrary to the idea of
> getting support into glibc, unless glibc only used this capability when
> asked to through some sort of environment variable or other run-time
> configuration.
Quite O.K. for me.
Andi Kleen wrote:
>>Well, if every process had a page of its own, what would the context
>>switch overhead be?
> For process zero, for thread quite high on x86 because you
> would need per CPU page tables. Doing that would be extremly
> nasty because you would potentially need to allocate a new
> set of page tables every time the process is scheduled to a new
> CPU it hasn't run on before.
Probably I have not explained it correctly:
- The "information page" (that includes the current CPU no.) is not a
per CPU page
- This page is just another page that is mapped at a "well known" user
virtual address (for those who are interested in)
- As you do not do any special action for each user page on context
switch, there is nothing to to this page either
- The scheduler sometimes migrates a task, then it updates the
the current CPU number on the "information page"
> My reference was more to high suggestion of keeping a second version
> of task_struct for export. That would require changing everything
> in task struct that is changed on switch_to and should be exported
> in the other function too.
It depends on what else can be in this "information page".
As for the current CPU no., you need a single store on each task migration.
Thanks,
Zoltan
WARNING: multiple messages have this Message-ID (diff)
From: Zoltan Menyhart <Zoltan.Menyhart@bull.net>
To: Andi Kleen <ak@suse.de>
Cc: discuss@x86-64.org, Chase Venters <chase.venters@clientec.com>,
Brent Casavant <bcasavan@sgi.com>, Jes Sorensen <jes@sgi.com>,
Tony Luck <tony.luck@intel.com>,
linux-kernel@vger.kernel.org, libc-alpha@sourceware.org,
vojtech@suse.cz, linux-ia64@vger.kernel.org
Subject: Re: [discuss] Re: FOR REVIEW: New x86-64 vsyscall vgetcpu()
Date: Mon, 19 Jun 2006 10:42:43 +0200 [thread overview]
Message-ID: <44966383.1030006@bull.net> (raw)
In-Reply-To: <200606170855.49123.ak@suse.de>
Brent Casavant wrote:
> To this last point, it might be more reasonable to map in a page that
> contained a new structure with a stable ABI, which mirrored some of
> the task_struct information, and likely other useful information as
> needs are identified in the future. In any case, it would be hard
> to beat a single memory read for performance.
>
> Cache-coloring and kernel bookkeeping effects could be minimized if this
> was provided as an mmaped page from a device driver, used only by
> applications which care. This does work somewhat contrary to the idea of
> getting support into glibc, unless glibc only used this capability when
> asked to through some sort of environment variable or other run-time
> configuration.
Quite O.K. for me.
Andi Kleen wrote:
>>Well, if every process had a page of its own, what would the context
>>switch overhead be?
> For process zero, for thread quite high on x86 because you
> would need per CPU page tables. Doing that would be extremly
> nasty because you would potentially need to allocate a new
> set of page tables every time the process is scheduled to a new
> CPU it hasn't run on before.
Probably I have not explained it correctly:
- The "information page" (that includes the current CPU no.) is not a
per CPU page
- This page is just another page that is mapped at a "well known" user
virtual address (for those who are interested in)
- As you do not do any special action for each user page on context
switch, there is nothing to to this page either
- The scheduler sometimes migrates a task, then it updates the
the current CPU number on the "information page"
> My reference was more to high suggestion of keeping a second version
> of task_struct for export. That would require changing everything
> in task struct that is changed on switch_to and should be exported
> in the other function too.
It depends on what else can be in this "information page".
As for the current CPU no., you need a single store on each task migration.
Thanks,
Zoltan
next prev parent reply other threads:[~2006-06-19 8:42 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-14 7:42 FOR REVIEW: New x86-64 vsyscall vgetcpu() Andi Kleen
2006-06-14 10:47 ` Alan Cox
2006-06-14 14:54 ` Steve Munroe
2006-06-15 23:17 ` Benjamin Herrenschmidt
[not found] ` <449029DB.7030505@redhat.com>
[not found] ` <200606141752.02361.ak@suse.de>
2006-06-14 16:30 ` Ulrich Drepper
2006-06-14 17:34 ` [discuss] " Andi Kleen
2006-06-15 18:44 ` Tony Luck
2006-06-16 6:22 ` Andi Kleen
2006-06-16 7:23 ` Gerd Hoffmann
2006-06-16 7:37 ` Andi Kleen
2006-06-16 9:48 ` Jes Sorensen
2006-06-16 9:48 ` Jes Sorensen
2006-06-16 10:09 ` Andi Kleen
2006-06-16 10:09 ` Andi Kleen
2006-06-16 11:02 ` Jes Sorensen
2006-06-16 11:02 ` Jes Sorensen
2006-06-16 11:17 ` Andi Kleen
2006-06-16 11:17 ` Andi Kleen
2006-06-16 11:58 ` Jes Sorensen
2006-06-16 11:58 ` Jes Sorensen
2006-06-16 12:36 ` Zoltan Menyhart
2006-06-16 12:36 ` Zoltan Menyhart
2006-06-16 12:41 ` Jes Sorensen
2006-06-16 12:41 ` Jes Sorensen
2006-06-16 12:48 ` Zoltan Menyhart
2006-06-16 12:48 ` Zoltan Menyhart
2006-06-16 21:04 ` Chase Venters
2006-06-16 21:04 ` Chase Venters
2006-06-16 14:56 ` Andi Kleen
2006-06-16 14:56 ` Andi Kleen
2006-06-16 15:31 ` Zoltan Menyhart
2006-06-16 15:31 ` Zoltan Menyhart
2006-06-16 15:37 ` Andi Kleen
2006-06-16 15:37 ` Andi Kleen
2006-06-16 15:58 ` Jakub Jelinek
2006-06-16 15:58 ` Jakub Jelinek
2006-06-16 16:24 ` Andi Kleen
2006-06-16 16:24 ` Andi Kleen
2006-06-16 16:33 ` Jakub Jelinek
2006-06-16 16:33 ` Jakub Jelinek
2006-06-16 21:12 ` Chase Venters
2006-06-16 21:12 ` Chase Venters
2006-06-16 15:36 ` Brent Casavant
2006-06-16 15:36 ` Brent Casavant
2006-06-16 15:40 ` Andi Kleen
2006-06-16 15:40 ` Andi Kleen
2006-06-16 21:15 ` Chase Venters
2006-06-16 21:15 ` Chase Venters
2006-06-16 21:19 ` Chase Venters
2006-06-16 21:19 ` Chase Venters
2006-06-16 23:40 ` Brent Casavant
2006-06-16 23:40 ` Brent Casavant
2006-06-17 6:58 ` Andi Kleen
2006-06-17 6:58 ` Andi Kleen
2006-06-17 6:55 ` [discuss] " Andi Kleen
2006-06-17 6:55 ` Andi Kleen
2006-06-19 8:42 ` Zoltan Menyhart [this message]
2006-06-19 8:42 ` Zoltan Menyhart
2006-06-19 8:54 ` Andi Kleen
2006-06-19 8:54 ` Andi Kleen
2006-06-16 14:54 ` Andi Kleen
2006-06-16 14:54 ` Andi Kleen
2006-06-20 8:28 ` Jes Sorensen
2006-06-20 8:28 ` Jes Sorensen
2006-06-19 0:15 ` Paul Jackson
2006-06-19 8:21 ` Andi Kleen
2006-06-19 10:09 ` Paul Jackson
2006-06-21 1:18 ` Paul Jackson
2006-06-21 1:21 ` Paul Jackson
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=44966383.1030006@bull.net \
--to=zoltan.menyhart@bull.net \
--cc=ak@suse.de \
--cc=bcasavan@sgi.com \
--cc=chase.venters@clientec.com \
--cc=discuss@x86-64.org \
--cc=jes@sgi.com \
--cc=libc-alpha@sourceware.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tony.luck@intel.com \
--cc=vojtech@suse.cz \
/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.