aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2017-06-13 11:14:43 -0400
committerAustin Clements <austin@google.com>2017-06-14 00:43:30 +0000
commitf4f018518d6f8ca220871da072c7afe33e1cdbcb (patch)
treed35e006fb92ab1ae7e790fe33af1ba1354f56dac
parent0253299ab39c45f5694d35a233b83b23c69ec97f (diff)
downloadgo-f4f018518d6f8ca220871da072c7afe33e1cdbcb.tar.gz
go-f4f018518d6f8ca220871da072c7afe33e1cdbcb.zip
runtime: move pdesc into p
There are currently two arrays indexed by P ID: allp and pdesc. Consolidate these by moving the pdesc fields into type p so they can be indexed off allp along with all other per-P state. For #15131. Change-Id: Ib6c4e6e7612281a1171ba4a0d62e52fd59e960b4 Reviewed-on: https://go-review.googlesource.com/45572 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-rw-r--r--src/runtime/proc.go4
-rw-r--r--src/runtime/runtime2.go7
2 files changed, 6 insertions, 5 deletions
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index afedf19aed..9e53716992 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -3837,7 +3837,7 @@ func sysmon() {
}
}
-var pdesc [_MaxGomaxprocs]struct {
+type sysmontick struct {
schedtick uint32
schedwhen int64
syscalltick uint32
@@ -3855,7 +3855,7 @@ func retake(now int64) uint32 {
if _p_ == nil {
continue
}
- pd := &pdesc[i]
+ pd := &_p_.sysmontick
s := _p_.status
if s == _Psyscall {
// Retake P from syscall if it's there for more than 1 sysmon tick (at least 20us).
diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go
index 2df1fefe7c..6871d9c68c 100644
--- a/src/runtime/runtime2.go
+++ b/src/runtime/runtime2.go
@@ -453,9 +453,10 @@ type p struct {
id int32
status uint32 // one of pidle/prunning/...
link puintptr
- schedtick uint32 // incremented on every scheduler call
- syscalltick uint32 // incremented on every system call
- m muintptr // back-link to associated m (nil if idle)
+ schedtick uint32 // incremented on every scheduler call
+ syscalltick uint32 // incremented on every system call
+ sysmontick sysmontick // last tick observed by sysmon
+ m muintptr // back-link to associated m (nil if idle)
mcache *mcache
racectx uintptr