From owner-cvs-all Thu Jan 21 02:01:53 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id CAA13871 for cvs-all-outgoing; Thu, 21 Jan 1999 02:01:53 -0800 (PST) (envelope-from owner-cvs-all@FreeBSD.ORG) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id CAA13865; Thu, 21 Jan 1999 02:01:49 -0800 (PST) (envelope-from dillon@FreeBSD.org) From: Matt Dillon Received: (from dillon@localhost) by freefall.freebsd.org (8.8.8/8.8.5) id CAA23305; Thu, 21 Jan 1999 02:01:49 -0800 (PST) Date: Thu, 21 Jan 1999 02:01:49 -0800 (PST) Message-Id: <199901211001.CAA23305@freefall.freebsd.org> To: cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: cvs commit: src/sys/vm vm_page.c Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk dillon 1999/01/21 02:01:49 PST Modified files: sys/vm vm_page.c Log: The hash table used to be a table of doubly-link list headers ( two pointers per entry ). The table has been changed to a singly linked list of vm_page_t pointers. The table has been doubled in size, but the entries only take half the space so a net-zero change in memory use. The hash function has been changed, hopefully for the better. The combination of the larger hash table size of changed function should keep the chain length down to a reasonable number (0-3, average 1). vm_object->page_hint has been removed. This 'optimization' was not only never needed, but costs as much as a hash chain link to implement. While having page_hint in vm_object might result in better locality of reference, the cost is not worth the space in vm_object or the extra instructions in my view. vm_page_alloc*() functions have been inlined and call a generalized non-inlined vm_page_alloc_toq() which combines the standard alloc and zero-page alloc functions together, reducing code size and the L1 cache footprint. Some reordering has been done... not much. The delinking code should be faster ( because unlinking a doubly-linked list requires four memory ops and unlinking a singly linked list only requires two ), and we get a hash consistancy check for free. vm_page_rename() now automatically sets the page's dirty bits. vm_page_alloc() does not try to manually inline freeing a cache page. Instead, it now properly calls vm_page_free(m) ... vm_page_free() is really too complex to manually inline. vm_await(), supporting asleep(), has been added. Revision Changes Path 1.118 +1 -1 src/sys/vm/vm_page.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message