Page MenuHomeFreeBSD

jeff (Jeffrey Roberson)
User

Projects

User Details

User Since
Aug 6 2017, 12:45 AM (114 w, 5 d)

Recent Activity

Wed, Oct 16

jeff added inline comments to D21597: Drop the object lock in vfs_bio and cluster.
Wed, Oct 16, 7:02 PM
jeff added a comment to D22056: Port D22041/r353622 to sparc64 and arm v4..

I can do arm this afternoon.

Wed, Oct 16, 6:59 PM
jeff added a comment to D21597: Drop the object lock in vfs_bio and cluster.

Any comment on the MIGHTBEDIRTY check?

Wed, Oct 16, 6:41 PM
jeff accepted D22056: Port D22041/r353622 to sparc64 and arm v4..

Thank you.

Wed, Oct 16, 6:39 PM
jeff added a comment to D22040: Further constrain the use of per-CPU page caches..

On the other hand this means you'd need 1TB of ram to run with 256 processor cores threads which is a possible amount for a two socket system but still a somewhat unlikely amount of ram. Netflix ran into this on some of their test systems and had to disable the check.

Wed, Oct 16, 6:36 PM

Tue, Oct 15

jeff closed D20928: Handle stacked CPU binding..
Tue, Oct 15, 6:14 PM
jeff closed D21596: (vm object 6) Convert pmap_is_modified, pmap_remove_write, and pmap_clear_modify to expecting busy to be held by the caller now that all callers hold it..
Tue, Oct 15, 4:19 AM
jeff updated the summary of D22036: Reduce the scope of the object lock in fault..
Tue, Oct 15, 4:07 AM
jeff created D22036: Reduce the scope of the object lock in fault..
Tue, Oct 15, 4:02 AM
jeff closed D21594: (vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid..
Tue, Oct 15, 3:59 AM
jeff added inline comments to D21597: Drop the object lock in vfs_bio and cluster.
Tue, Oct 15, 3:56 AM
jeff retitled D21597: Drop the object lock in vfs_bio and cluster from Drop the object lock where it is no longer needed. to Drop the object lock in vfs_bio and cluster.
Tue, Oct 15, 3:54 AM
jeff committed rS353541: (6/6) Convert pmap to expect busy in write related operations now that all.
(6/6) Convert pmap to expect busy in write related operations now that all
Tue, Oct 15, 3:52 AM
jeff closed D21595: (vm object 5) Move PGA_NOSYNC to VPA_NOSYNC so that the object lock is not required..
Tue, Oct 15, 3:48 AM
jeff committed rS353540: (5/6) Move the VPO_NOSYNC to PGA_NOSYNC to eliminate the dependency on the.
(5/6) Move the VPO_NOSYNC to PGA_NOSYNC to eliminate the dependency on the
Tue, Oct 15, 3:48 AM
jeff committed rS353539: (4/6) Protect page valid with the busy lock..
(4/6) Protect page valid with the busy lock.
Tue, Oct 15, 3:46 AM
jeff committed rS353538: (3/6) Add a shared object busy synchronization mechanism that blocks new page.
(3/6) Add a shared object busy synchronization mechanism that blocks new page
Tue, Oct 15, 3:42 AM
jeff committed rS353537: (2/6) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep()..
(2/6) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep().
Tue, Oct 15, 3:38 AM
jeff closed D21549: (vm object 2) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep()..
Tue, Oct 15, 3:38 AM
jeff committed rS353535: (1/6) Replace busy checks with acquires where it is trival to do so..
(1/6) Replace busy checks with acquires where it is trival to do so.
Tue, Oct 15, 3:35 AM
jeff closed D21548: (vm object 1) Replace busy checks and sleeps with acquires where it is trivial to do so..
Tue, Oct 15, 3:35 AM

Thu, Oct 10

jeff added inline comments to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Thu, Oct 10, 3:32 AM

Tue, Oct 8

jeff added inline comments to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Tue, Oct 8, 10:55 PM

Sun, Oct 6

jeff added inline comments to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Sun, Oct 6, 9:42 PM
jeff added inline comments to D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sun, Oct 6, 2:46 AM

Sat, Oct 5

jeff updated the diff for D21594: (vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid..

(vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid.

Sat, Oct 5, 7:49 PM

Fri, Oct 4

jeff updated the diff for D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..

Add missing barrier.

Fri, Oct 4, 10:29 PM
jeff updated the diff for D21548: (vm object 1) Replace busy checks and sleeps with acquires where it is trivial to do so..

Fixed wired/busy check order.

Fri, Oct 4, 10:28 PM

Sun, Sep 29

jeff added inline comments to D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sun, Sep 29, 9:39 PM

Sat, Sep 28

jeff added inline comments to D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sat, Sep 28, 9:50 PM

Wed, Sep 25

jeff added inline comments to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Wed, Sep 25, 11:32 PM
jeff added a comment to D21596: (vm object 6) Convert pmap_is_modified, pmap_remove_write, and pmap_clear_modify to expecting busy to be held by the caller now that all callers hold it..
In D21596#474569, @kib wrote:

Is there any use of PGA_WRITEABLE flag left after the patch ? pmap_page_is_write_mapped() takes the pv lock, while PGA_WRITEABLE check is essentially free.

Wed, Sep 25, 11:29 PM
jeff added a comment to D21594: (vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid..
In D21594#474564, @kib wrote:

What do you mean by a note that pageout clears valid state of the page ? I thought that pageout laundries the page, and a clean page might be freed for reuse. In other words, valid bits can be only trimmed by truncation either of the vnode or swap backing OBJ_NOSPLIT object.

Wed, Sep 25, 11:27 PM
jeff accepted D21740: lockprof: fix hangs under load when changing the state or dumping stats.
Wed, Sep 25, 11:22 PM
jeff accepted D21646: vfs: add root vnode caching for mount points.
Wed, Sep 25, 11:22 PM
jeff added inline comments to D21740: lockprof: fix hangs under load when changing the state or dumping stats.
Wed, Sep 25, 11:21 PM

Mon, Sep 23

jeff added inline comments to D21740: lockprof: fix hangs under load when changing the state or dumping stats.
Mon, Sep 23, 8:21 PM

Thu, Sep 19

jeff added inline comments to D21594: (vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid..
Thu, Sep 19, 9:35 PM
jeff added a comment to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
In D21592#473738, @kib wrote:
In D21592#473571, @jeff wrote:

I think I've brought this up before, but I would like it if the VM had a generic per-2MB page structure. We already have several in vm_reserv and the pmap, and IMO it would be a good place to maintain a "compound" busy state, rather than in the object. I worry that a mechanism to block the busying of all pages in an object will inhibit concurrency and lead to transient latency spikes. I don't object to the current approach though.

Right now the object lock is the mechanism that blocks busying of all pages and creates transient latency spikes. This at least narrows it a level and allows other object operations to proceed. If you had a per-superpage object you would have to be able to very quickly look it up and acquire in tryxbusy/sbusy.
Ultimately I would like to see a generic mechanism that can treat pages as groups with a single set of state. A variable page size.

But isn't vm_reserv adequate object ? psind is set to 1 iff the reserv is fully populated. Why cannot we lock vm_reserv around pmap_enter() in psind==1 case for fast_soft ?
Update: when I wrote that, I thought about locking reserv and e.g. busy the first page in the range. Incompatible manipulation of any page in the superpage would need to break the reservation. But this is not enough, indeed.

Thu, Sep 19, 7:38 PM

Wed, Sep 18

jeff added a comment to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..

I think I've brought this up before, but I would like it if the VM had a generic per-2MB page structure. We already have several in vm_reserv and the pmap, and IMO it would be a good place to maintain a "compound" busy state, rather than in the object. I worry that a mechanism to block the busying of all pages in an object will inhibit concurrency and lead to transient latency spikes. I don't object to the current approach though.

Wed, Sep 18, 10:59 PM
jeff added inline comments to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Wed, Sep 18, 10:25 PM
jeff added inline comments to D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Wed, Sep 18, 8:43 PM

Sep 17 2019

jeff updated the summary of D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Sep 17 2019, 9:55 PM

Sep 16 2019

jeff added inline comments to D21646: vfs: add root vnode caching for mount points.
Sep 16 2019, 9:05 PM
jeff accepted D21637: vfs: convert struct mount counters to per-cpu.
Sep 16 2019, 8:58 PM
jeff accepted D21575: vfs: manage mnt_writeopcount with atomics.
Sep 16 2019, 8:53 PM
jeff accepted D21574: vfs: manage mnt_lockref with atomics.
Sep 16 2019, 8:50 PM
jeff accepted D21425: vfs: manage mnt_ref with atomics.

My only real feedback is on the naming.

Sep 16 2019, 8:49 PM

Sep 14 2019

jeff added a comment to D21548: (vm object 1) Replace busy checks and sleeps with acquires where it is trivial to do so..

One possible refinement that I should mention;

Sep 14 2019, 6:45 PM

Sep 13 2019

jeff added inline comments to D21629: Add support for multithreading the inactive queue pageout within a domain..
Sep 13 2019, 12:06 AM

Sep 12 2019

jeff updated the summary of D21629: Add support for multithreading the inactive queue pageout within a domain..
Sep 12 2019, 11:27 PM
jeff created D21629: Add support for multithreading the inactive queue pageout within a domain..
Sep 12 2019, 11:22 PM
jeff added inline comments to D21617: Improve support for refcount waiting.
Sep 12 2019, 7:53 PM
jeff added inline comments to D21617: Improve support for refcount waiting.
Sep 12 2019, 7:28 PM
jeff added inline comments to D21617: Improve support for refcount waiting.
Sep 12 2019, 7:22 PM
jeff added a comment to D21617: Improve support for refcount waiting.

Can you describe the consumer visible effect you are trying to achieve? Is it just releasn?

Sep 12 2019, 7:10 PM
jeff added inline comments to D21611: Introduce atomic per-page queue state operations..
Sep 12 2019, 6:58 PM
jeff added inline comments to D21611: Introduce atomic per-page queue state operations..
Sep 12 2019, 4:00 AM
jeff added inline comments to D21611: Introduce atomic per-page queue state operations..
Sep 12 2019, 2:24 AM

Sep 10 2019

jeff updated the summary of D21598: Use atomics for object reference count so that we can use the shared lock to protect it..
Sep 10 2019, 8:40 PM
jeff created D21598: Use atomics for object reference count so that we can use the shared lock to protect it..
Sep 10 2019, 8:34 PM
jeff created D21597: Drop the object lock in vfs_bio and cluster.
Sep 10 2019, 8:33 PM
jeff retitled D21596: (vm object 6) Convert pmap_is_modified, pmap_remove_write, and pmap_clear_modify to expecting busy to be held by the caller now that all callers hold it. from Convert pmap_is_modified, pmap_remove_write, and pmap_clear_modify to expecting busy to be held by the caller now that all callers hold it. to (vm object 6) Convert pmap_is_modified, pmap_remove_write, and pmap_clear_modify to expecting busy to be held by the caller now that all callers hold it..
Sep 10 2019, 8:26 PM
jeff created D21596: (vm object 6) Convert pmap_is_modified, pmap_remove_write, and pmap_clear_modify to expecting busy to be held by the caller now that all callers hold it..
Sep 10 2019, 8:24 PM
jeff retitled D21595: (vm object 5) Move PGA_NOSYNC to VPA_NOSYNC so that the object lock is not required. from Move PGA_NOSYNC to VPA_NOSYNC so that the object lock is not required. to (vm object 5) Move PGA_NOSYNC to VPA_NOSYNC so that the object lock is not required..
Sep 10 2019, 8:23 PM
jeff created D21595: (vm object 5) Move PGA_NOSYNC to VPA_NOSYNC so that the object lock is not required..
Sep 10 2019, 8:20 PM
jeff retitled D21594: (vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid. from Wrap valid accesses in inlines. Add missing busy acquires to protect valid. to (vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid..
Sep 10 2019, 8:19 PM
jeff created D21594: (vm object 4) Wrap valid accesses in inlines. Add missing busy acquires to protect valid..
Sep 10 2019, 8:11 PM
jeff retitled D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held. from Add a shared object busy synchronization mechanism that blocks new page busy acquires while held. to (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Sep 10 2019, 8:10 PM
jeff retitled D21549: (vm object 2) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep(). from Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep(). to (vm object 2) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep()..
Sep 10 2019, 7:59 PM
jeff retitled D21548: (vm object 1) Replace busy checks and sleeps with acquires where it is trivial to do so. from Replace busy checks and sleeps with acquires where it is trivial to do so. to (vm object 1) Replace busy checks and sleeps with acquires where it is trivial to do so..
Sep 10 2019, 7:59 PM
jeff created D21592: (vm object 3) Add a shared object busy synchronization mechanism that blocks new page busy acquires while held..
Sep 10 2019, 7:58 PM
jeff added inline comments to D21549: (vm object 2) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep()..
Sep 10 2019, 7:13 PM
jeff committed rS352176: Replace redundant code with a few new vm_page_grab facilities:.
Replace redundant code with a few new vm_page_grab facilities:
Sep 10 2019, 7:08 PM
jeff closed D21546: Eliminate redundant vm code with a few new convenience functions..
Sep 10 2019, 7:08 PM
jeff committed rS352174: Use the sleepq lock rather than the page lock to protect against wakeup.
Use the sleepq lock rather than the page lock to protect against wakeup
Sep 10 2019, 6:28 PM
jeff closed D21255: Remove the page lock dependency on busy sleeps by using sleepq to avoid races..
Sep 10 2019, 6:28 PM
jeff added inline comments to D21549: (vm object 2) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep()..
Sep 10 2019, 4:18 PM

Sep 6 2019

jeff added inline comments to D21425: vfs: manage mnt_ref with atomics.
Sep 6 2019, 6:53 PM
jeff abandoned D21331: Eliminate redundant code by introducing a vm_page_grab_valid().
Sep 6 2019, 6:48 PM
jeff abandoned D21332: Augment vm_page_grab to support more cases that want to acquire busy locks..
Sep 6 2019, 6:48 PM
jeff added inline comments to D21255: Remove the page lock dependency on busy sleeps by using sleepq to avoid races..
Sep 6 2019, 2:44 PM
jeff retitled D21549: (vm object 2) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep(). from Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep(). Some callers like vm_page_remove/replace want busy state to persist. to Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep()..
Sep 6 2019, 2:05 PM
jeff created D21549: (vm object 2) Don't release xbusy in vm_page_remove(), defer to vm_page_free_prep()..
Sep 6 2019, 12:46 PM
jeff updated the summary of D21548: (vm object 1) Replace busy checks and sleeps with acquires where it is trivial to do so..
Sep 6 2019, 12:45 PM
jeff created D21548: (vm object 1) Replace busy checks and sleeps with acquires where it is trivial to do so..
Sep 6 2019, 12:43 PM
jeff retitled D21546: Eliminate redundant vm code with a few new convenience functions. from Eliminate redundant with a few new convenience functions. to Eliminate redundant vm code with a few new convenience functions..
Sep 6 2019, 12:42 PM
jeff created D21546: Eliminate redundant vm code with a few new convenience functions..
Sep 6 2019, 12:35 PM

Sep 5 2019

jeff updated the diff for D21255: Remove the page lock dependency on busy sleeps by using sleepq to avoid races..

Resolve identity change issues

Sep 5 2019, 6:31 PM
jeff added a comment to D17885: ULE scheduler: Interrupt thread natural binding to the core receiving the interrupt event is easily ignored.

This looks correct to me. Do you have any information from testing? How was this found?

Sep 5 2019, 1:31 PM

Aug 21 2019

D21357: Move OBJT_VNODE specific code from vm_object_terminate() to vnode_destroy_vobject(). is now accepted and ready to land.
Aug 21 2019, 9:49 PM
jeff added a comment to D21357: Move OBJT_VNODE specific code from vm_object_terminate() to vnode_destroy_vobject()..

In general I like this but the double setting of OBJ_DEAD does make it harder to detect things like double frees.

Aug 21 2019, 9:31 PM

Aug 20 2019

jeff added inline comments to D21331: Eliminate redundant code by introducing a vm_page_grab_valid().
Aug 20 2019, 8:33 PM
jeff added inline comments to D21332: Augment vm_page_grab to support more cases that want to acquire busy locks..
Aug 20 2019, 8:23 PM
jeff added inline comments to D21332: Augment vm_page_grab to support more cases that want to acquire busy locks..
Aug 20 2019, 8:16 PM
jeff added a comment to D21331: Eliminate redundant code by introducing a vm_page_grab_valid().

So it is ok to skip has_pages for vnode objects? This is a slight optimization that seems worthwhile to me.

Aug 20 2019, 7:15 PM
jeff abandoned D21313: Eliminate redundant code by introducing a vm_page_grab_valid that will use the pager to bring in pages that are not valid..
Aug 20 2019, 1:21 AM
jeff retitled D21332: Augment vm_page_grab to support more cases that want to acquire busy locks. from Augment vm_page_grab to support more cases that want to acquire busy locks. Add a new function, vm_page_busy_acquire(), to support others. to Augment vm_page_grab to support more cases that want to acquire busy locks..
Aug 20 2019, 1:09 AM
jeff created D21332: Augment vm_page_grab to support more cases that want to acquire busy locks..
Aug 20 2019, 1:04 AM
jeff retitled D21331: Eliminate redundant code by introducing a vm_page_grab_valid() from Eliminate redundant code by introducing a vm_page_grab_valid that will use the pager to bring in pages that are not valid. to Eliminate redundant code by introducing a vm_page_grab_valid().
Aug 20 2019, 1:01 AM