Date: Sun, 19 Jan 1997 21:19:06 +1100 (EST) From: Douglas Thomas Crosher <dtc@scrooge.ee.swin.oz.au> To: current@freebsd.org Subject: possible madvise MADV_FREE improvement Message-ID: <199701191019.VAA09832@scrooge.ee.swin.oz.au>
next in thread | raw e-mail | index | archive | help
Below is a patch which seems to improve madvise MADV_FREE; stops the page-ins in the example recently posted. It also brings the call closer to reliably zeroing the pages. Regards Douglas Crosher -=-=- *** vm_object.c.1 Thu Jan 16 16:12:54 1997 --- vm_object.c Sun Jan 19 21:05:45 1997 *************** *** 697,702 **** --- 697,703 ---- { vm_pindex_t end; vm_page_t m; + int s; if (object == NULL) return; *************** *** 714,721 **** if (m == NULL || m->busy || (m->flags & PG_BUSY) || m->hold_count || m->wire_count || m->valid != VM_PAGE_BITS_ALL) ! continue; ! if (advise == MADV_WILLNEED) { if (m->queue != PQ_ACTIVE) vm_page_activate(m); --- 715,736 ---- if (m == NULL || m->busy || (m->flags & PG_BUSY) || m->hold_count || m->wire_count || m->valid != VM_PAGE_BITS_ALL) ! { ! if ( (advise!=MADV_FREE) || ! ((object->type != OBJT_DEFAULT) && ! (object->type != OBJT_SWAP)) ) ! continue; ! else if (m == NULL) { ! swap_pager_dmzspace(object, pindex, 1); ! continue; ! } else if ( m->busy || (m->flags & PG_BUSY) ) { ! s = splvm(); ! m->flags |= PG_WANTED; ! tsleep(m, PVM, "mafree", 0); ! splx(s); ! } ! } ! if (advise == MADV_WILLNEED) { if (m->queue != PQ_ACTIVE) vm_page_activate(m);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701191019.VAA09832>