• Andrew Morton's avatar
    [PATCH] remove page->virtual · a27efcaf
    Andrew Morton authored
    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.
    a27efcaf
page_alloc.c 27.2 KB