From: Austin Clements Date: Tue, 13 Jun 2017 15:14:43 +0000 (-0400) Subject: runtime: move pdesc into p X-Git-Tag: go1.9beta1~24 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f4f018518d6f8ca220871da072c7afe33e1cdbcb;p=gostls13.git 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 TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick Reviewed-by: Rick Hudson --- 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