diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-10-04 20:35:48 -0700 |
|---|---|---|
| committer | Russell King <rmk@flint.arm.linux.org.uk> | 2002-10-04 20:35:48 -0700 |
| commit | a27efcaff9ffd5ad05f4e111751da41a8820f7ab (patch) | |
| tree | cc525c035c0e53f1edaadd4a9c572a52ef702bc1 /init | |
| parent | 343893e647d27c96bf07e3f549b77b89aa9581ce (diff) | |
[PATCH] remove page->virtual
The patch removes page->virtual for all architectures which do not
define WANT_PAGE_VIRTUAL. Hash for it instead.
Possibly we could define WANT_PAGE_VIRTUAL for CONFIG_HIGHMEM4G, but it
seems unlikely.
A lot of the pressure went off kmap() and page_address() as a result of
the move to kmap_atomic(). That should be the preferred way to address
CPU load in the set_page_address() and page_address() hashing and
locking.
If kmap_atomic is not usable then the next best approach is for users
to cache the result of kmap() in a local rather than calling
page_address() repeatedly.
One heavy user of kmap() and page_address() is the ext2 directory code.
On a 7G Quad PIII, running four concurrent instances of
while true
do
find /usr/src/linux > /dev/null
done
on ext2 with everything cached, profiling shows that the new hashed
set_page_address() and page_address() implementations consume 0.4% and
1.3% of CPU time respectively. I think that's OK.
Diffstat (limited to 'init')
| -rw-r--r-- | init/main.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c index 3cf336cf6f8d..f69c298b9a6f 100644 --- a/init/main.c +++ b/init/main.c @@ -433,6 +433,7 @@ asmlinkage void __init start_kernel(void) initrd_start = 0; } #endif + page_address_init(); mem_init(); kmem_cache_sizes_init(); pidhash_init(); |
