Page MenuHomeFreeBSD

dougm (Doug Moore)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 30 2017, 3:18 PM (394 w, 3 d)

Tauist. Bit twiddler. Advocate for continued logarithms.

Recent Activity

Wed, Jan 15

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?

Wed, Jan 15, 8:43 AM

Tue, Jan 14

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.

Tue, Jan 14, 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.

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

Mon, Jan 13

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.

Mon, Jan 13, 11:05 PM

Sun, Jan 12

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

Fix unused variable problem.

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

Rebase. Resolve a conflict.

Sun, Jan 12, 9:23 PM

Thu, Jan 9

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

Abandon VM_ALLOC_NOCREAT_LT.

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

Wed, Jan 8

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

Use VM_RADIX_FORALL in kcov_free.

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

Use VM_RADIX_FORALL_FROM one more place.

Wed, Jan 8, 7:08 AM

Tue, Jan 7

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.

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

Mon, Jan 6

dougm updated the diff for D48007: vm_object: drop memq field.
Mon, Jan 6, 8:54 PM
dougm added inline comments to D48007: vm_object: drop memq field.
Mon, Jan 6, 7:26 PM

Fri, Jan 3

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

Define and use VM_RADIX_FOREACH macros. Initialize a couple of iterators before acquiring read locks.

Fri, Jan 3, 11:16 PM

Dec 18 2024

dougm added a comment to D47044: pctrie: Introduce batch pctrie insertion routines.

This is a challenging patch to review, and every time I start to review it, I want to rewrite it to make it clearer. I'll hold off one more time. But I really don't think that enums or switches with fallthroughs really help much.

Dec 18 2024, 5:20 AM

Dec 10 2024

dougm added inline comments to D47044: pctrie: Introduce batch pctrie insertion routines.
Dec 10 2024, 11:02 PM

Dec 9 2024

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

A code reformat to (slightly) reduce the diff size.

Dec 9 2024, 8:44 PM
dougm requested review of D48007: vm_object: drop memq field.
Dec 9 2024, 8:06 PM

Dec 8 2024

dougm updated the diff for D47863: vm_page: remove iter before iter {free, remove}.
Dec 8 2024, 9:28 PM
dougm committed rGc1d12b925b2c: vm_page: pass page to iter_remove (authored by dougm).
vm_page: pass page to iter_remove
Dec 8 2024, 8:31 PM
dougm closed D47730: vm_page: pass page to iter_remove.
Dec 8 2024, 8:31 PM

Dec 7 2024

dougm removed a reviewer for D47656: pctrie: avoid pointless null check in lookup: alc.
Dec 7 2024, 7:18 PM

Dec 5 2024

dougm accepted D47892: sys/vm: remove support for growing-up stacks.
Dec 5 2024, 7:14 AM
dougm added inline comments to D47892: sys/vm: remove support for growing-up stacks.
Dec 5 2024, 4:13 AM

Dec 4 2024

dougm added inline comments to D47892: sys/vm: remove support for growing-up stacks.
Dec 4 2024, 6:57 AM

Dec 2 2024

dougm requested review of D47863: vm_page: remove iter before iter {free, remove}.
Dec 2 2024, 7:15 AM

Dec 1 2024

dougm added a comment to D47680: subr_pctrie: straightline climbing.

The timing results for 8-10 buildworlds, with and without this patch. Without:

Dec 1 2024, 4:18 AM

Nov 29 2024

dougm updated the diff for D47680: subr_pctrie: straightline climbing.

Drop the vm_page_iter_free() parts committed elsewhere.

Nov 29 2024, 9:30 PM
dougm accepted D47829: vm: Micro-optimize page rename.
Nov 29 2024, 6:58 PM
dougm added inline comments to D47829: vm: Micro-optimize page rename.
Nov 29 2024, 6:16 PM

Nov 28 2024

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

Add a panic when a page duplication is found. Match param names between definition and declaration.

Nov 28 2024, 6:44 PM
dougm added inline comments to D47829: vm: Micro-optimize page rename.
Nov 28 2024, 6:39 PM
dougm added a comment to D47829: vm: Micro-optimize page rename.

Comments in vm_reserv.c need to be updated to reflect this change.

Nov 28 2024, 5:12 PM

Nov 27 2024

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

Define inline pctrie_setpop() to flip popmap bits from 0 to 1 and assert that they have become set. Use it in 3 places.

Nov 27 2024, 8:52 PM

Nov 26 2024

dougm added inline comments to D47044: pctrie: Introduce batch pctrie insertion routines.
Nov 26 2024, 11:06 PM
dougm committed rG40c1672e886b: swap_pager: fix seek_data with invalid first page (authored by dougm).
swap_pager: fix seek_data with invalid first page
Nov 26 2024, 6:16 PM
dougm closed D47767: swap_pager: fix seek_data with invalid first page.
Nov 26 2024, 6:15 PM
dougm added a reviewer for D47767: swap_pager: fix seek_data with invalid first page: markj.
Nov 26 2024, 6:06 PM
dougm requested review of D47767: swap_pager: fix seek_data with invalid first page.
Nov 26 2024, 6:06 PM
dougm added inline comments to D47744: pctrie: Add a function for calculating the number of allocations for inserting a range of keys.
Nov 26 2024, 10:16 AM

Nov 25 2024

dougm requested review of D47730: vm_page: pass page to iter_remove.
Nov 25 2024, 8:12 AM
dougm committed rGff4c19bb5427: vm_page: pass page to iter_free (authored by dougm).
vm_page: pass page to iter_free
Nov 25 2024, 8:05 AM
dougm closed D47727: vm_page: pass page to iter_free.
Nov 25 2024, 8:05 AM
dougm updated the diff for D47727: vm_page: pass page to iter_free.

Remove changes to vm_page_iter_remove.

Nov 25 2024, 7:33 AM

Nov 24 2024

dougm updated the diff for D47727: vm_page: pass page to iter_free.

Pass the removed page to vm_page_iter_remove, and functions that use it. Update comments. Reorder declarations.

Nov 24 2024, 11:32 PM
dougm updated the diff for D47727: vm_page: pass page to iter_free.
Nov 24 2024, 8:45 PM
dougm requested review of D47727: vm_page: pass page to iter_free.
Nov 24 2024, 8:07 PM
dougm updated the diff for D47680: subr_pctrie: straightline climbing.

Apply suggestions from feedback on D46724 to improve performance.

Nov 24 2024, 9:30 AM

Nov 23 2024

dougm requested review of D47718: vm_map: replace list links with iterator.
Nov 23 2024, 10:37 PM
dougm updated the diff for D47695: vm_object: iterate to add pages in reconstruction.

Drop the fix that @kib has committed separately.

Nov 23 2024, 10:08 AM

Nov 21 2024

dougm committed rG38e3125d6df9: device_pager: user iterators to free device pages (authored by dougm).
device_pager: user iterators to free device pages
Nov 21 2024, 9:51 PM
dougm closed D47692: device_pager: user iterators to free device pages.
Nov 21 2024, 9:51 PM
dougm requested review of D47695: vm_object: iterate to add pages in reconstruction.
Nov 21 2024, 8:39 AM
dougm updated the diff for D47692: device_pager: user iterators to free device pages.

Drop length argument to cdev_mgtdev_pager_free_pages().

Nov 21 2024, 6:31 AM
dougm updated the diff for D47692: device_pager: user iterators to free device pages.

Fix typo in tegra_bo.c.

Nov 21 2024, 4:19 AM

Nov 20 2024

dougm requested review of D47692: device_pager: user iterators to free device pages.
Nov 20 2024, 11:45 PM
dougm committed rG18a8f4e586b1: vm_page: correct page iterator patch (authored by dougm).
vm_page: correct page iterator patch
Nov 20 2024, 6:05 PM
dougm committed rG5b78ff830791: vm_page: remove pages with iterators (authored by dougm).
vm_page: remove pages with iterators
Nov 20 2024, 5:56 PM
dougm closed D46724: vm_object: use pciters to remove pages.
Nov 20 2024, 5:56 PM
dougm updated the diff for D47680: subr_pctrie: straightline climbing.
Nov 20 2024, 7:12 AM
dougm requested review of D47680: subr_pctrie: straightline climbing.
Nov 20 2024, 4:57 AM

Nov 18 2024

dougm updated the diff for D47656: pctrie: avoid pointless null check in lookup.
Nov 18 2024, 11:06 PM
dougm updated the diff for D47656: pctrie: avoid pointless null check in lookup.

Use vm_radix_iter_found in swap_pager.c. Tweak the pctrie.h implement to avoid a pointless null check.

Nov 18 2024, 7:33 AM
dougm requested review of D47656: pctrie: avoid pointless null check in lookup.
Nov 18 2024, 5:19 AM

Nov 17 2024

dougm updated the summary of D46724: vm_object: use pciters to remove pages.
Nov 17 2024, 10:41 PM
dougm updated the diff for D46724: vm_object: use pciters to remove pages.

Avoid the object != NULL check in vm_page_iter_free.

Nov 17 2024, 11:00 AM
dougm accepted D47644: vm: static-ize vm_page_alloc_after().
Nov 17 2024, 6:15 AM

Nov 16 2024

dougm committed rGf334c0b8b3cb: vm_page: use iterators in alloc_contig_domain (authored by dougm).
vm_page: use iterators in alloc_contig_domain
Nov 16 2024, 7:17 PM
dougm closed D47036: vm_page: iterators in alloc_contig_domain.
Nov 16 2024, 7:17 PM
dougm updated the summary of D46724: vm_object: use pciters to remove pages.
Nov 16 2024, 6:53 PM
dougm updated the diff for D47036: vm_page: iterators in alloc_contig_domain.

alc update 11/16.

Nov 16 2024, 6:22 PM

Nov 15 2024

dougm updated the diff for D46724: vm_object: use pciters to remove pages.

Drop the bool argument from vm_page_free_toq. Turn vm_page_free_toq into a wrapper for the real implementation function, to which it passes 'true' as the bool argument.

Nov 15 2024, 11:08 PM
dougm added inline comments to D46724: vm_object: use pciters to remove pages.
Nov 15 2024, 6:17 PM
dougm updated the diff for D46724: vm_object: use pciters to remove pages.

Update some comments.

Nov 15 2024, 6:16 PM

Nov 14 2024

dougm abandoned D47271: pctrie: add function to transfer between pctries.
Nov 14 2024, 4:55 AM
dougm updated the diff for D46724: vm_object: use pciters to remove pages.

Remove changes to subr_pctrie.c. Pass the iterator to vm_page_rename() to allow the page to be removed with the iterator and the appropriate page number.

Nov 14 2024, 4:54 AM

Nov 13 2024

dougm updated the diff for D46724: vm_object: use pciters to remove pages.

Rename vm_page_object_remove.

Nov 13 2024, 6:54 PM
dougm added inline comments to D46724: vm_object: use pciters to remove pages.
Nov 13 2024, 8:54 AM
dougm updated the diff for D46724: vm_object: use pciters to remove pages.

Rearrange into vm_page_iter_remove and vm_page_iter_free iter-based substitutes for the iter-less equivalents.

Nov 13 2024, 8:49 AM
dougm accepted D47526: swap_pager: Ensure that swapoff puts swapped-in pages in page queues.
Nov 13 2024, 8:11 AM

Nov 9 2024

dougm committed rGf3895e983ce8: vm_radix: Add iter lookup_le interface (authored by dougm).
vm_radix: Add iter lookup_le interface
Nov 9 2024, 7:38 PM
dougm closed D47046: vm_radix: Add iter lookup_le interface.
Nov 9 2024, 7:37 PM
dougm added a comment to D46895: pctrie: unlock writes without smr.

Performance test:
Ran 12 buildworlds, without and with this change, on an amd64 machine to verify it did not harm performance there.
Without:

Nov 9 2024, 8:29 AM

Nov 5 2024

dougm added inline comments to D47044: pctrie: Introduce batch pctrie insertion routines.
Nov 5 2024, 11:01 PM

Nov 4 2024

dougm added inline comments to D47044: pctrie: Introduce batch pctrie insertion routines.
Nov 4 2024, 7:55 PM
dougm updated the diff for D46895: pctrie: unlock writes without smr.

Rebase. Undo some function reordering that makes this reviewer easier, even if it preserves some odd ordering.

Nov 4 2024, 7:35 PM
dougm committed rGa905c589be67: pctrie: breakup pctrie_root_store (authored by dougm).
pctrie: breakup pctrie_root_store
Nov 4 2024, 7:25 PM
dougm closed D47347: pctrie: breakup pctrie_root_store.
Nov 4 2024, 7:25 PM
dougm added inline comments to D47044: pctrie: Introduce batch pctrie insertion routines.
Nov 4 2024, 7:19 PM

Nov 3 2024

dougm added inline comments to D47044: pctrie: Introduce batch pctrie insertion routines.
Nov 3 2024, 9:10 AM

Nov 1 2024

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

Rebase.

Nov 1 2024, 4:14 PM
dougm committed rGb2dbd3d3ae33: pctrie: reduce code duplication in PCTRIE_REMOVE_* (authored by dougm).
pctrie: reduce code duplication in PCTRIE_REMOVE_*
Nov 1 2024, 4:13 PM
dougm closed D47320: pctrie: reduce code duplication in PCTRIE_REMOVE_*.
Nov 1 2024, 4:12 PM

Oct 30 2024

dougm requested review of D47347: pctrie: breakup pctrie_root_store.
Oct 30 2024, 10:24 PM
dougm updated the diff for D45409: vm_phys: reduce touching of page->pool fields.

Refresh.

Oct 30 2024, 6:39 PM
dougm added a comment to D47044: pctrie: Introduce batch pctrie insertion routines.

If you're inserting batch [a,b,...,y.z], and if you began by inserting a and z with normal iter-insert, then your BATCH_SPLIT case would never happen and some of the complexity of batch_insert could be reduced. True or false?

Oct 30 2024, 3:12 AM

Oct 28 2024

dougm added a comment to D47046: vm_radix: Add iter lookup_le interface.

In D47036, I put it after vm_radix_iter_step, mostly because PCTRIE_ITER_LOOKUP_LE comes shortly after PCTRIE_ITER_STEP_GE in pctrie.h. 'step' and 'jump' are built on top of lookup_ge, so I kept them grouped with lookup_ge.

Oct 28 2024, 10:27 PM