summaryrefslogtreecommitdiff
path: root/src/runtime/pprof
Commit message (Collapse)AuthorAgeFilesLines
* internal/pprof: don't discard allocations called by reflect.CallIan Lance Taylor2016-11-281-6/+23
| | | | | | | | | | | | | | | The pprof code discards all heap allocations made by runtime routines. This caused it to discard heap allocations made by functions called by reflect.Call, as the calls are made via the functions `runtime.call32`, `runtime.call64`, etc. Fix the profiler to retain these heap allocations. Fixes #18077. Change-Id: I8962d552f1d0b70fc7e6f7b2dbae8d5bdefb0735 Reviewed-on: https://go-review.googlesource.com/33635 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* runtime/pprof/internal/protopprof: fix test on s390xMichael Munday2016-11-221-1/+3
| | | | | | | | | | | | | | Applies the fix from CL 32920 to the new test TestSampledHeapAllocProfile introduced in CL 33422. The test should be skipped rather than fail if there is only one executable region of memory. Updates #17852. Change-Id: Id8c47b1f17ead14f02a58a024c9a04ebb8ec0429 Reviewed-on: https://go-review.googlesource.com/33453 Run-TryBot: Michael Munday <munday@ca.ibm.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime/pprof: generate heap profiles in compressed proto formatMichael Matloob2016-11-223-12/+194
| | | | | | | | | | | | | When debug is 0, emit the compressed proto format. The debug>0 format stays the same. Updates #16093 Change-Id: I45aa1874a22d34cf44dd4aa78bbff9302381cb34 Reviewed-on: https://go-review.googlesource.com/33422 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime/pprof: emit count profiles with debug=0 as proto profilesMichael Matloob2016-11-212-18/+68
| | | | | | | | | | | count profiles with debug=1 retain their previous format. Also add a test check for the proto profiles since all runtime/pprof tests only look at the debug=1 profiles. Change-Id: Ibe805585b597e5d3570807115940a1dc4535c03f Reviewed-on: https://go-review.googlesource.com/33148 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof/internal/protopprof: fix TestTranslateCPUProfileWithSamples ↵Vladimir Stefanovic2016-11-171-4/+4
| | | | | | | | | | test for mips Change-Id: I01168a7530e18dd1098d467d0c8a330f727ba91f Reviewed-on: https://go-review.googlesource.com/33281 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime/pprof: fix typo in testBrad Fitzpatrick2016-11-171-2/+2
| | | | | | | | Not sure what I was thinking. Change-Id: I143cdf7c5ef8e7b2394afeca6b30c46bb2c19a55 Reviewed-on: https://go-review.googlesource.com/33340 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* runtime/pprof: skip profiling tests on mips if highres timers not availableBrad Fitzpatrick2016-11-161-1/+51
| | | | | | | | | Fixes #17936 Change-Id: I20d09712b7d7303257994356904052ba64bc5bf2 Reviewed-on: https://go-review.googlesource.com/33306 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* runtime/pprof: delete new TestCPUProfileParseRuss Cox2016-11-111-20/+0
| | | | | | | | | | | | | All the existing CPU profiler tests already parse the profile. That should be sufficient indication that profiles can be parsed. Fixes #17853. Change-Id: Ie8a190e2ae4eef125c8eb0d4e8b7adac420abbdb Reviewed-on: https://go-review.googlesource.com/33136 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* runtime/pprof/internal: delete package gzip0Michael Matloob2016-11-112-199/+0
| | | | | | | | | | | | rsc's change golang.org/cl/32455 added a mechanism that allows pprof to depend on gzip without introducing an import cycle. This obsoletes the need for the gzip0 package, which was created solely to remove the need for that dependency. Change-Id: Ifa3b98faac9b251f909b84b4da54742046c4e3ad Reviewed-on: https://go-review.googlesource.com/33137 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* runtime/pprof: output CPU profiles in pprof protobuf formatMichael Matloob2016-11-104-109/+48
| | | | | | | | | | | | | | | | | This change buffers the entire profile and converts in one shot in the profile writer, and could use more memory than necessary to output protocol buffer formatted profiles. It should be possible to convert each chunk in a stream (maybe maintaining some minimal state to output in the end) which could save on memory usage. Fixes #16093 Change-Id: I946c6a2b044ae644c72c8bb2d3bd82c415b1a847 Reviewed-on: https://go-review.googlesource.com/33071 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof/internal/protopprof: skip TestTranslateCPUProfileWithSamples ↵Michael Munday2016-11-091-1/+3
| | | | | | | | | | | | | | | | | if < 2 mappings A Go binary may only have 1 executable memory region if it has been linked using internal linking. This change means that the test will be skipped if this is the case, rather than fail. Fixes #17852. Change-Id: I59459a0f90ae8963aeb9908e5cb9fb64d7d0e0f4 Reviewed-on: https://go-review.googlesource.com/32920 Run-TryBot: Michael Munday <munday@ca.ibm.com> Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org>
* runtime/pprof/internal: add package protopprofMichael Matloob2016-11-082-0/+313
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds code, originally written by Russ Cox <rsc@golang.org> and open-sourced by Google, that converts from the "legacy" binary pprof profile format to a struct representation of the new protocol buffer pprof profile format. This code reads the entire binary format for conversion to the protobuf format. In a future change, we will update the code to incrementally read and convert segments of the binary format, so that the entire profile does not need to be stored in memory. This change also contains contributions by Daria Kolistratova <daria.kolistratova@intel.com> from the rolled-back change golang.org/cl/30556 adapting the code to be used by the package runtime/pprof. This code also appeared in the change golang.org/cl/32257, which was based on Daria Kolistratova's change, but was also rolled back. Updates #16093 Change-Id: I5c768b1134bc15408d80a3ccc7ed867db9a1c63d Reviewed-on: https://go-review.googlesource.com/32811 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* Revert "runtime/pprof: write profiles in protobuf format."Michael Matloob2016-10-319-2164/+399
| | | | | | | | | | | This reverts commit b33030a72754cb55d6ec137e79facacb398c9be4. Reason for revert: We're going to try to get the code in this change submitted in smaller, more carefully reviewed changes. Change-Id: I4175f4b297f0e69fb78b11f9dc0bd82f27865be7 Reviewed-on: https://go-review.googlesource.com/32441 Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof/internal/gzip0: new package for pprofRuss Cox2016-10-292-0/+199
| | | | | | | | | | | Writes gzip-format uncompressed files. Change-Id: Id5dc01852e21732978700fd9efcc2d4a5899ffeb Reviewed-on: https://go-review.googlesource.com/32260 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> Reviewed-by: Michael Matloob <matloob@golang.org>
* runtime/pprof/internal/profile: add copyright notice to profile_memmap.goMichael Matloob2016-10-281-0/+4
| | | | | | Change-Id: Ia511b0aadc87eb53e084d14cdb90ba4be958a43e Reviewed-on: https://go-review.googlesource.com/32259 Reviewed-by: Austin Clements <austin@google.com>
* runtime/pprof: write profiles in protobuf format.Michael Matloob2016-10-289-399/+2160
| | | | | | | | | | | | | | | | | Original Change by Daria Kolistratova <daria.kolistratova@intel.com> Added functions with suffix proto and stuff from pprof tool to translate to protobuf. Done as the profile proto is more extensible than the legacy pprof format and is pprof's preferred profile format. Large part was taken from https://github.com/google/pprof tool. Tested by hand and compared the result with translated by pprof tool, profiles are identical. Fixes #16093 Change-Id: I2751345b09a66ee2b6aa64be76cba4cd1c326aa6 Reviewed-on: https://go-review.googlesource.com/32257 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
* Revert "runtime/pprof: write profiles in protobuf format."Austin Clements2016-10-289-2130/+402
| | | | | | | | | | This reverts commit 7d14401bcbee4a8ff33ac869ef5ebb156a179ab6. Reason for revert: Doesn't build. Change-Id: I766179ab9225109d9232f783326e4d3843254980 Reviewed-on: https://go-review.googlesource.com/32256 Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof: write profiles in protobuf format.unknown2016-10-289-402/+2130
| | | | | | | | | | | | | | Added functions with suffix proto and stuff from pprof tool to translate to protobuf. Done as the profile proto is more extensible than the legacy pprof format and is pprof's preferred profile format. Large part was taken from https://github.com/google/pprof tool. Tested by hand and compared the result with translated by pprof tool, profiles are identical. Fixes #16093 Change-Id: I5acdb2809cab0d16ed4694fdaa7b8ddfd68df11e Reviewed-on: https://go-review.googlesource.com/30556 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org>
* runtime: Profile goroutines holding contended mutexes.Peter Weinberger2016-10-282-0/+95
| | | | | | | | | | | | runtime.SetMutexProfileFraction(n int) will capture 1/n-th of stack traces of goroutines holding contended mutexes if n > 0. From runtime/pprof, pprot.Lookup("mutex").WriteTo writes the accumulated stack traces to w (in essentially the same format that blocking profiling uses). Change-Id: Ie0b54fa4226853d99aa42c14cb529ae586a8335a Reviewed-on: https://go-review.googlesource.com/29650 Reviewed-by: Austin Clements <austin@google.com>
* runtime/pprof: preallocate slice in pprof.goGyu-Ho Lee2016-10-121-2/+2
| | | | | | | | | To prevent slice growth when appending. Change-Id: I2cdb9b09bc33f63188b19573c8b9a77601e63801 Reviewed-on: https://go-review.googlesource.com/23783 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* all: use sort.Slice where applicableBrad Fitzpatrick2016-10-041-21/+3
| | | | | | | | | | | | | | | | | I avoided anywhere in the compiler or things which might be used by the compiler in the future, since they need to build with Go 1.4. I also avoided anywhere where there was no benefit to changing it. I probably missed some. Updates #16721 Change-Id: Ib3c895ff475c6dec2d4322393faaf8cb6a6d4956 Reviewed-on: https://go-review.googlesource.com/30250 TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
* runtime: report GCSys and OtherSys in heap profileAustin Clements2016-09-201-0/+2
| | | | | | | | | | | | The comment block at the end of the heap profile includes *almost* everything from MemStats. Add the missing fields. These are useful for debugging RSS that has gone to GC-internal data structures. Change-Id: I0ee8a918d49629e28fd8fd2bf6861c4529461c24 Reviewed-on: https://go-review.googlesource.com/29276 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
* runtime/pprof: document use of pprof packageAustin Clements2016-07-261-1/+62
| | | | | | | | | | | | | | | | Currently the pprof package gives almost no guidance for how to use it and, despite the standard boilerplate used to create CPU and memory profiles, this boilerplate appears nowhere in the pprof documentation. Update the pprof package documentation to give the standard boilerplate in a form people can copy, paste, and tweak. This boilerplate is based on rsc's 2011 blog post on profiling Go programs at https://blog.golang.org/profiling-go-programs, which is where I always go when I need to copy-paste the boilerplate. Change-Id: I74021e494ea4dcc6b56d6fb5e59829ad4bb7b0be Reviewed-on: https://go-review.googlesource.com/25182 Reviewed-by: Rick Hudson <rlh@golang.org>
* runtime/pprof: don't print extraneous 0 after goexitIan Lance Taylor2016-07-132-4/+5
| | | | | | | | | | | | | This fixes erroneous handling of the more result parameter of runtime.Frames.Next. Fixes #16349. Change-Id: I4f1c0263dafbb883294b31dbb8922b9d3e650200 Reviewed-on: https://go-review.googlesource.com/24911 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* runtime/pprof: update comments to point to new pprofRaul Silvera2016-06-271-1/+1
| | | | | | | | | | In the comments for this file there is a reference to gperftools for more info on pprof. pprof now live on its own repo on github, and the version in gperftools is deprecated. Change-Id: I8a188f129534f73edd132ef4e5a2d566e69df7e9 Reviewed-on: https://go-review.googlesource.com/24502 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* runtime/pprof, cmd/pprof: fix profiling for PIEIan Lance Taylor2016-05-312-3/+44
| | | | | | | | | | | | | | | | In order to support pprof for position independent executables, pprof needs to adjust the PC addresses stored in the profile by the address at which the program is loaded. The legacy profiling support which we use already supports recording the GNU/Linux /proc/self/maps data immediately after the CPU samples, so do that. Also change the pprof symbolizer to use the information, if available, when looking up addresses in the Go pcline data. Fixes #15714. Change-Id: I4bf679210ef7c51d85cf873c968ce82db8898e3e Reviewed-on: https://go-review.googlesource.com/23525 Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
* runtime: use GOTRACEBACK=system for TestStackBarrierProfilingAustin Clements2016-05-161-1/+1
| | | | | | | | | | | | | This should help with debugging failures. For #15138 and #15477. Change-Id: I77db2b6375d8b4403d3edf5527899d076291e02c Reviewed-on: https://go-review.googlesource.com/23134 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
* runtime: call mallocgc directly from makeslice and growsliceJosh Bleecher Snyder2016-04-201-1/+1
| | | | | | | | | | | | | | | | | | The extra checks provided by newarray are redundant in these cases. This shrinks by one frame the call stack expected by the pprof test. name old time/op new time/op delta MakeSlice-8 34.3ns ± 2% 30.5ns ± 3% -11.03% (p=0.000 n=24+22) GrowSlicePtr-8 134ns ± 2% 129ns ± 3% -3.25% (p=0.000 n=25+24) Change-Id: Icd828655906b921c732701fd9d61da3fa217b0af Reviewed-on: https://go-review.googlesource.com/22276 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
* runtime/pprof: make TestBlockProfile less timing dependentRichard Miller2016-04-071-5/+10
| | | | | | | | | | | | | | | | | | | | The test for profiling of channel blocking is timing dependent, and in particular the blockSelectRecvAsync case can fail on a slow builder (plan9_arm) when many tests are run in parallel. The child goroutine sleeps for a fixed period so the parent can be observed to block in a select call reading from the child; but if the OS process running the parent goroutine is delayed long enough, the child may wake again before the parent has reached the blocking point. By repeating the test three times, the likelihood of a blocking event is increased. Fixes #15096 Change-Id: I2ddb9576a83408d06b51ded682bf8e71e53ce59e Reviewed-on: https://go-review.googlesource.com/21604 Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net, runtime: skip flaky tests on OpenBSDBrad Fitzpatrick2016-04-061-0/+3
| | | | | | | | | | | | | | | | | Flaky tests are a distraction and cover up real problems. File bugs instead and mark them as flaky. This moves the net/http flaky test flagging mechanism to internal/testenv. Updates #15156 Updates #15157 Updates #15158 Change-Id: I0e561cd2a09c0dec369cd4ed93bc5a2b40233dfe Reviewed-on: https://go-review.googlesource.com/21614 Reviewed-by: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
* runtime: don't print EnableGC flag in WriteHeapProfile()Hitoshi Mitake2016-03-051-1/+0
| | | | | | | | | | | | | | | | Current runtime.WriteHeapProfile() doesn't print correct EnableGC. Even if GOGC=off, the result file has below line: # EnableGC = true It is hard to print correct status of the variable because of corner cases e.g. initialization. For avoiding confusion, this commit removes the print. Change-Id: Ia792454a6c650bdc50a06fbaff4df7b6330ae08a Reviewed-on: https://go-review.googlesource.com/18600 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
* runtime/pprof: sort counted profiles by countRuss Cox2016-03-022-12/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is especially helpful in programs with very large numbers of goroutines: the bulk of the goroutines will show up at the top. Before: 1 @ 0x86ab8 0x86893 0x82164 0x8e7ce 0x7b798 0x5b871 # 0x86ab8 runtime/pprof.writeRuntimeProfile+0xb8 /Users/rsc/go/src/runtime/pprof/pprof.go:545 # 0x86893 runtime/pprof.writeGoroutine+0x93 /Users/rsc/go/src/runtime/pprof/pprof.go:507 # 0x82164 runtime/pprof.(*Profile).WriteTo+0xd4 /Users/rsc/go/src/runtime/pprof/pprof.go:236 # 0x8e7ce runtime/pprof_test.TestGoroutineCounts+0x15e /Users/rsc/go/src/runtime/pprof/pprof_test.go:603 # 0x7b798 testing.tRunner+0x98 /Users/rsc/go/src/testing/testing.go:473 1 @ 0x2d373 0x2d434 0x560f 0x516b 0x7cd42 0x7b861 0x2297 0x2cf90 0x5b871 # 0x7cd42 testing.RunTests+0x8d2 /Users/rsc/go/src/testing/testing.go:583 # 0x7b861 testing.(*M).Run+0x81 /Users/rsc/go/src/testing/testing.go:515 # 0x2297 main.main+0x117 runtime/pprof/_test/_testmain.go:72 # 0x2cf90 runtime.main+0x2b0 /Users/rsc/go/src/runtime/proc.go:188 10 @ 0x2d373 0x2d434 0x560f 0x516b 0x8e5b6 0x5b871 # 0x8e5b6 runtime/pprof_test.func1+0x36 /Users/rsc/go/src/runtime/pprof/pprof_test.go:582 50 @ 0x2d373 0x2d434 0x560f 0x516b 0x8e656 0x5b871 # 0x8e656 runtime/pprof_test.func3+0x36 /Users/rsc/go/src/runtime/pprof/pprof_test.go:584 40 @ 0x2d373 0x2d434 0x560f 0x516b 0x8e606 0x5b871 # 0x8e606 runtime/pprof_test.func2+0x36 /Users/rsc/go/src/runtime/pprof/pprof_test.go:583 After: 50 @ 0x2d373 0x2d434 0x560f 0x516b 0x8ecc6 0x5b871 # 0x8ecc6 runtime/pprof_test.func3+0x36 /Users/rsc/go/src/runtime/pprof/pprof_test.go:584 40 @ 0x2d373 0x2d434 0x560f 0x516b 0x8ec76 0x5b871 # 0x8ec76 runtime/pprof_test.func2+0x36 /Users/rsc/go/src/runtime/pprof/pprof_test.go:583 10 @ 0x2d373 0x2d434 0x560f 0x516b 0x8ec26 0x5b871 # 0x8ec26 runtime/pprof_test.func1+0x36 /Users/rsc/go/src/runtime/pprof/pprof_test.go:582 1 @ 0x2d373 0x2d434 0x560f 0x516b 0x7cd42 0x7b861 0x2297 0x2cf90 0x5b871 # 0x7cd42 testing.RunTests+0x8d2 /Users/rsc/go/src/testing/testing.go:583 # 0x7b861 testing.(*M).Run+0x81 /Users/rsc/go/src/testing/testing.go:515 # 0x2297 main.main+0x117 runtime/pprof/_test/_testmain.go:72 # 0x2cf90 runtime.main+0x2b0 /Users/rsc/go/src/runtime/proc.go:188 1 @ 0x87128 0x86f03 0x82164 0x8ee30 0x7b798 0x5b871 # 0x87128 runtime/pprof.writeRuntimeProfile+0xb8 /Users/rsc/go/src/runtime/pprof/pprof.go:566 # 0x86f03 runtime/pprof.writeGoroutine+0x93 /Users/rsc/go/src/runtime/pprof/pprof.go:528 # 0x82164 runtime/pprof.(*Profile).WriteTo+0xd4 /Users/rsc/go/src/runtime/pprof/pprof.go:236 # 0x8ee30 runtime/pprof_test.TestGoroutineCounts+0x150 /Users/rsc/go/src/runtime/pprof/pprof_test.go:603 # 0x7b798 testing.tRunner+0x98 /Users/rsc/go/src/testing/testing.go:473 Change-Id: I43de9eee2d96f9c46f7b0fbe099a0571164324f5 Reviewed-on: https://go-review.googlesource.com/20107 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* all: single space after period.Brad Fitzpatrick2016-03-021-9/+9
| | | | | | | | | | | | | | | | | | | | The tree's pretty inconsistent about single space vs double space after a period in documentation. Make it consistently a single space, per earlier decisions. This means contributors won't be confused by misleading precedence. This CL doesn't use go/doc to parse. It only addresses // comments. It was generated with: $ perl -i -npe 's,^(\s*// .+[a-z]\.) +([A-Z]),$1 $2,' $(git grep -l -E '^\s*//(.+\.) +([A-Z])') $ go test go/doc -update Change-Id: Iccdb99c37c797ef1f804a94b22ba5ee4b500c4f7 Reviewed-on: https://go-review.googlesource.com/20022 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Dave Day <djd@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* all: make copyright headers consistent with one space after periodBrad Fitzpatrick2016-03-013-3/+3
| | | | | | | | | | | | | | | | | | | | | | This is a subset of https://golang.org/cl/20022 with only the copyright header lines, so the next CL will be smaller and more reviewable. Go policy has been single space after periods in comments for some time. The copyright header template at: https://golang.org/doc/contribute.html#copyright also uses a single space. Make them all consistent. Change-Id: Icc26c6b8495c3820da6b171ca96a74701b4a01b0 Reviewed-on: https://go-review.googlesource.com/20111 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime, runtime/pprof: add Frames to get file/line for CallersIan Lance Taylor2016-02-251-19/+10
| | | | | | | | | | | | | | This indirectly implements a small fix for runtime/pprof: it used to look for runtime.gopanic when it should have been looking for runtime.sigpanic. Update #11432. Change-Id: I5e3f5203b2ac5463efd85adf6636e64174aacb1d Reviewed-on: https://go-review.googlesource.com/19869 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
* runtime: show panics in tracebackAustin Clements2016-02-161-1/+1
| | | | | | | | | | | | | | | | | | | | We used to include panic calls in tracebacks; however, when runtime.panic was renamed to runtime.gopanic in the conversion of the runtime to Go, we missed the special case in showframe that includes panic calls even though they're in package runtime. Fix the function name check in showframe (and, while we're here, fix the other check for "runtime.panic" in runtime/pprof). Since the "runtime.gopanic" name doesn't match what users call panic and hence isn't very user-friendly, make traceback rewrite it to just "panic". Updates #5832, #13857. Fixes #14315. Change-Id: I8059621b41ec043e63d5cfb4cbee479f47f64973 Reviewed-on: https://go-review.googlesource.com/19492 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof: mark dragonfly and solaris as bad at pprofBrad Fitzpatrick2016-02-021-6/+8
| | | | | | | | Updates #13841 Change-Id: I121bce054e2756c820c76444e51357f474b7f3d6 Reviewed-on: https://go-review.googlesource.com/19161 Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof: retry failed tests with longer durationAustin Clements2016-01-261-49/+75
| | | | | | | | | | | | | | | | | | | | | | | | Currently we run profiling tests for around 200ms in short mode. However, even on platforms with good profiling, these tests are inherently flaky, especially on loaded systems like the builders. To mitigate this, modify the profiling test harness so that if a test fails in a way that could indicate there just weren't enough samples, it retries with a longer duration. This requires some adjustment to the profile checker to distinguish "fatal" and "retryable" errors. In particular, we no longer consider it a fatal error to get a profile with zero samples (which we previously treated as a parse error). We replace this with a retryable check that the total number of samples is reasonable. Fixes #13943. Fixes #13871. Fixes #13223. Change-Id: I9a08664a7e1734c5334b1f3792a56184fe314c4d Reviewed-on: https://go-review.googlesource.com/18683 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime/pprof: document SetCPUProfile with c-archive/c-sharedIan Lance Taylor2016-01-251-0/+8
| | | | | | | | | | | | | | | | | When using c-archive/c-shared, the signal handler for SIGPROF will not be installed, which means that runtime/pprof.StartCPUProfile won't work. There is no really good solution here, as the main program may want to do its own profiling. For now, just document that runtime/pprof doesn't work as expected, but that it will work if you use Notify to install the Go signal handler. Fixes #14043. Change-Id: I7ff7a01df6ef7f63a7f050aac3674d640a246fb4 Reviewed-on: https://go-review.googlesource.com/18911 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
* runtime/pprof: skip TestStackBarrierProfiling on FreeBSD, tooAustin Clements2016-01-081-2/+2
| | | | | | | | | | | | | | | | Sigh. Sleeps on FreeBSD also yield the rest of the time slice and profiling signals are only delivered when a process completes a time slice (worse, itimer time is only accounted to the process that completes a time slice). It's less noticeable than the other BSDs because the default tick rate is 1000Hz, but it's still failing regularly. Fixes #13846. Change-Id: I41bf116bffe46682433b677183f86944d0944ed4 Reviewed-on: https://go-review.googlesource.com/18455 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Austin Clements <austin@google.com>
* runtime/pprof: skip TestStackBarrierProfiling on dragonfly tooBrad Fitzpatrick2016-01-061-1/+1
| | | | | | | | | | | Just saw a few dragonfly failures here. I'm tempted to preemptively add plan9 here too, but I'll wait until I see it fail. Change-Id: Ic99fc088dbfd1aa21f509148aee98ccfe7f640bf Reviewed-on: https://go-review.googlesource.com/18306 Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof: point to new docs about kernel bugsRuss Cox2016-01-061-2/+2
| | | | | | Change-Id: I8ee338c1244fc4e2fb75deec752a7f83239c33ea Reviewed-on: https://go-review.googlesource.com/18257 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* runtime/pprof: skip TestStackBarrierProfilingAustin Clements2016-01-051-0/+13
| | | | | | | | | | | | | | | | | | | This test triggers a large number of usleep(100)s. linux/arm, openbsd, and solaris have very poor timer resolution on the builders, so usleep(100) actually gives up the whole scheduling quantum. On Linux and OpenBSD (and probably Solaris), profiling signals are only generated when a process completes a whole scheduling quantum, so this test often gets zero profiling signals and fails. Until we figure out what to do about this, skip this test on these platforms. Updates #13405. Change-Id: Ica94e4a8ae7a8df3e5a840504f83ee2ec08727df Reviewed-on: https://go-review.googlesource.com/18252 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Austin Clements <austin@google.com>
* runtime/pprof: shorten a few testsRuss Cox2016-01-041-3/+11
| | | | | | | | | For #10571. Change-Id: I4bdad64e2dfd692ef2adccf2e5e82e9b1996a8ea Reviewed-on: https://go-review.googlesource.com/18206 Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com>
* runtime/pprof: disable TestStackBarrierProfiling on ppc64Austin Clements2015-11-201-0/+3
| | | | | | | | | | | | This test depends on GODEBUG=gcstackbarrierall, which doesn't work on ppc64. Updates #13334. Change-Id: Ie554117b783c4e999387f97dd660484488499d85 Reviewed-on: https://go-review.googlesource.com/17120 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Russ Cox <rsc@golang.org>
* runtime/pprof: check if test can forkDavid Crawshaw2015-11-201-0/+1
| | | | | | | | | | (TestStackBarrierProfiling is failing on darwin/arm.) Change-Id: I8006d6222ccafc213821e02105896440079caa37 Reviewed-on: https://go-review.googlesource.com/17091 Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime/pprof: test that stack barriers never appear in profileAustin Clements2015-11-191-0/+45
| | | | | | | | | | | | | | This adds a test that runs CPU profiling with a high load of stack barriers and stack barrier insertion/removal operations and checks that both 1) the runtime doesn't crash and 2) stackBarrier itself never appears in a profile. Prior to the fix for gentraceback starting in the middle of stackBarrier, condition 2 often failed. Change-Id: Ic28860448859029779844c4bf3bb28ca84611e2c Reviewed-on: https://go-review.googlesource.com/17037 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* test: use go:noinline consistentlyTodd Neal2015-11-031-9/+6
| | | | | | | | | | | Replace various implementations of inlining prevention with "go:noinline" Change-Id: Iac90895c3a62d6f4b7a6c72e11e165d15a0abfa4 Reviewed-on: https://go-review.googlesource.com/16510 Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Todd Neal <todd@tneal.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime/pprof: document content of heap profileRuss Cox2015-07-271-0/+7
| | | | | | | | Fixes #11343. Change-Id: I46efc24b687b9d060ad864fbb238c74544348e38 Reviewed-on: https://go-review.googlesource.com/12556 Reviewed-by: Rob Pike <r@golang.org>
* runtime/pprof: ignore too few samples on Windows testRuss Cox2015-07-221-0/+7
| | | | | | | | Fixes #10842. Change-Id: I7de98f3073a47911863a252b7a74d8fdaa48c86f Reviewed-on: https://go-review.googlesource.com/12529 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>