Page MenuHomeFreeBSD
Feed Advanced Search

Thu, Oct 17

mjg retitled D22070: amd64 pmap: reduce chances that chunk mutex will be taken while pv list lock is held from amd64 pmap: reduce chances that chunk mutex will be taken while pv list is held to amd64 pmap: reduce chances that chunk mutex will be taken while pv list lock is held.
Thu, Oct 17, 9:46 PM
mjg created D22070: amd64 pmap: reduce chances that chunk mutex will be taken while pv list lock is held.
Thu, Oct 17, 9:45 PM

Sun, Oct 13

mjg committed rS353474: tmpfs: use MNTK_NOMSYNC.
tmpfs: use MNTK_NOMSYNC
Sun, Oct 13, 3:42 PM
mjg committed rS353473: pseudofs: use MNTK_NOMSYNC.
pseudofs: use MNTK_NOMSYNC
Sun, Oct 13, 3:42 PM
mjg committed rS353472: nullfs: use MNTK_NOMSYNC.
nullfs: use MNTK_NOMSYNC
Sun, Oct 13, 3:42 PM
mjg committed rS353471: devfs: use MNTK_NOMSYNC.
devfs: use MNTK_NOMSYNC
Sun, Oct 13, 3:41 PM
mjg committed rS353470: zfs: use MNTK_NOMSYNC.
zfs: use MNTK_NOMSYNC
Sun, Oct 13, 3:41 PM
mjg committed rS353469: vfs: add MNTK_NOMSYNC.
vfs: add MNTK_NOMSYNC
Sun, Oct 13, 3:41 PM
mjg closed D22009: vfs: add MNTK_NOMSYNC.
Sun, Oct 13, 3:41 PM
mjg closed D22008: vfs: return free vnode batches in sync instead of vfs_msync.
Sun, Oct 13, 3:39 PM
mjg committed rS353468: vfs: return free vnode batches in sync instead of vfs_msync.
vfs: return free vnode batches in sync instead of vfs_msync
Sun, Oct 13, 3:39 PM
mjg created D22009: vfs: add MNTK_NOMSYNC.
Sun, Oct 13, 3:14 PM
mjg created D22008: vfs: return free vnode batches in sync instead of vfs_msync.
Sun, Oct 13, 3:11 PM

Fri, Oct 11

mjg updated the diff for D21984: vfs: reduce failing trylock attempts in mnt_vnode_next_active.
  • add VI_TRYLOCK_CONTENDED
Fri, Oct 11, 8:42 PM
mjg updated the diff for D21976: amd64 pmap: per-domain pv chunk list.
  • reclaim chunks from all domains
Fri, Oct 11, 7:35 PM
mjg retitled D21984: vfs: reduce failing trylock attempts in mnt_vnode_next_active from vfs: reduce failing trylock attempts in nt_vnode_next_active to vfs: reduce failing trylock attempts in mnt_vnode_next_active.
Fri, Oct 11, 6:45 PM
mjg created D21984: vfs: reduce failing trylock attempts in mnt_vnode_next_active.
Fri, Oct 11, 6:45 PM
mjg added a comment to D21976: amd64 pmap: per-domain pv chunk list.

This would be a NOP in this workload. I see I did not mention in this review, but the setup is as follows: there are n worker jails, each with a tmpfs-based world. Each jail comes with a cpuset binding it to only one domain and tmpfs itself is populated while bound to said domain.

Fri, Oct 11, 5:58 PM
mjg added inline comments to D21976: amd64 pmap: per-domain pv chunk list.
Fri, Oct 11, 5:19 PM
mjg added inline comments to D21976: amd64 pmap: per-domain pv chunk list.
Fri, Oct 11, 5:16 PM
mjg updated the summary of D21982: amd64 pmap: conditionalize per-superpage locks on NUMA.
Fri, Oct 11, 4:22 PM
mjg added inline comments to D21982: amd64 pmap: conditionalize per-superpage locks on NUMA.
Fri, Oct 11, 4:10 PM
mjg created D21982: amd64 pmap: conditionalize per-superpage locks on NUMA.
Fri, Oct 11, 4:10 PM
mjg added inline comments to D21976: amd64 pmap: per-domain pv chunk list.
Fri, Oct 11, 3:42 PM
mjg updated the diff for D21976: amd64 pmap: per-domain pv chunk list.
  • simplify pc_to_domain
  • when initializing lists go for PMAP_MEMDOM instead of looping
  • fix the comment about initializing pmap pv chunk list
Fri, Oct 11, 3:13 PM
mjg committed rS353438: amd64 pmap: handle fictitious mappigns with addresses beyond pv_table.
amd64 pmap: handle fictitious mappigns with addresses beyond pv_table
Fri, Oct 11, 2:58 PM
mjg updated the summary of D21976: amd64 pmap: per-domain pv chunk list.
Fri, Oct 11, 12:40 AM
mjg updated the summary of D21976: amd64 pmap: per-domain pv chunk list.
Fri, Oct 11, 12:40 AM
mjg updated the summary of D21976: amd64 pmap: per-domain pv chunk list.
Fri, Oct 11, 12:38 AM
mjg created D21976: amd64 pmap: per-domain pv chunk list.
Fri, Oct 11, 12:37 AM

Thu, Oct 10

mjg added inline comments to D21922: A preliminary patch for using ASIDs in the arm64 pmap.
Thu, Oct 10, 7:01 PM

Tue, Oct 8

mjg closed D21906: amd64: plug spurious cld instructions.
Tue, Oct 8, 9:14 PM
mjg committed rS353327: amd64: plug spurious cld instructions.
amd64: plug spurious cld instructions
Tue, Oct 8, 9:14 PM
mjg updated the summary of D21906: amd64: plug spurious cld instructions.
Tue, Oct 8, 9:05 PM
mjg updated the diff for D21906: amd64: plug spurious cld instructions.
  • drop cld for i386
Tue, Oct 8, 9:05 PM
mjg committed rS353307: amd64 pmap: allocate pv table entries for gaps in PA.
amd64 pmap: allocate pv table entries for gaps in PA
Tue, Oct 8, 3:00 PM
mjg added a comment to D21678: Use AMD CLZERO instruction for pagezero..

system time is reduced, but user time is increased. In the current state there is no win and it's probably a pessimization due to increased memory traffic (as in, it's going to probably hurt more involved workloads). However, the result may be distorted by current bottlenecks (mostly vm object handling), which is why I think this needs to be reevaluated after this stuff gets fixed.

Tue, Oct 8, 1:52 PM
mjg abandoned D21909: amd64 pmap: stop actively maintaning pages for minidump.

This struct should start getting cached, which will have a side effect of not wandering to the minidump array this often.

Tue, Oct 8, 12:54 PM

Mon, Oct 7

mjg committed rS353293: vm: stop trylocking page queues in vm_page_pqbatch_submit.
vm: stop trylocking page queues in vm_page_pqbatch_submit
Mon, Oct 7, 11:19 PM
mjg closed D21925: vm: stop trylocking pagequeues in vm_page_pqbatch_submit.
Mon, Oct 7, 11:19 PM
mjg updated the summary of D21925: vm: stop trylocking pagequeues in vm_page_pqbatch_submit.
Mon, Oct 7, 10:00 PM
mjg updated the summary of D21925: vm: stop trylocking pagequeues in vm_page_pqbatch_submit.
Mon, Oct 7, 9:57 PM
mjg updated the summary of D21925: vm: stop trylocking pagequeues in vm_page_pqbatch_submit.
Mon, Oct 7, 9:56 PM
mjg created D21925: vm: stop trylocking pagequeues in vm_page_pqbatch_submit.
Mon, Oct 7, 9:53 PM

Sun, Oct 6

mjg added a comment to D21678: Use AMD CLZERO instruction for pagezero..

Booting on packet.net has failed, I did not investigate. cperciva gave me a box to play with in ec2 instead.

Sun, Oct 6, 11:35 PM
mjg planned changes to D21667: vfs: fix incorrect hold in vtryrecycle.

Turns out there is a bug with in handling of nullfs and unionfs. Their routines may end up taking the interlock. Taking care of nullfs is easy, but unionfs requires a little more work.

Sun, Oct 6, 10:40 PM
mjg committed rS353155: ufs: add root vnode caching.
ufs: add root vnode caching
Sun, Oct 6, 10:18 PM
mjg committed rS353154: nfsclient: add root vnode caching.
nfsclient: add root vnode caching
Sun, Oct 6, 10:17 PM
mjg committed rS353153: tmpfs: add root vnode caching.
tmpfs: add root vnode caching
Sun, Oct 6, 10:17 PM
mjg committed rS353152: devfs: add root vnode caching.
devfs: add root vnode caching
Sun, Oct 6, 10:17 PM
mjg committed rS353151: zfs: add root vnode caching.
zfs: add root vnode caching
Sun, Oct 6, 10:16 PM
mjg closed D21646: vfs: add root vnode caching for mount points.
Sun, Oct 6, 10:14 PM
mjg committed rS353150: vfs: add optional root vnode caching.
vfs: add optional root vnode caching
Sun, Oct 6, 10:14 PM
mjg committed rS353149: amd64 pmap: implement per-superpage locks.
amd64 pmap: implement per-superpage locks
Sun, Oct 6, 10:13 PM
mjg closed D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sun, Oct 6, 10:13 PM
mjg added inline comments to D21740: lockprof: fix hangs under load when changing the state or dumping stats.
Sun, Oct 6, 8:17 PM
mjg added inline comments to D21646: vfs: add root vnode caching for mount points.
Sun, Oct 6, 8:03 PM
mjg added inline comments to D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sun, Oct 6, 7:11 PM
mjg updated the diff for D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
  • assert (sizeof(*pvd) == 64)
  • change non-superpage i type to long
Sun, Oct 6, 7:10 PM
mjg added a comment to D21909: amd64 pmap: stop actively maintaning pages for minidump.

This can be modified to use CK_* macros which make it safe to traverse in face of modification performed at the same time. Then this can only be a problem if the list gets corrupted and that's what we have to traverse. Should this be of concern, pv chunk can grow a 'magic' field to verify the next element is of the right type. This still can run into loops, which again can be handled in at least two ways: either stop the traversal after n entries or maintain a global counter (per-cpu based).

Sun, Oct 6, 2:15 PM
mjg created D21909: amd64 pmap: stop actively maintaning pages for minidump.
Sun, Oct 6, 3:49 AM
mjg added inline comments to D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sun, Oct 6, 3:07 AM

Sat, Oct 5

mjg updated the diff for D21646: vfs: add root vnode caching for mount points.
  • add missing support for sigdefer ops
  • add _set routine and use it in nfs and devfs
Sat, Oct 5, 10:54 PM
mjg added a comment to D21740: lockprof: fix hangs under load when changing the state or dumping stats.
Sat, Oct 5, 9:47 PM
mjg added inline comments to D21740: lockprof: fix hangs under load when changing the state or dumping stats.
Sat, Oct 5, 8:57 PM
mjg updated the diff for D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
  • change several vars to long type
  • assert PA within the range
Sat, Oct 5, 8:14 PM
mjg committed rS353126: devfs: plug redundant bwillwrite avoidance.
devfs: plug redundant bwillwrite avoidance
Sat, Oct 5, 5:45 PM
mjg closed D21905: devfs: plug redundant bwillwrite avoidance.
Sat, Oct 5, 5:44 PM
mjg added a comment to D21906: amd64: plug spurious cld instructions.

i386 has a lot of cld already and I have no means to test the removal. I can plug them from the places modified by this patch though.

Sat, Oct 5, 5:42 PM
mjg created D21906: amd64: plug spurious cld instructions.
Sat, Oct 5, 5:12 PM
mjg created D21905: devfs: plug redundant bwillwrite avoidance.
Sat, Oct 5, 3:41 PM
mjg updated the diff for D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
  • add the missing pvd->pv_invl_gen = 0;
Sat, Oct 5, 3:09 PM
mjg updated the diff for D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
  • keep the old code when VN_RESERVLEVEL == 0
  • allocate the area using kva_alloc. inserting pages with kmem_back_domain gives me a panic: vm_reserv_alloc_page: domain mismatch, which looks like a bug elsewhere and it may be worth fixing regardless of this patch
  • bump pmap_large_md_page to 64 bytes. I was somehow convinced md_page is 16 bytes, but it turned out to be 24. Adding the lock makes it 56. I added in invl gen counter as well (since it does have superpage granularity anyway) which makes it 64 bytes in total. Makes for a little simpler code and slight bump in performance.
Sat, Oct 5, 2:56 PM

Wed, Oct 2

mjg added a comment to D21626: vfs: scale foffset_lock.

Looks like the current code (i.e., unpatched) is already buggy in this regard.

Wed, Oct 2, 10:02 PM

Tue, Oct 1

mjg added inline comments to D21864: Disallow fcntl(F_READAHEAD) when the vnode is not a regular file..
Tue, Oct 1, 8:31 PM
mjg added a comment to D21822: Provide generic sub-word atomic *cmpset.

I think this looks fine, but would preferable take care of all ports which are currently missing these atomics. There are reviews pending for powerpc and arm but they seem a little stalled. Thus the proposed solution is to just add this for everyone and let maintainers remove it as they provide their own version.

Tue, Oct 1, 4:02 PM

Mon, Sep 30

mjg accepted D21852: linux_renameat2: don't add extra \n on error.
Mon, Sep 30, 3:41 PM

Sun, Sep 29

mjg added inline comments to D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sun, Sep 29, 9:31 PM
mjg committed rS352874: amd64 pmap: batch chunk removal in pmap_remove_pages.
amd64 pmap: batch chunk removal in pmap_remove_pages
Sun, Sep 29, 8:44 PM
mjg closed D21832: amd64 pmap: batch chunk removal in pmap_remove_pages.
Sun, Sep 29, 8:44 PM
mjg added inline comments to D21832: amd64 pmap: batch chunk removal in pmap_remove_pages.
Sun, Sep 29, 6:24 PM

Sat, Sep 28

mjg updated the diff for D21832: amd64 pmap: batch chunk removal in pmap_remove_pages.
  • chunklist -> pv_chunklist
  • free_chunk -> free_chunks
Sat, Sep 28, 7:28 PM
mjg updated the summary of D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sat, Sep 28, 7:21 PM
mjg updated the summary of D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sat, Sep 28, 7:06 PM
mjg updated the summary of D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sat, Sep 28, 7:05 PM
mjg created D21833: amd64 pmap: retire the global lock array in favor of per-superpage locks.
Sat, Sep 28, 7:02 PM
mjg created D21832: amd64 pmap: batch chunk removal in pmap_remove_pages.
Sat, Sep 28, 6:40 PM

Fri, Sep 27

mjg committed rS352813: cache: decrease ncnegfactor to 5.
cache: decrease ncnegfactor to 5
Fri, Sep 27, 7:14 PM
mjg committed rS352812: cache: stop requeuing negative entries on the hot list.
cache: stop requeuing negative entries on the hot list
Fri, Sep 27, 7:13 PM
mjg committed rS352811: cache: make negative list shrinking a little bit concurrent.
cache: make negative list shrinking a little bit concurrent
Fri, Sep 27, 7:12 PM
mjg committed rS352810: cache: stop recalculating upper limit each time a new entry is added.
cache: stop recalculating upper limit each time a new entry is added
Fri, Sep 27, 7:12 PM
mjg committed rS352790: Welcome Pawel Biernacki as a FreeBSD src Committer.
Welcome Pawel Biernacki as a FreeBSD src Committer
Fri, Sep 27, 10:05 AM

Thu, Sep 26

mjg added a comment to D21646: vfs: add root vnode caching for mount points.

It is wrapped around the current code on purpose - provides all expected win the common case, is easy to opt in and requires no changes for filesystems which don't participate. But more importantly I consider it to be a temporary bandaid until interaction of lookup and the namecache is reworked so that there is no need to VFS_ROOT or busy in the common case.

Thu, Sep 26, 1:21 PM
mjg added inline comments to D21740: lockprof: fix hangs under load when changing the state or dumping stats.
Thu, Sep 26, 12:15 AM

Tue, Sep 24

mjg added a comment to D21646: vfs: add root vnode caching for mount points.

The new op is *not* called by anything but the new handler which has to be explicitly set by filesystems which want the feature, i.e. the change is a no-op for anyone who does not opt in.

Tue, Sep 24, 10:35 PM
mjg added a comment to D21646: vfs: add root vnode caching for mount points.

I have a separate patch for zfs since it involves reverting its current support, which would only clutter this review.

Tue, Sep 24, 10:30 PM
mjg updated the diff for D21740: lockprof: fix hangs under load when changing the state or dumping stats.
  • drop the curcpu check, it is of no essence
  • add a comment explaining the loop
  • reindent cpus_fence_seq_cst
Tue, Sep 24, 7:39 PM
mjg added a comment to D21694: Add 8 and 16 bit versions of atomic_cmpset and atomic_fcmpset for arm..

So is this waiting on anyone in particular? I'm not qualified to review the arm variants and most definitely should not be added as a reviewer.

Tue, Sep 24, 7:05 PM
mjg added inline comments to D21774: [wip] vfs: switch vnode count management away from refcounts to atomics.
Tue, Sep 24, 12:16 PM
mjg added a comment to D21774: [wip] vfs: switch vnode count management away from refcounts to atomics.

How about atomic_util.h then?

Tue, Sep 24, 12:07 PM