{"push_id":724829948,"size":1,"distinct_size":1,"ref":"refs/heads/dev/bugfix-misc","head":"5be6acea422519305c9a34675af6a2d735a90ba9","before":"0f91a5b6f14f8959493607e7527616d8a716c8e9","commits":[{"sha":"5be6acea422519305c9a34675af6a2d735a90ba9","author":{"email":"4f934e98da37f6ec341afa957c0ccf8b3a73f9f0@gmail.com","name":"Mark Johnston"},"message":"lockstat: only fetch the uptime if probes are enabled\n\nOne side-effect of r284297 is that we now call lockstat_nsecs() each\ntime a rwlock read lock is taken, even in the uncontended case: rw_rlock\ncalls __rw_rlock directly rather than indirecting through some\nintermediate \"fast path\". This is the only lock type to do so, which is\nwhy the problem became immediately obvious when doing some lock\nbenchmarking.\n\nThe cost of lockstat_nsecs() can vary quite a bit between systems; in\nthe case of a bhyve VM, I'm seeing a slowdown of roughly 100x. I wonder\nif this might also be the cause of PR 201517, i.e. something is taking a\nread lock during boot, and the resulting timecounter read somehow hangs\nthe system.\n\nThis change uses a flag to indicate whether any lockstat probes are\nactually enabled before calling binsuptime.","distinct":true,"url":"https://api.github.com/repos/markjdb/freebsd-dev/commits/5be6acea422519305c9a34675af6a2d735a90ba9"}]}