- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Advanced Search
Today
Thu, Feb 27
Wed, Feb 26
Mon, Feb 24
In vm_fault.c, correct the initial value of mpred in the case that src_object == dst_object.
Replace a vm_page_alloc with vm_page_alloc_after in vm_fault.c.
Sun, Feb 23
Undo a comment change.
Modify comments, in response to private @alc feedback.
Sat, Feb 22
Add comments regarding the choice of pred argument in several alloc_after() calls.
Elide stray comment fix.
Fri, Feb 21
Accept some suggestions from @markj.
Thu, Feb 20
Rebase. Testing shows this degrades performance, still, so dropping reviewers.
Wed, Feb 19
Tue, Feb 18
In D49033#1118416, @markj wrote:In D49033#1118399, @dougm wrote:Results of performing 11 buildworld tests on modified and unmodified sources, using a patch from @alc to instrument cycle counts for several page-related functions. Performance improvements are evident in the opr (vm_object_page_remove) and kmem_unback cases. Some cases that don't do much freeing may have gotten a little worse, for some reason.
Was this on amd64? The difference between the locked and unserialized variants of pctrie_node_store() are pretty minimal there, since x86 memory ordering constraints mean that plain stores already provide the desired semantics, ignoring compiler reordering of memory operations. So, it's not too surprising that the results are a bit inconclusive. On arm64 I'd hope to see a more consistent improvement.
Results of performing 11 buildworld tests on modified and unmodified sources, using a patch from @alc to instrument cycle counts for several page-related functions. Performance improvements are evident in the opr (vm_object_page_remove) and kmem_unback cases. Some cases that don't do much freeing may have gotten a little worse, for some reason.
Mon, Feb 17
Sun, Feb 16
Rebase after change to pctrie_iter_remove().
Sat, Feb 15
Update the comment header on pctrie_remove().
Fri, Feb 14
Rebase after addition of parent pointers.
Mon, Feb 10
@alc asks for another set of performance test results, after changes to this patch and updates to main. Here it is:
Sat, Feb 8
Fix overflow in lookup_le.
Remove an extra blank line.
Fri, Feb 7
Use smr to handle the parent pointers, as suggested by @alc.
Mon, Feb 3
The description of this patch includes:
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c index 0090904785ab..694dc01344ea 100644 --- a/sys/vm/vm_glue.c +++ b/sys/vm/vm_glue.c @@ -440,7 +440,7 @@ vm_thread_kstack_arena_release(void *arena, vmem_addr_t addr, vmem_size_t size) * Create the kernel stack for a new thread. */ static vm_offset_t -vm_thread_stack_create(struct domainset *ds, int pages) +_vm_thread_stack_create(struct domainset *ds, int pages) { vm_page_t ma[KSTACK_MAX_PAGES]; struct vm_domainset_iter di; @@ -484,6 +484,28 @@ vm_thread_stack_create(struct domainset *ds, int pages) return (0); }
Add comments.
Sat, Feb 1
How do these changes affect the various counts? Some of these counts change because iterators are used, and some change because lookup_le now uses parent pointers.
Fri, Jan 31
The same information as posted before, reordered. For most of the counters, the change to use parent pointers reduces the cycles/call in most of the builds.
Jan 30 2025
Jan 29 2025
Jan 26 2025
Clear out some obfuscation from vm_reserv_break().
Reposting the last version before review and commit. It passes the mmap41.sh stress test, but @alc expresses skepticism about what's happening in vm_reserv_break.
Jan 23 2025
Crash report from pho:
Jan 21 2025
Drop PCTRIE_LIMIT; no longer used.
Jan 15 2025
In D48007#1105192, @markj wrote:One other performance-related detail I'm wondering about is, we check the iterator limit twice when stepping: once before looking up a leaf, and once after finding one. I believe the latter check is sufficient for correctness. If so, are we making the right tradeoff in checking twice instead of once?
Jan 14 2025
In D48007#1105192, @markj wrote:In D48007#1103103, @dougm wrote:In D48007#1102734, @markj wrote:Are there still some concerns about the overhead of switching to iterators in some of the already-committed changes? I've lost track a bit, I'm sorry.
@alc has concerns. He's reported performance worsened a bit by some of the page management changes already made, and worsened a bit by some other changes that have been under review for a while.
Do we have a benchmark to experiment with, either a workload to test the kernel or a standalone userspace program embedding subr_pctrie.o? I wrote a patch which tries to add a fast path to pctrie_iter_step/next, wherein pctrie.h inlines iteration when the top-most node in the iterator contains a run of successive leaf values, and falls back to pctrie_iter_lookup_ge() to look up new nodes or handle holes. So far I've only tested it to check correctness, but I wonder if it would help performance in the case where a VM object is densely populated.
Undo the parts of the last change about moving the iterator initialization.
Jan 13 2025
In vm_map.c, have page index jump ahead with a superpage jump-ahead. Initialize the cursor before acquiring a read lock.
Jan 12 2025
Fix unused variable problem.
Rebase. Resolve a conflict.
Jan 9 2025
Abandon VM_ALLOC_NOCREAT_LT.
Jan 8 2025
Use VM_RADIX_FORALL in kcov_free.
Use VM_RADIX_FORALL_FROM one more place.
Jan 7 2025
In D48007#1102734, @markj wrote:Doug, how would you like to proceed with the patch? Since quite a few pieces of it are independent, I imagine they can be reviewed and peeled off one by one, especially in areas that aren't performance-critical.