Page MenuHomeFreeBSD
Feed Advanced Search

Today

dougm committed rG420e2f8a74df: vnode_pager: simplify loop, avoid overflow (authored by dougm).
vnode_pager: simplify loop, avoid overflow
Sun, Mar 2, 8:15 AM
dougm closed D49200: vnode_pager: simplify loop, avoid overflow.
Sun, Mar 2, 8:14 AM
dougm requested review of D49200: vnode_pager: simplify loop, avoid overflow.
Sun, Mar 2, 1:11 AM

Thu, Feb 27

dougm updated the diff for D48007: vm_object: drop memq field.

Rebase.

Thu, Feb 27, 6:13 PM
dougm committed rG6b33d9dc46c2: vm_page: expose page_alloc_after (authored by dougm).
vm_page: expose page_alloc_after
Thu, Feb 27, 4:57 PM
dougm closed D49103: vm_page: expose page_alloc_after.
Thu, Feb 27, 4:57 PM

Wed, Feb 26

dougm added inline comments to D49103: vm_page: expose page_alloc_after.
Wed, Feb 26, 5:32 PM

Mon, Feb 24

dougm updated the diff for D49103: vm_page: expose page_alloc_after.

In vm_fault.c, correct the initial value of mpred in the case that src_object == dst_object.

Mon, Feb 24, 8:02 PM
dougm updated the diff for D49103: vm_page: expose page_alloc_after.

Replace a vm_page_alloc with vm_page_alloc_after in vm_fault.c.

Mon, Feb 24, 7:32 AM

Sun, Feb 23

dougm updated the diff for D49103: vm_page: expose page_alloc_after.

Undo a comment change.

Sun, Feb 23, 8:57 PM
dougm updated the diff for D49103: vm_page: expose page_alloc_after.

Modify comments, in response to private @alc feedback.

Sun, Feb 23, 8:43 PM

Sat, Feb 22

dougm updated the diff for D49103: vm_page: expose page_alloc_after.

Add comments regarding the choice of pred argument in several alloc_after() calls.

Sat, Feb 22, 10:18 PM
dougm updated the diff for D49103: vm_page: expose page_alloc_after.

Elide stray comment fix.

Sat, Feb 22, 7:00 PM
dougm added inline comments to D49103: vm_page: expose page_alloc_after.
Sat, Feb 22, 6:58 PM
dougm requested review of D49103: vm_page: expose page_alloc_after.
Sat, Feb 22, 6:56 AM
dougm committed rGbb1dc6cf9c36: vm_page: define partial page invalidate (authored by dougm).
vm_page: define partial page invalidate
Sat, Feb 22, 1:25 AM
dougm closed D49096: vm_page: define partial page invalidate.
Sat, Feb 22, 1:25 AM

Fri, Feb 21

dougm reopened D49096: vm_page: define partial page invalidate.
Fri, Feb 21, 10:58 PM
dougm added inline comments to D49096: vm_page: define partial page invalidate.
Fri, Feb 21, 9:33 PM
dougm updated the diff for D49096: vm_page: define partial page invalidate.

Accept some suggestions from @markj.

Fri, Feb 21, 9:33 PM
dougm committed rG2eef41e55385: Revert "vm_page: define partial page invalidate" (authored by dougm).
Revert "vm_page: define partial page invalidate"
Fri, Feb 21, 9:16 PM
dougm added a reverting change for rG5611a38d8185: vm_page: define partial page invalidate: rG2eef41e55385: Revert "vm_page: define partial page invalidate".
Fri, Feb 21, 9:16 PM
dougm added a reverting change for D49096: vm_page: define partial page invalidate: rG2eef41e55385: Revert "vm_page: define partial page invalidate".
Fri, Feb 21, 9:15 PM
dougm committed rG5611a38d8185: vm_page: define partial page invalidate (authored by dougm).
vm_page: define partial page invalidate
Fri, Feb 21, 9:13 PM
dougm closed D49096: vm_page: define partial page invalidate.
Fri, Feb 21, 9:13 PM
dougm requested review of D49096: vm_page: define partial page invalidate.
Fri, Feb 21, 5:40 PM
dougm abandoned D47656: pctrie: avoid pointless null check in lookup.
Fri, Feb 21, 2:29 AM
dougm abandoned D45399: vm_phys: clear pool field for free pages.
Fri, Feb 21, 2:26 AM
dougm abandoned D47680: subr_pctrie: straightline climbing.
Fri, Feb 21, 2:25 AM

Thu, Feb 20

dougm updated the diff for D47695: vm_object: iterate to add pages in reconstruction.

Rebase. Testing shows this degrades performance, still, so dropping reviewers.

Thu, Feb 20, 8:54 AM

Wed, Feb 19

dougm updated the diff for D46895: pctrie: unlock writes without smr.

Rebase.

Wed, Feb 19, 9:28 AM
dougm committed rGc301c5841f9f: pctrie: unlock node store in remove (authored by dougm).
pctrie: unlock node store in remove
Wed, Feb 19, 9:17 AM
dougm closed D49033: pctrie: unlock node store in remove.
Wed, Feb 19, 9:17 AM

Tue, Feb 18

dougm added a comment to D49033: pctrie: unlock node store in remove.

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.

Tue, Feb 18, 8:00 PM
dougm added a comment to D49033: pctrie: unlock node store in remove.

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.

Tue, Feb 18, 7:24 PM

Mon, Feb 17

dougm added reviewers for D49033: pctrie: unlock node store in remove: alc, markj.
Mon, Feb 17, 11:27 PM
dougm requested review of D49033: pctrie: unlock node store in remove.
Mon, Feb 17, 5:59 PM

Sun, Feb 16

dougm committed rG3f850550d606: pctrie: Fix size of printed value in KASSERT (authored by dougm).
pctrie: Fix size of printed value in KASSERT
Sun, Feb 16, 9:28 PM
dougm updated the diff for D46895: pctrie: unlock writes without smr.

Rebase after change to pctrie_iter_remove().

Sun, Feb 16, 7:30 PM
dougm committed rGbba883df5e88: pctrie: iter_remove check from panic to KASSERT (authored by dougm).
pctrie: iter_remove check from panic to KASSERT
Sun, Feb 16, 7:08 PM
dougm closed D49015: pctrie: move iter_remove check from panic to KASSERT.
Sun, Feb 16, 7:08 PM

Sat, Feb 15

dougm updated the diff for D49015: pctrie: move iter_remove check from panic to KASSERT.

Update the comment header on pctrie_remove().

Sat, Feb 15, 6:21 PM
dougm committed rGfa462b8b8ebc: vm_object: drop pointless assignment (authored by dougm).
vm_object: drop pointless assignment
Sat, Feb 15, 6:12 PM
dougm closed D49017: vm_object: drop pointless assignment.
Sat, Feb 15, 6:12 PM

Fri, Feb 14

dougm requested review of D49017: vm_object: drop pointless assignment.
Fri, Feb 14, 10:38 PM
dougm requested review of D49015: pctrie: move iter_remove check from panic to KASSERT.
Fri, Feb 14, 9:48 PM
dougm updated the diff for D46895: pctrie: unlock writes without smr.

Rebase after addition of parent pointers.

Fri, Feb 14, 8:36 AM

Mon, Feb 10

dougm updated the diff for D48007: vm_object: drop memq field.

Rebase.

Mon, Feb 10, 8:29 PM
dougm committed rG90710f4a3473: pctrie: add parent pointer to nodes (authored by dougm).
pctrie: add parent pointer to nodes
Mon, Feb 10, 8:20 PM
dougm closed D48588: pctrie: add parent pointer to nodes.
Mon, Feb 10, 8:20 PM
dougm committed rG2ee9d7dcdbe1: libkern: don't use MPASS (authored by dougm).
libkern: don't use MPASS
Mon, Feb 10, 2:17 PM
dougm committed rG7443532d5eed: drm2: Remove one more implementation of ilog2() (authored by markj).
drm2: Remove one more implementation of ilog2()
Mon, Feb 10, 11:16 AM
dougm committed rG4ed1837853b1: libkern: add ilog2 macro (authored by dougm).
libkern: add ilog2 macro
Mon, Feb 10, 11:16 AM
dougm committed rG16b7da6f7abe: dev/mana: replace power2 function (authored by dougm).
dev/mana: replace power2 function
Mon, Feb 10, 11:16 AM
dougm committed rG7bcc7a0b88cc: libkern: avoid local var in order_base_2() (authored by dougm).
libkern: avoid local var in order_base_2()
Mon, Feb 10, 11:16 AM
dougm committed rG6f309b9d5654: log2: move log2 functions from linuxkpi to libkern (authored by dougm).
log2: move log2 functions from linuxkpi to libkern
Mon, Feb 10, 11:16 AM
dougm added a comment to D48588: pctrie: add parent pointer to nodes.

@alc asks for another set of performance test results, after changes to this patch and updates to main. Here it is:

Mon, Feb 10, 10:20 AM

Sat, Feb 8

dougm updated the diff for D48588: pctrie: add parent pointer to nodes.

Fix overflow in lookup_le.

Sat, Feb 8, 6:12 PM
dougm added inline comments to D48588: pctrie: add parent pointer to nodes.
Sat, Feb 8, 5:37 PM
dougm updated the diff for D48588: pctrie: add parent pointer to nodes.

Remove an extra blank line.

Sat, Feb 8, 5:37 PM

Fri, Feb 7

dougm updated the diff for D48588: pctrie: add parent pointer to nodes.

Use smr to handle the parent pointers, as suggested by @alc.

Fri, Feb 7, 5:57 AM

Mon, Feb 3

dougm added a comment to D45409: vm_phys: reduce touching of page->pool fields.

The description of this patch includes:

Mon, Feb 3, 10:08 PM
dougm committed rGee511f83b386: vm_reserv: use default pool for free page removal. (authored by dougm).
vm_reserv: use default pool for free page removal.
Mon, Feb 3, 9:58 PM
dougm added inline comments to D45409: vm_phys: reduce touching of page->pool fields.
Mon, Feb 3, 9:56 PM
dougm added inline comments to D45409: vm_phys: reduce touching of page->pool fields.
Mon, Feb 3, 9:45 PM
dougm added inline comments to D45409: vm_phys: reduce touching of page->pool fields.
Mon, Feb 3, 9:39 PM
dougm added a comment to D48588: pctrie: add parent pointer to nodes.
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);
 }
Mon, Feb 3, 5:54 PM
dougm updated the diff for D48588: pctrie: add parent pointer to nodes.

Add comments.

Mon, Feb 3, 5:51 PM
dougm added a comment to D48588: pctrie: add parent pointer to nodes.

.

Mon, Feb 3, 7:24 AM

Sat, Feb 1

dougm added a comment to D48588: pctrie: add parent pointer to nodes.

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.

Sat, Feb 1, 3:57 AM

Fri, Jan 31

dougm added a comment to D48588: pctrie: add parent pointer to nodes.

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.

Fri, Jan 31, 10:45 PM

Jan 30 2025

dougm added a comment to D48588: pctrie: add parent pointer to nodes.

With this patch {F108995447} from @alc, additional stats are maintained about several functions the process pages. A test script from @alc repeatedly dumps these stats and makes buildworld. A summary of the stats produced from 14 buildworld cycles, with and without this change in place, is here:

Jan 30 2025, 10:34 AM

Jan 29 2025

dougm committed rG0078df5f0258: vm_phys: reduce touching of page->pool fields (authored by dougm).
vm_phys: reduce touching of page->pool fields
Jan 29 2025, 9:15 AM
dougm closed D45409: vm_phys: reduce touching of page->pool fields.
Jan 29 2025, 9:14 AM

Jan 26 2025

dougm updated the diff for D45409: vm_phys: reduce touching of page->pool fields.

Clear out some obfuscation from vm_reserv_break().

Jan 26 2025, 10:31 AM
dougm updated the diff for D45409: vm_phys: reduce touching of page->pool fields.

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 26 2025, 9:17 AM
dougm added inline comments to D45409: vm_phys: reduce touching of page->pool fields.
Jan 26 2025, 9:13 AM

Jan 23 2025

dougm added a comment to D45409: vm_phys: reduce touching of page->pool fields.

Crash report from pho:

Jan 23 2025, 9:16 PM
dougm reopened D45409: vm_phys: reduce touching of page->pool fields.
Jan 23 2025, 9:14 PM
dougm added a reverting change for rGc669b08bd834: vm_phys: reduce touching of page->pool fields: rG18c47eab727c: Revert "vm_phys: reduce touching of page->pool fields". Pho reports, and I have.
Jan 23 2025, 5:00 PM
dougm committed rG18c47eab727c: Revert "vm_phys: reduce touching of page->pool fields". Pho reports, and I have (authored by dougm).
Revert "vm_phys: reduce touching of page->pool fields". Pho reports, and I have
Jan 23 2025, 5:00 PM
dougm added a reverting change for D45409: vm_phys: reduce touching of page->pool fields: rG18c47eab727c: Revert "vm_phys: reduce touching of page->pool fields". Pho reports, and I have.
Jan 23 2025, 5:00 PM

Jan 21 2025

dougm committed rGc669b08bd834: vm_phys: reduce touching of page->pool fields (authored by dougm).
vm_phys: reduce touching of page->pool fields
Jan 21 2025, 10:46 PM
dougm closed D45409: vm_phys: reduce touching of page->pool fields.
Jan 21 2025, 10:46 PM
dougm updated the diff for D48588: pctrie: add parent pointer to nodes.

Drop PCTRIE_LIMIT; no longer used.

Jan 21 2025, 9:08 PM
dougm requested review of D48588: pctrie: add parent pointer to nodes.
Jan 21 2025, 8:20 PM

Jan 15 2025

dougm added a comment to D48007: vm_object: drop memq field.

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 15 2025, 8:43 AM

Jan 14 2025

dougm added a comment to D48007: vm_object: drop memq field.

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.

Jan 14 2025, 1:01 AM
dougm updated the diff for D48007: vm_object: drop memq field.

Undo the parts of the last change about moving the iterator initialization.

Jan 14 2025, 12:04 AM
dougm added inline comments to D48007: vm_object: drop memq field.
Jan 14 2025, 12:03 AM

Jan 13 2025

dougm updated the diff for D48007: vm_object: drop memq field.

In vm_map.c, have page index jump ahead with a superpage jump-ahead. Initialize the cursor before acquiring a read lock.

Jan 13 2025, 11:05 PM

Jan 12 2025

dougm updated the diff for D45409: vm_phys: reduce touching of page->pool fields.

Fix unused variable problem.

Jan 12 2025, 10:08 PM
dougm updated the diff for D45409: vm_phys: reduce touching of page->pool fields.

Rebase. Resolve a conflict.

Jan 12 2025, 9:23 PM

Jan 9 2025

dougm updated the diff for D48007: vm_object: drop memq field.

Abandon VM_ALLOC_NOCREAT_LT.

Jan 9 2025, 10:45 PM
dougm accepted D48377: vm_pageout: Add a chicken switch for multithreaded PQ_INACTIVE scanning.
Jan 9 2025, 5:45 AM

Jan 8 2025

dougm updated the diff for D48007: vm_object: drop memq field.

Use VM_RADIX_FORALL in kcov_free.

Jan 8 2025, 11:35 PM
dougm updated the diff for D48007: vm_object: drop memq field.

Use VM_RADIX_FORALL_FROM one more place.

Jan 8 2025, 7:08 AM

Jan 7 2025

dougm added a comment to D48007: vm_object: drop memq field.

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.

Jan 7 2025, 8:52 PM
dougm updated the diff for D48007: vm_object: drop memq field.
Jan 7 2025, 8:52 PM
dougm accepted D48376: vm_pageout: Make vmd_oom a bool.
Jan 7 2025, 7:29 PM