I was playing a bit with mutex profiling this weekend, measuring mutex use on the netperf_socket branch (which has the IPv4 and socket code running Giant-free). I was a bit surprised to find a massive number of timeout/callouts that require Giant running every second. I added a little instrumentation to see just how much Giant was getting used, and found the following in a short sample (1 second) on an idle system: none:/tmp> sysctl debug.to_gsample_reset=1 ; sleep 10 ; sysctl debug.to_gsample > /tmp/sample ; wc /tmp/sample debug.to_gsample_reset: 0 -> 0 paprika:/tmp> ./process.pl | ./count.pl | sort -nr uhci_poll_hub: 41 scrn_timer: 253 rpcclnt_timer: 1007 nfsrv_timer: 1007 nfs_timer: 1007 nd6_timer: 10 loadav: 1 in6_rr_timer: 2 if_slowtimo: 10 dasendorderedtag: 1 comwakeup: 10 So that's 3000 timeouts a second for the NFS server and client code (even though neither is used on this machine), each one of which will grab and release Giant. That seems a little gratuitous to me... Robert N M Watson FreeBSD Core Team, TrustedBSD Projects robert_at_fledge.watson.org Senior Research Scientist, McAfee ResearchReceived on Sat Mar 06 2004 - 14:51:34 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:46 UTC