Page MenuHomeFreeBSD

alc (Alan Cox)
User

Projects

User Details

User Since
Dec 14 2014, 5:52 AM (518 w, 4 d)

Recent Activity

Yesterday

alc added inline comments to D47678: arm64: Implement pmap_map_io_transient.
Wed, Nov 20, 8:22 AM
alc added inline comments to D47678: arm64: Implement pmap_map_io_transient.
Wed, Nov 20, 7:40 AM
alc accepted D47678: arm64: Implement pmap_map_io_transient.
Wed, Nov 20, 7:30 AM

Sun, Nov 17

alc committed rG8c8d36b9d172: vm: static-ize vm_page_alloc_after() (authored by alc).
vm: static-ize vm_page_alloc_after()
Sun, Nov 17, 6:20 PM
alc closed D47644: vm: static-ize vm_page_alloc_after().
Sun, Nov 17, 6:20 PM
alc requested review of D47644: vm: static-ize vm_page_alloc_after().
Sun, Nov 17, 4:53 AM

Sat, Nov 16

alc added inline comments to D47181: vm_reserv: Introduce vm_reserv_populate_range.
Sat, Nov 16, 11:01 PM
alc accepted D47036: vm_page: iterators in alloc_contig_domain.

Cycles to perform a 2MB aligned vm_page_alloc_contig() for shm_create_largepage():

x base
+ iter
+------------------------------------------------------------------------------+
|  +                                                             x             |
|  ++                                                            x             |
|  ++                                                           xx             |
| ++++        +                                                xxx xx         x|
||_MA___|                                                     |__MA____|       |
+------------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x  10         16813         17866       16989.5       17074.6     294.94715
+  10         12691         13496         12759       12833.1     239.58643
Difference at 95.0% confidence
        -4241.5 +/- 252.466
        -24.841% +/- 1.2701%
        (Student's t, pooled s = 268.696)
Sat, Nov 16, 7:05 PM

Wed, Nov 13

alc accepted D47526: swap_pager: Ensure that swapoff puts swapped-in pages in page queues.
Wed, Nov 13, 6:45 AM

Tue, Nov 12

alc added a comment to D47526: swap_pager: Ensure that swapoff puts swapped-in pages in page queues.

Is this related to the KASSERT that was recently added to vm_object_terminate_single_page?

Tue, Nov 12, 7:36 PM

Wed, Oct 30

alc 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.

I had a comment, and there should be one here for consistency with all the other little functions in this file.

I agree that we should have a sensible order to things, and that we don't. I suggest non-iter before iter, then insert before lookup before remove before replace before disposal, then lookup == before lookup >= before lookup <=.

Wed, Oct 30, 6:44 AM

Sun, Oct 27

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

To be clear, there is no question that this function will get used, so adding it sooner, rather than later, would be okay with me.

Sun, Oct 27, 8:47 PM
alc accepted D47046: vm_radix: Add iter lookup_le interface.

I'm looking at patches from both you and @dougm that define this function. However, each of you adds it in a different location within the file. :-)

Sun, Oct 27, 8:44 PM
alc closed D47298: vm: Eliminate unnecessary lock asserts.
Sun, Oct 27, 7:08 PM
alc committed rG2001bef84ba6: vm: Eliminate unnecessary lock asserts (authored by alc).
vm: Eliminate unnecessary lock asserts
Sun, Oct 27, 7:07 PM
alc requested review of D47298: vm: Eliminate unnecessary lock asserts.
Sun, Oct 27, 5:50 PM

Sat, Oct 26

alc added a comment to D47036: vm_page: iterators in alloc_contig_domain.

Incorporating D47277 has increased the average number of cycles to perform vm_page_alloc() to 1325.

Sat, Oct 26, 8:27 PM
alc added a comment to D47036: vm_page: iterators in alloc_contig_domain.

Incorporating D47277 yielded the lowest average cycles in vm_page_alloc_contig() that I've seen.

Sat, Oct 26, 7:56 PM
alc added a comment to D47036: vm_page: iterators in alloc_contig_domain.

Switching from ..._lookup_le() to ..._lookup_lt() increased the average number of cycles in vm_page_alloc().

Sat, Oct 26, 6:23 PM
alc added a comment to D47036: vm_page: iterators in alloc_contig_domain.

D47207 has reduced the average number of cycles to perform vm_page_alloc() from 1295 to 1265.

Sat, Oct 26, 6:09 PM

Oct 19 2024

alc added inline comments to D47036: vm_page: iterators in alloc_contig_domain.
Oct 19 2024, 5:34 PM

Oct 18 2024

alc added inline comments to D47181: vm_reserv: Introduce vm_reserv_populate_range.
Oct 18 2024, 10:32 PM

Oct 15 2024

alc added inline comments to D47048: vm_reserv: Introduce vm_reserv_alloc_npages.
Oct 15 2024, 8:41 PM

Oct 11 2024

alc accepted D47064: swap_pager: swapoff detecting object death.
Oct 11 2024, 5:42 PM
alc added inline comments to D47064: swap_pager: swapoff detecting object death.
Oct 11 2024, 4:48 PM

Oct 10 2024

alc accepted D47021: vm_radix: add iter insert and remove interfaces.
Oct 10 2024, 3:58 PM

Oct 9 2024

alc accepted D47018: shm_alloc(): cleanup.
Oct 9 2024, 8:10 AM

Oct 8 2024

alc added inline comments to D46895: pctrie: unlock writes without smr.
Oct 8 2024, 5:06 PM
alc added a comment to D46848: swap_pager: use swblk iterators in swp_pager_meta_build.

The test plan should say what the units are.

Oct 8 2024, 8:04 AM
alc accepted D46848: swap_pager: use swblk iterators in swp_pager_meta_build.
Oct 8 2024, 8:03 AM

Oct 7 2024

alc added inline comments to D46848: swap_pager: use swblk iterators in swp_pager_meta_build.
Oct 7 2024, 4:24 PM
alc accepted D46974: swap_pager: rename iter init functions.
Oct 7 2024, 4:05 PM
alc accepted D46978: vm_meter: Add counter for NOFREE pages.
Oct 7 2024, 3:49 PM
alc added a comment to D46848: swap_pager: use swblk iterators in swp_pager_meta_build.

Can you separate out the function renames, and commit that first.

Oct 7 2024, 8:08 AM
alc added a comment to D46945: vm_object: Assert that managed pages are on pagequeues when freeing.
In D46945#1070648, @kib wrote:
In D46945#1070436, @kib wrote:
In D46945#1070223, @kib wrote:

Consider vm_page_grab_valid(). It allocates a page, and tries to read the page' content from pager. If the pager failed, the page is freed. I do not believe that the freed invalid page is enqueued there.

But there the page is freed immediately, not during object teardown, where the assertion is added.

The situation where invalid page was left on the object queue was quite common until recently.

Sure, but even in that case the page must still be added to a page queue, otherwise it is leaked until the VM object is destroyed. The assertion is meant to catch exactly this kind of bug.

Yes and yes. But it happens (happen), and the assert is too late to catch the moment.

I do not object against this change, only pointing out my experience.

Oct 7 2024, 8:02 AM

Oct 6 2024

alc added inline comments to D46848: swap_pager: use swblk iterators in swp_pager_meta_build.
Oct 6 2024, 8:17 PM
alc accepted D46968: pctrie: don't assign to root.
Oct 6 2024, 8:07 PM
alc added a comment to D46895: pctrie: unlock writes without smr.

There are too many things going on here at once. Can you generate a simple patch that fixes the correctness bug that Mark pointed out.

Oct 6 2024, 7:40 PM

Oct 5 2024

alc added inline comments to D46848: swap_pager: use swblk iterators in swp_pager_meta_build.
Oct 5 2024, 8:13 PM
alc added inline comments to D46848: swap_pager: use swblk iterators in swp_pager_meta_build.
Oct 5 2024, 5:22 PM

Oct 4 2024

alc added inline comments to D46848: swap_pager: use swblk iterators in swp_pager_meta_build.
Oct 4 2024, 3:59 PM
alc accepted D46943: vm_page: Use atomic loads for cmpset loops.
Oct 4 2024, 3:39 PM
alc accepted D46879: tmpfs: check residence in data_locked.
Oct 4 2024, 7:22 AM
alc accepted D46879: tmpfs: check residence in data_locked.
Oct 4 2024, 6:19 AM

Oct 3 2024

alc accepted D46885: vm_kern: Use VM_ALLOC_NOFREE when allocating 'zero_region' page.
Oct 3 2024, 3:24 PM

Sep 29 2024

alc accepted D46620: swap_pager: use pctrie iterators.
Sep 29 2024, 4:27 PM
alc added inline comments to D46620: swap_pager: use pctrie iterators.
Sep 29 2024, 8:06 AM
alc accepted D46620: swap_pager: use pctrie iterators.
Sep 29 2024, 7:56 AM
alc added a comment to D46620: swap_pager: use pctrie iterators.

With this patch:
{F96917947}
I compared the cycles consumed freeing 1000000 pages without and with this patch. The results from ministat:

x old
+ new
+------------------------------------------------------------------------------+
|    +   ++ +++ ++   ++ +                              x x x  x x  x x x   x  +|
||_____________M____A__________________|                  |_____A_____|        |
+------------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x  12      11315490      11602387      11444362      11447090     88533.923
+  12      10575194      11651487      10713880      10792243     283272.81
Difference at 95.0% confidence
        -654847 +/- 177689
        -5.72064% +/- 1.54457%
        (Student's t, pooled s = 209859)
Sep 29 2024, 7:53 AM
alc added inline comments to D46620: swap_pager: use pctrie iterators.
Sep 29 2024, 6:59 AM

Sep 24 2024

alc accepted D46620: swap_pager: use pctrie iterators.

I don't see any correctness problems.

Sep 24 2024, 5:46 PM

Sep 23 2024

alc accepted D46754: swap_pager: update meta_free comment.
Sep 23 2024, 6:22 PM
alc added a comment to D46753: swap_pager: deoptimize swapoff_object.

No, this is not what @markj meant.

Sep 23 2024, 1:46 AM

Sep 22 2024

alc added inline comments to D46620: swap_pager: use pctrie iterators.
Sep 22 2024, 5:29 PM

Sep 20 2024

alc added inline comments to D46686: jemalloc: set LG_VADDR to 64 on amd64.
Sep 20 2024, 4:30 AM

Sep 19 2024

alc accepted D46699: vm: Use VM_ALLOC_NOFREE when allocating bogus_page.
Sep 19 2024, 3:45 PM

Sep 16 2024

alc accepted D46682: swap_pager: enhance meta_transfer comments.
Sep 16 2024, 5:29 AM

Sep 15 2024

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

This is much better.

Sep 15 2024, 6:10 PM
alc added inline comments to D46619: RLIMIT_PIPE.
Sep 15 2024, 6:03 PM
alc accepted D46624: arm64: Support mapping a 52-bit physical adddress.
Sep 15 2024, 5:56 PM
alc added inline comments to D46629: swap_pager: handle swblk being freed while lock dropped in meta_transfer .
Sep 15 2024, 5:39 PM
alc accepted D46678: vm_map: add vm_map_find_locked(9).

Just out of curiosity, is this a first step in a larger set of changes?

Sep 15 2024, 5:31 PM
alc accepted D46629: swap_pager: handle swblk being freed while lock dropped in meta_transfer .
Sep 15 2024, 5:53 AM

Sep 14 2024

alc added inline comments to D46629: swap_pager: handle swblk being freed while lock dropped in meta_transfer .
Sep 14 2024, 5:49 PM

Sep 10 2024

alc accepted D46395: arm64: Make L1_BLOCKS_SUPPORTED dynamic.
Sep 10 2024, 6:39 PM

Sep 5 2024

alc accepted D46539: vm_phys: hide alloc_freelist_pages.

The caller in vm_page.c to the formerly public function was eliminated this past summer.

Sep 5 2024, 4:07 PM

Aug 31 2024

alc accepted D46394: arm64: Make shareability attributes dynamic.
Aug 31 2024, 4:44 AM
alc accepted D46466: arm64: Remove ATTR_DEFAULT from pte.h.
Aug 31 2024, 4:33 AM

Aug 23 2024

alc added inline comments to D46394: arm64: Make shareability attributes dynamic.
Aug 23 2024, 4:43 PM
alc accepted D46395: arm64: Make L1_BLOCKS_SUPPORTED dynamic.
Aug 23 2024, 5:10 AM
alc accepted D46393: arm64: Remove TCR_CACHE_ATTRS and TCR_SMP_ATTRS.
Aug 23 2024, 5:02 AM
alc accepted D46392: arm64: Add the tcr_el2 ds field.
Aug 23 2024, 4:58 AM

Aug 20 2024

alc accepted D46381: buf_ring: Remove unneeded memory barriers.
Aug 20 2024, 6:03 PM
alc accepted D46380: buf_ring: Use atomic accesses for head/tail values.
Aug 20 2024, 5:55 PM

Aug 4 2024

alc accepted D46198: vm: Document M_NEVERFREED and VM_ALLOC_NOFREE.
Aug 4 2024, 11:37 PM
alc committed rGfa290859fa63: vm: Assert that pagesizes[] is sorted (authored by alc).
vm: Assert that pagesizes[] is sorted
Aug 4 2024, 8:08 PM

Aug 3 2024

alc added a comment to D46217: vm_pageout: simplify pageout_cluster.

For the most part, I am fine with this. Personally, I would prefer to see the NULL check remain in the caller, and I dislike the ok2cluster in vm_pageout_ok2cluster.

Aug 3 2024, 6:52 AM
alc updated subscribers of D46215: imgact_elf: Optimize pagesizes[] loop.
In D46215#1053727, @kib wrote:

IMO it could be a function like vm_pagesizes_check() called directly from pmap_init()s?

Aug 3 2024, 6:47 AM

Aug 2 2024

alc closed D46215: imgact_elf: Optimize pagesizes[] loop.
Aug 2 2024, 11:36 PM
alc committed rGf076dd3ef02d: imgact_elf: Optimize pagesizes[] loop (authored by alc).
imgact_elf: Optimize pagesizes[] loop
Aug 2 2024, 11:36 PM
alc added a comment to D46215: imgact_elf: Optimize pagesizes[] loop.

As I wrote this patch, I thought about adding a sanity check on pagesizes[] to the machine-independent layer. Thoughts on this? pmap_init() happens fairly late with only vm_pager_init() coming after it in vm_mem_init(), and that does not seem like a natural place for it.

Aug 2 2024, 8:17 PM
alc requested review of D46215: imgact_elf: Optimize pagesizes[] loop.
Aug 2 2024, 8:09 PM
alc committed rGf6ed52c1f010: vm: Stop reducing vm_pageout_page_count at startup (authored by alc).
vm: Stop reducing vm_pageout_page_count at startup
Aug 2 2024, 7:43 PM
alc closed D46206: vm: Stop reducing vm_pageout_page_count.
Aug 2 2024, 7:43 PM
alc added a comment to D46206: vm: Stop reducing vm_pageout_page_count.
In D46206#1053585, @kib wrote:

BTW, I believe that the current size (32) was tailored for the old MAXPHYS 128k value.

Aug 2 2024, 5:57 PM
alc updated the diff for D46206: vm: Stop reducing vm_pageout_page_count.

Tweak comment.

Aug 2 2024, 7:43 AM
alc updated the diff for D46206: vm: Stop reducing vm_pageout_page_count.

Convert vm_pageout_page_count to a constant.

Aug 2 2024, 7:28 AM
alc abandoned D46210: vm: Convert vm_pageout_page_count to a constant.

I'm just going to combine this with the previous patch.

Aug 2 2024, 7:22 AM
alc requested review of D46210: vm: Convert vm_pageout_page_count to a constant.
Aug 2 2024, 6:29 AM

Aug 1 2024

alc added a comment to D46206: vm: Stop reducing vm_pageout_page_count.

Should we also const-ify vm_pageout_page_count?

Aug 1 2024, 7:33 PM
alc requested review of D46206: vm: Stop reducing vm_pageout_page_count.
Aug 1 2024, 7:32 PM
alc added inline comments to D46198: vm: Document M_NEVERFREED and VM_ALLOC_NOFREE.
Aug 1 2024, 4:52 PM
alc added inline comments to D46198: vm: Document M_NEVERFREED and VM_ALLOC_NOFREE.
Aug 1 2024, 4:45 PM
alc accepted D46199: malloc(9): Reject malloc(M_NEVERFREED).
Aug 1 2024, 6:31 AM

Jul 29 2024

alc accepted D46153: buf_ring: Remove old arm-only dequeue code.
Jul 29 2024, 12:51 AM
alc accepted D46150: buf_ring: Consistently use atomic_*_32.
Jul 29 2024, 12:09 AM
alc accepted D46149: buf_ring: Support DEBUG_BUFRING in userspace.
Jul 29 2024, 12:08 AM
alc accepted D46148: buf_ring: Remove PREFETCH_DEFINED.
Jul 29 2024, 12:00 AM

Jul 28 2024

alc accepted D45863: vm: Introduce reservation-aware NOFREE page allocation routine.

I was not entirely sure where to place the nofreeq struct within struct vm_domain, so please let me know if you think there's a better position w.r.t. cache usage.

Jul 28 2024, 6:47 PM

Jul 27 2024

alc accepted D46117: vm: Remove kernel stack swapping support, part 6.
Jul 27 2024, 12:17 AM