]> Cypherpunks repositories - gostls13.git/commit
runtime: don't track scheduling latency for _Grunning <-> _Gsyscall
authorMichael Anthony Knyszek <mknyszek@google.com>
Mon, 3 Feb 2025 16:53:47 +0000 (16:53 +0000)
committerGopher Robot <gobot@golang.org>
Thu, 30 Oct 2025 17:46:51 +0000 (10:46 -0700)
commit5b8e85034028906ab0a243399e18fd8b72fe2f76
tree1da9d7c2ff0ac1917f43f8e882d405c0bfdf1d82
parent251814e5804886923dd1bb07d06c94563a4e1d9b
runtime: don't track scheduling latency for _Grunning <-> _Gsyscall

The current logic causes much more tracking than necessary, when really
_Grunning and _Gsyscall are both sort of "running" from the perspective
of tracking scheduling latency.

This makes cgo calls and syscalls a little faster in the single-threaded
case, and shows much larger improvement in the multi-threaded case
by removing updates of shared variables (though this parallel
microbenchmark is a little unrealistic, so don't ascribe too much weight
to it).

goos: linux
goarch: amd64
pkg: internal/runtime/cgobench
cpu: AMD EPYC 7B13
                   │  after.out  │            after-2.out             │
                   │   sec/op    │   sec/op     vs base               │
CgoCall-64           35.83n ± 1%   34.69n ± 1%   -3.20% (p=0.002 n=6)
CgoCallParallel-64   5.338n ± 1%   1.352n ± 4%  -74.67% (p=0.002 n=6)

Change-Id: I2ea494dd5ebbbfb457373549986fbe2fbe318d45
Reviewed-on: https://go-review.googlesource.com/c/go/+/646275
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/runtime/proc.go