summaryrefslogtreecommitdiff
path: root/sys/uvm
AgeCommit message (Collapse)Author
2012-12-10Always back the buffer cache off on any page daemon wakeup. This avoidsBob Beck
a few problems noticed by phessler@ and beck@ where certain allocations would repeatedly wake the page daemon even though the page daemon's targets were met already so it didn't do any work. We can avoid this problem when the buffer cache has pages to throw away by always doing so any time the page daemon is woken, rather than only when we are under the free page target. ok phessler@ deraadt@
2012-11-10Number of swap pages in use must be smaller than tha total number of swapMark Kettenis
pages, so fix non-sensical comparison introduced in rev 1.77. ok miod@, krw@, beck@
2012-11-07Fix the buffer cache.Bob Beck
A long time ago (in vienna) the reserves for the cleaner and syncer were removed. softdep and many things have not performed ths same ever since. Follow on generations of buffer cache hackers assumed the exising code was the reference and have been in frustrating state of coprophagia ever since. This commit 0) Brings back a (small) reserve allotment of buffer pages, and the kva to map them, to allow the cleaner and syncer to run even when under intense memory or kva pressure. 1) Fixes a lot of comments and variables to represent reality. 2) Simplifies and corrects how the buffer cache backs off down to the lowest level. 3) Corrects how the page daemons asks the buffer cache to back off, ensuring that uvmpd_scan is done to recover inactive pages in low memory situaitons 4) Adds a high water mark to the pool used to allocate struct buf's 5) Correct the cleaner and the sleep/wakeup cases in both low memory and low kva situations. (including accounting for the cleaner/syncer reserve) Tested by many, with very much helpful input from deraadt, miod, tobiasu, kettenis and others. ok kettenis@ deraadt@ jj@
2012-10-18Wiring map entries with VM_PROT_NONE only waists RAM and bears noGerhard Roth
advantages. We shouln't do this. If the protection changes later on (and VM_MAP_WIREFUTURE was set), uvm_map_protect() will wire them. Found by Matthias Pitzl. ok miod@ markus@
2012-09-20Now that none of our installation media runs off the swap area, don't botherMiod Vallat
accounting for an hyperthetical miniroot filesystem in swap. ok deraadt@
2012-07-21Add a new mmap(2) flag __MAP_NOREMAP for use with MAP_FIXED toMatthew Dempsky
indicate that the kernel should fail with MAP_FAILED if the specified address is not currently available instead of unmapping it. Change ld.so on i386 to make use of __MAP_NOREMAP to improve reliability. __MAP_NOREMAP diff by guenther based on an earlier diff by Ariane; ld.so bits by guenther and me bulk build stress testing of earlier diffs by sthen ok deraadt; committing now for further testing
2012-07-18comment typo; s/lineair/linear/Matthew Dempsky
2012-07-12Three cases that should be failures, not successes when checking for availMike Larkin
swap region for hibernate.
2012-07-11#ifdef the uvm swap checker fn for hibernate only, to save space in kernelsMike Larkin
that don't use hibernate requested by and ok deraadt@
2012-07-11add a check for the total size of swap, abort if too small.Mike Larkin
used by the hibernate code. ok deraadt@
2012-07-11add uvm_swap_check_range to scan for contig free space at end of swap.Mike Larkin
will be needed shortly for hibernate. ok deraadt@
2012-06-14Remove uvm_km_kmem_grow printf.Ariane van der Steldt
It's no longer required, code is stable. ok kettenis@
2012-06-14whitespace cleanupJasper Lievisse Adriaanse
ok ariane@
2012-06-14fix typo in commentJasper Lievisse Adriaanse
ok ariane@
2012-06-06Fix address-space randomization that was accidentally disabled inMatthew Dempsky
uvm_addr.c r1.3. ok deraadt, tedu
2012-06-03Make sure uvm_map_extract() entesr mappings at an address that doesn'tMark Kettenis
introduce any virtual cache aliasing problems. Fixes a regression introduced by vmmap. ok ariane@, jsing@
2012-06-01Correct handling of mlock()/munlock() with len==0 to return successPhilip Guenthe
instead of crashing. Add a KASSERT() to catch other bugs that might result in the tree iterators being reversed. Problem observed by Tom Doherty (tomd at singlesecond.com) ok deraadt@
2012-04-22Add struct proc * argument to FRELE() and FILE_SET_MATURE() inPhilip Guenthe
anticipation of further changes to closef(). No binary change. ok krw@ miod@ deraadt@
2012-04-19Backout misplaced optimization in vmmap.Ariane van der Steldt
(That means the misplaced optimization is back in.) It broke mips and possibly other architectures.
2012-04-17uvmspace_exec: Remove disfunctional "optimization".Ariane van der Steldt
The optimization goes through great lengths to use less optimized code paths in place of the simple path, where the latter is actually faster. ok tedu, guenther
2012-04-12Remove dead UBC codeAriane van der Steldt
2012-04-12uvm: keep track of maxrssAriane van der Steldt
The fault path is used to update the maxrss of the faulting proc. Doesn't affect anything, as it was 0 before. Requested by espie, "just commit it" deraadt
2012-04-11vmmap: speed up allocationsAriane van der Steldt
Reduces O(n log n) allocations to O(log n). ok deraadt, tedu
2012-04-10Return EINVAL on 0-byte mmap invocation.Ariane van der Steldt
- Posix rules that a 0-byte mmap must return EINVAL - our allocators are unable to distinguish between free memory and 0 bytes of allocated memory
2012-03-23Make rusage totals, itimers, and profile settings per-process insteadPhilip Guenthe
of per-rthread. Handling of per-thread tick and runtime counters inspired by how FreeBSD does it. ok kettenis@
2012-03-15Fix vmmap SMALL_KERNEL introduced bug.Ariane van der Steldt
The if (min < VMMAP_MIN_ADDR) min = VMMAP_MIN_ADDR; code should have moved across when the small_kernel diff moved the initialization from uvm_map_setup() to uvm_map_setup_md(). Prevents a nasty panic on hppa, sparc64 (and possibly other archs). kettenis: the diff make some sense to me
2012-03-15Reduce installmedia pressure from new vmmap.Ariane van der Steldt
Has less special allocators on install media (where they aren't required anyway). Bonus: makes the vmmap initialization code easier to read.
2012-03-09New vmmap implementation.Ariane van der Steldt
no oks (it is really a pain to review properly) extensively tested, I'm confident it'll be stable 'now is the time' from several icb inhabitants Diff provides: - ability to specify different allocators for different regions/maps - a simpler implementation of the current allocator - currently in compatibility mode: it will generate similar addresses as the old allocator
2012-01-05Prevent integer wrap-around in pmemrange.Ariane van der Steldt
Found by and original fix from Geoff Steckel. While here, switch the assert that prevents this from happening from DEBUG to DIAGNOSTIC. ok thib@, miod@
2011-12-03Be sure not to access the vm_page array out of bounds in uvm_pmr_freepages().Miod Vallat
Among other things, this fixes early panics on hppa system which memory size is exactly 128MB. Found the hard way and reported by fries@, not reported by beck@
2011-11-24Fix spelling and remove questionPhilip Guenthe
2011-11-08In ddb `show page', print the address of the vm_page_md substruct ifMiod Vallat
defined(__HAVE_VM_PAGE_MD), for convenience.
2011-07-09More syscalls.master cleanup:Matthew Dempsky
sys_osigaltstack() is 7 years old and no longer needed; all glory to the sys_sigaltstack()! sys_ogetdirentries() is about 9 months old, but still acceptable within our release cycle; move from STD to COMPAT_48 to make this clearer for tedu@ next year. sys_sbrk() and sys_sstk() are completely obsolete: all they do is return ENOSYS. ok guenther@
2011-07-08Move uvm_pmr_alloc_pig to kern/subr_hibernate.cAriane van der Steldt
No callers, no functional change.
2011-07-08Move uvm_pmr_zero_everything() to subr_hibernate.Ariane van der Steldt
This function will probably die before ever being called from the in-tree code, since hibernate will move to RLE encoding. No functional change, function had no callers.
2011-07-08Expose pmemrange internal functions via pmemrange.h.Ariane van der Steldt
This is so I can move the pig allocator to subr_hibernate. No functional change.
2011-07-08some machines don't boot with the previous uvm reserve enforcement diff.Ted Unangst
back it out.
2011-07-07Move the uvm reserve enforcement from uvm_pagealloc to pmemrange.Owain Ainsworth
More and more things are allocating outside of uvm_pagealloc these days making it easy for something like the buffer cache to eat your last page with no repercussions (other than a hung machine, of course). ok ariane@ also ok ariane@ again after I spotted and fixed a possible underflow problem in the calculation.
2011-07-07fix typos; while here, improve spacing in comments.Igor Sobrado
changes to libevent and zlib headers sent to the upstream maintainers. ok jmc@ (for typos), millert@
2011-07-06uvm changes for buffer cache improvements.Bob Beck
1) Make the pagedaemon aware of the memory ranges and size of allocations where memory is being requested, and pass this information on to bufbackoff(), which will later (not yet) be used to ensure that the buffer cache gets out of the way in the right area of memory. Note that this commit does not yet make it *do* that - as currently the buffer cache is all in dma-able memory and it will simply back off. 2) Add uvm_pagerealloc_multi - to be used by the buffer cache code for reallocating pages to particular regions. much of this work by ariane, with smatterings of me, art,and oga ok oga@, thib@, ariane@, deraadt@
2011-07-05Don't derefence the item past the end of the array to figure out ifAriane van der Steldt
the extraction loop should stop. No more 298 pages in 42 segments when asking for only 32 pages in 1 segment. ok oga@
2011-07-05msync has some code that is based on *old* bsd behaviour whereOwain Ainsworth
msync(size == 0) did strange things based on the original mapping segments and trying to manipulate same. This code was copied from the original vm when we moved to uvm. posix says nothing about this behaviour and anything that depends on it is systemically broken, so rip it out and make sys_msync about 30% smaller. ok deraadt@, tedu@, guenther@.
2011-07-05allow option KVA_GUARDPAGES to compile.David Hill
2011-07-04move the specfs code to a place people can see it; ok guenther thib krwTheo de Raadt
2011-07-04Replace inadvertantly removed line.Owain Ainsworth
now we can free vnodes again. ok gcc@, jetpack@, beck@, art@. (the results of this were hilarious)
2011-07-03endodoify UVM_CNT too.Owain Ainsworth
``beat it'' tedu@ the deleteotron
2011-07-03Rip out and burn support for UVM_HIST.Owain Ainsworth
The vm hackers don't use it, don't maintain it and have to look at it all the time. About time this 800 lines of code hit /dev/null. ``never liked it'' tedu@. ariane@ was very happy when i told her i wrote this diff.
2011-07-03The UVM_STRAT defines have been unused since pmemrange was commited.Owain Ainsworth
They may die now. ``kill it'' thib@
2011-07-02rename VFSDEBUG to VFLCKDEBUG;Thordur I. Bjornsson
prompted by tedu@
2011-06-30finish ansi in uvm. ok ariane ogaTed Unangst