From: Andrea Arcangeli <andrea@suse.de>
To: "Martin J. Bligh" <Martin.Bligh@us.ibm.com>
Cc: William Lee Irwin III <wli@holomorphy.com>,
Daniel Phillips <phillips@bonn-fries.net>,
Russell King <rmk@arm.linux.org.uk>,
linux-kernel@vger.kernel.org
Subject: Re: Virtual address space exhaustion (was Discontigmem virt_to_page() )
Date: Fri, 3 May 2002 17:58:19 +0200 [thread overview]
Message-ID: <20020503175819.A14505@dualathlon.random> (raw)
In-Reply-To: <20020503103813.K11414@dualathlon.random> <4055279713.1020413842@[10.10.2.3]>
On Fri, May 03, 2002 at 08:17:23AM -0700, Martin J. Bligh wrote:
> We don't have to tlb flush every time we map something in, only when
> we delete it. For the sake of illustration, imagine a huge kmap pool
> for each task, we just map things in as we need them (say some pagecache
yes, the pool will "cache" the mem_map virtual window for a while, but
the complexity of the pool management isn't trivial, in the page
structure you won't find the associated per-task cached virtual address,
you will need something like a lookup on a data structure associated
with the task struct to find if you just have it in cache or not in the
per-process userspace kmap pool. The current kmap pool is an order of
magnitude simpler thanks to page->virtual but you cannot have a
page->virtual[nr_tasks] array.
Another interesting problem is that 'struct page *' will be as best a
cookie, not a valid pointer anymore, not sure what's the best way to
handle that. Working with pfn would be cleaner rather than working with
a cookie (somebody could dereference the cookie by mistake thinking it's
a page structure old style), but if __alloc_pages returns a pfn a whole
lot of kernel code will break.
> older 32 bit machines in the field for a few years yet to come, and
> we have to cope with them as best we can.
Sure.
> Though that'd reduce the size of some of the structures, I'd still
> have other concerns (such as tlb size, which is something stupid
> like 4 pages, IIRC), and the space wastage you mentioned. Page
it has 8 pages for data and 2 for instructions, that's 16M data and 4M
of instructions with PAE. 4k pages can be cached with at most 64 slots
for data and 32 entries for instructions, that means 256K of data and
128k of instructions. The main disavantage is that we basically would
waste the 4k tlb slots, and we'd share the same slots with the kernel.
It mostly depend on the workload but in theory the 8 pages for data
could reduce the pte walking (also not to mention a layer less of pte
would make the pte walking faster too). So I think 2M pages could
speedup some application, but the main advantage remains that you
wouldn't need to change the page structure handling.
Andrea
next prev parent reply other threads:[~2002-05-03 15:57 UTC|newest]
Thread overview: 165+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-26 18:27 Bug: Discontigmem virt_to_page() [Alpha,ARM,Mips64?] Russell King
2002-04-26 22:46 ` Andrea Arcangeli
2002-04-29 17:50 ` Martin J. Bligh
2002-04-29 22:00 ` Roman Zippel
2002-04-30 0:43 ` Andrea Arcangeli
2002-04-27 22:10 ` Daniel Phillips
2002-04-29 13:35 ` Andrea Arcangeli
2002-04-29 23:02 ` Daniel Phillips
2002-05-01 2:23 ` Andrea Arcangeli
2002-04-30 23:12 ` Daniel Phillips
2002-05-01 1:05 ` Daniel Phillips
2002-05-02 0:47 ` Andrea Arcangeli
2002-05-01 1:26 ` Daniel Phillips
2002-05-02 1:43 ` Andrea Arcangeli
2002-05-01 2:41 ` Daniel Phillips
2002-05-02 13:34 ` Andrea Arcangeli
2002-05-02 15:18 ` Martin J. Bligh
2002-05-02 15:35 ` Andrea Arcangeli
2002-05-01 15:42 ` Daniel Phillips
2002-05-02 16:06 ` Andrea Arcangeli
2002-05-02 16:10 ` Martin J. Bligh
2002-05-02 16:40 ` Andrea Arcangeli
2002-05-02 17:16 ` William Lee Irwin III
2002-05-02 18:41 ` Andrea Arcangeli
2002-05-02 19:19 ` William Lee Irwin III
2002-05-02 19:27 ` Daniel Phillips
2002-05-02 19:38 ` William Lee Irwin III
2002-05-02 19:58 ` Daniel Phillips
2002-05-03 6:28 ` Andrea Arcangeli
2002-05-03 6:10 ` Andrea Arcangeli
2002-05-02 22:20 ` Martin J. Bligh
2002-05-02 21:28 ` William Lee Irwin III
2002-05-02 21:52 ` Kurt Ferreira
2002-05-02 21:55 ` William Lee Irwin III
2002-05-03 6:38 ` Andrea Arcangeli
2002-05-03 6:58 ` Martin J. Bligh
2002-05-03 6:04 ` Andrea Arcangeli
2002-05-03 6:33 ` Martin J. Bligh
2002-05-03 8:38 ` Andrea Arcangeli
2002-05-03 9:26 ` William Lee Irwin III
2002-05-03 15:38 ` Martin J. Bligh
2002-05-03 15:17 ` Virtual address space exhaustion (was Discontigmem virt_to_page() ) Martin J. Bligh
2002-05-03 15:58 ` Andrea Arcangeli [this message]
2002-05-03 16:10 ` Martin J. Bligh
2002-05-03 16:25 ` Andrea Arcangeli
2002-05-03 16:02 ` Daniel Phillips
2002-05-03 16:20 ` Andrea Arcangeli
2002-05-03 16:41 ` Daniel Phillips
2002-05-03 16:58 ` Andrea Arcangeli
2002-05-03 18:08 ` Daniel Phillips
2002-05-03 9:24 ` Bug: Discontigmem virt_to_page() [Alpha,ARM,Mips64?] William Lee Irwin III
2002-05-03 10:30 ` Andrea Arcangeli
2002-05-03 11:09 ` William Lee Irwin III
2002-05-03 11:27 ` Andrea Arcangeli
2002-05-03 15:42 ` Martin J. Bligh
2002-05-03 15:32 ` Martin J. Bligh
2002-05-02 19:22 ` Daniel Phillips
2002-05-03 6:06 ` Andrea Arcangeli
2002-05-02 18:25 ` Daniel Phillips
2002-05-02 18:44 ` Andrea Arcangeli
2002-05-02 19:31 ` Martin J. Bligh
2002-05-02 18:57 ` Andrea Arcangeli
2002-05-02 19:08 ` Daniel Phillips
2002-05-03 5:15 ` Andrea Arcangeli
2002-05-05 23:54 ` Daniel Phillips
2002-05-06 0:28 ` Andrea Arcangeli
2002-05-06 0:34 ` Daniel Phillips
2002-05-06 1:01 ` Andrea Arcangeli
2002-05-06 0:55 ` Russell King
2002-05-06 1:07 ` Daniel Phillips
2002-05-06 1:20 ` Andrea Arcangeli
2002-05-06 1:24 ` Daniel Phillips
2002-05-06 1:42 ` Andrea Arcangeli
2002-05-06 1:48 ` Daniel Phillips
2002-05-06 2:06 ` Andrea Arcangeli
2002-05-06 17:40 ` Daniel Phillips
2002-05-06 19:09 ` Martin J. Bligh
2002-05-06 1:09 ` Andrea Arcangeli
2002-05-06 1:13 ` Daniel Phillips
2002-05-06 2:03 ` Daniel Phillips
2002-05-06 2:31 ` Andrea Arcangeli
2002-05-06 8:57 ` Russell King
2002-05-06 8:54 ` Roman Zippel
2002-05-06 15:26 ` Daniel Phillips
2002-05-06 19:07 ` Roman Zippel
2002-05-08 15:57 ` Daniel Phillips
2002-05-08 23:11 ` Roman Zippel
2002-05-09 16:08 ` Daniel Phillips
2002-05-09 22:06 ` Roman Zippel
2002-05-09 22:22 ` Daniel Phillips
2002-05-09 23:00 ` Roman Zippel
2002-05-09 23:22 ` Daniel Phillips
2002-05-10 0:13 ` Roman Zippel
2002-05-02 22:39 ` Martin J. Bligh
2002-05-03 7:04 ` Andrea Arcangeli
2002-05-02 23:42 ` Daniel Phillips
2002-05-03 7:45 ` Andrea Arcangeli
2002-05-02 16:07 ` Martin J. Bligh
2002-05-02 16:58 ` Gerrit Huizenga
2002-05-02 18:10 ` Andrea Arcangeli
2002-05-02 19:28 ` Gerrit Huizenga
2002-05-02 22:23 ` Martin J. Bligh
2002-05-03 6:20 ` Andrea Arcangeli
2002-05-03 6:39 ` Martin J. Bligh
2002-05-02 16:00 ` William Lee Irwin III
2002-05-02 2:37 ` William Lee Irwin III
2002-05-02 15:59 ` Andrea Arcangeli
2002-05-02 16:06 ` William Lee Irwin III
2002-05-01 18:05 ` Jesse Barnes
2002-05-01 23:17 ` Andrea Arcangeli
2002-05-01 23:23 ` discontiguous memory platforms Jesse Barnes
2002-05-02 0:51 ` Ralf Baechle
2002-05-02 1:27 ` Andrea Arcangeli
2002-05-02 1:32 ` Ralf Baechle
2002-05-02 8:50 ` Roman Zippel
2002-05-01 13:21 ` Daniel Phillips
2002-05-02 14:00 ` Roman Zippel
2002-05-01 14:08 ` Daniel Phillips
2002-05-02 17:56 ` Roman Zippel
2002-05-01 17:59 ` Daniel Phillips
2002-05-02 18:26 ` Roman Zippel
2002-05-02 18:32 ` Daniel Phillips
2002-05-02 19:40 ` Roman Zippel
2002-05-02 20:14 ` Daniel Phillips
2002-05-03 6:34 ` Andrea Arcangeli
2002-05-03 9:33 ` Roman Zippel
2002-05-03 6:30 ` Andrea Arcangeli
2002-05-02 18:35 ` Geert Uytterhoeven
2002-05-02 18:39 ` Daniel Phillips
2002-05-02 0:20 ` Bug: Discontigmem virt_to_page() [Alpha,ARM,Mips64?] Anton Blanchard
2002-05-01 1:35 ` Daniel Phillips
2002-05-02 1:45 ` William Lee Irwin III
2002-05-01 2:02 ` Daniel Phillips
2002-05-02 2:33 ` William Lee Irwin III
2002-05-01 2:44 ` Daniel Phillips
2002-05-02 1:46 ` Andrea Arcangeli
2002-05-01 1:56 ` Daniel Phillips
2002-05-02 1:01 ` Andrea Arcangeli
2002-05-02 15:28 ` Anton Blanchard
2002-05-01 16:10 ` Daniel Phillips
2002-05-02 15:59 ` Dave Engebretsen
2002-05-01 17:24 ` Daniel Phillips
2002-05-02 16:44 ` Dave Engebretsen
2002-05-02 16:31 ` William Lee Irwin III
2002-05-02 16:21 ` Dave Engebretsen
2002-05-02 17:28 ` William Lee Irwin III
2002-05-02 23:05 ` Daniel Phillips
2002-05-03 0:05 ` William Lee Irwin III
2002-05-03 1:19 ` Daniel Phillips
2002-05-03 19:47 ` Dave Engebretsen
2002-05-03 22:06 ` Daniel Phillips
2002-05-03 23:52 ` David Mosberger
-- strict thread matches above, loose matches on Subject: below --
2002-05-03 18:37 Virtual address space exhaustion (was Discontigmem virt_to_page() ) Tony Luck
2002-05-03 19:01 ` Richard B. Johnson
2002-04-27 1:15 ` Pavel Machek
2002-05-03 19:09 ` Christoph Hellwig
2002-05-03 19:17 ` Richard B. Johnson
2002-05-03 19:24 ` Christoph Hellwig
2002-05-03 19:38 ` Matti Aarnio
2002-05-03 19:50 ` Tony Luck
2002-05-03 20:22 ` Jeff Dike
2002-05-03 19:30 ` Richard B. Johnson
2002-05-03 22:35 ` Martin J. Bligh
2002-05-05 0:49 ` Denis Vlasenko
2002-05-05 17:59 ` Martin J. Bligh
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=20020503175819.A14505@dualathlon.random \
--to=andrea@suse.de \
--cc=Martin.Bligh@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=phillips@bonn-fries.net \
--cc=rmk@arm.linux.org.uk \
--cc=wli@holomorphy.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox