summaryrefslogtreecommitdiff
path: root/sys/uvm/uvm_pgflcache.c
AgeCommit message (Collapse)Author
2020-10-18In the current code, CPU_COUNT_FREEPAGES counts pages in the globalchs
freelists AND the per-CPU pgflcache free pages caches, and that is the number of pages that the pagedaemon considers to be available. However, most pages in the pgflcache per-CPU free page caches are NOT actually available for any particular allocation, and thus allocating a page can fail even though the pagedaemon thinks enough pages are available. This change makes CPU_COUNT_FREEPAGES only count pages in the global freelists and not pages in the pgflcache per-CPU free page caches, thus better aligning the pagedaemon's view of how many pages are available with the number of pages that can actually be allocated by any particular request. This fixes a hang that Christos was hitting.
2020-06-14Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s butad
having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
2019-12-30Freelist cache: drain using a high-priority xcall and re-enable now thatad
the pagedaemon starvation problem should be fixed.
2019-12-29It looks like the freelist cache can starve the pagedaemon under certainad
conditions, so temporarily disable it. Will revisit soon.
2019-12-27Fix a comment.ad
2019-12-27Redo the page allocator to perform better, especially on multi-core andad
multi-socket systems. Proposed on tech-kern. While here: - add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.