1. 29 Jan, 2013 1 commit
  2. 26 Jan, 2013 1 commit
  3. 10 Jan, 2013 1 commit
    • Dmitriy Vyukov's avatar
      runtime: less aggressive per-thread stack segment caching · f82db7d9
      Dmitriy Vyukov authored
      Introduce global stack segment cache and limit per-thread cache size.
      This greatly reduces StackSys memory on workloads that create lots of threads.
      
      benchmark                      old ns/op    new ns/op    delta
      BenchmarkStackGrowth                 665          656   -1.35%
      BenchmarkStackGrowth-2               333          328   -1.50%
      BenchmarkStackGrowth-4               224          172  -23.21%
      BenchmarkStackGrowth-8               124           91  -26.13%
      BenchmarkStackGrowth-16               82           47  -41.94%
      BenchmarkStackGrowth-32               73           40  -44.79%
      
      BenchmarkStackGrowthDeep           97231        94391   -2.92%
      BenchmarkStackGrowthDeep-2         47230        58562  +23.99%
      BenchmarkStackGrowthDeep-4         24993        49356  +97.48%
      BenchmarkStackGrowthDeep-8         15105        30072  +99.09%
      BenchmarkStackGrowthDeep-16        10005        15623  +56.15%
      BenchmarkStackGrowthDeep-32        12517        13069   ...
      f82db7d9
  4. 04 Jan, 2013 1 commit
  5. 22 Dec, 2012 1 commit
    • Russ Cox's avatar
      runtime: aggregate defer allocations · 0de71619
      Russ Cox authored
      benchmark             old ns/op    new ns/op    delta
      BenchmarkDefer              165          113  -31.52%
      BenchmarkDefer10            155          103  -33.55%
      BenchmarkDeferMany          216          158  -26.85%
      
      benchmark            old allocs   new allocs    delta
      BenchmarkDefer                1            0  -100.00%
      BenchmarkDefer10              1            0  -100.00%
      BenchmarkDeferMany            1            0  -100.00%
      
      benchmark             old bytes    new bytes    delta
      BenchmarkDefer               64            0  -100.00%
      BenchmarkDefer10             64            0  -100.00%
      BenchmarkDeferMany           64           66    3.12%
      
      Fixes #2364.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/7001051
      0de71619
  6. 18 Dec, 2012 1 commit
  7. 27 Nov, 2012 1 commit
    • Jan Ziak's avatar
      runtime: use reflect·call() to enter the function gc() · 51b8edcb
      Jan Ziak authored
      Garbage collection code (to be merged later) is calling functions
      which have many local variables. This increases the probability that
      the stack capacity won't be big enough to hold the local variables.
      So, start gc() on a bigger stack to eliminate a potentially large number
      of calls to runtime·morestack().
      
      R=rsc, remyoudompheng, dsymonds, minux.ma, iant, iant
      CC=golang-dev
      https://golang.org/cl/6846044
      51b8edcb
  8. 10 Nov, 2012 1 commit
  9. 01 Nov, 2012 1 commit
  10. 26 Oct, 2012 1 commit
  11. 21 Oct, 2012 1 commit
  12. 19 Oct, 2012 1 commit
  13. 07 Oct, 2012 1 commit
  14. 06 Oct, 2012 1 commit
    • Dmitriy Vyukov's avatar
      pprof: add goroutine blocking profiling · 4cc7bf32
      Dmitriy Vyukov authored
      The profiler collects goroutine blocking information similar to Google Perf Tools.
      You may see an example of the profile (converted to svg) attached to
      http://code.google.com/p/go/issues/detail?id=3946
      The public API changes are:
      +pkg runtime, func BlockProfile([]BlockProfileRecord) (int, bool)
      +pkg runtime, func SetBlockProfileRate(int)
      +pkg runtime, method (*BlockProfileRecord) Stack() []uintptr
      +pkg runtime, type BlockProfileRecord struct
      +pkg runtime, type BlockProfileRecord struct, Count int64
      +pkg runtime, type BlockProfileRecord struct, Cycles int64
      +pkg runtime, type BlockProfileRecord struct, embedded StackRecord
      
      R=rsc, dave, minux.ma, r
      CC=gobot, golang-dev, r, remyoudompheng
      https://golang.org/cl/6443115
      4cc7bf32
  15. 25 Sep, 2012 2 commits
  16. 24 Sep, 2012 1 commit
    • Russ Cox's avatar
      runtime: prepare for 64-bit ints · 0b08c948
      Russ Cox authored
      This CL makes the runtime understand that the type of
      the len or cap of a map, slice, or string is 'int', not 'int32',
      and it is also careful to distinguish between function arguments
      and results of type 'int' vs type 'int32'.
      
      In the runtime, the new typedefs 'intgo' and 'uintgo' refer
      to Go int and uint. The C types int and uint continue to be
      unavailable (cause intentional compile errors).
      
      This CL does not change the meaning of int, but it should make
      the eventual change of the meaning of int on amd64 a bit
      smoother.
      
      Update #2188.
      
      R=iant, r, dave, remyoudompheng
      CC=golang-dev
      https://golang.org/cl/6551067
      0b08c948
  17. 21 Sep, 2012 1 commit
  18. 18 Sep, 2012 1 commit
    • Dmitriy Vyukov's avatar
      runtime: refactor goroutine blocking · f20fd873
      Dmitriy Vyukov authored
      The change is a preparation for the new scheduler.
      It introduces runtime.park() function,
      that will atomically unlock the mutex and park the goroutine.
      It will allow to remove the racy readyonstop flag
      that is difficult to implement w/o the global scheduler mutex.
      
      R=rsc, remyoudompheng, dave
      CC=golang-dev
      https://golang.org/cl/6501077
      f20fd873
  19. 17 Sep, 2012 1 commit
  20. 31 Aug, 2012 1 commit
  21. 07 Aug, 2012 1 commit
    • Shenghou Ma's avatar
      runtime: inline several float64 routines to speed up complex128 division · 0157c72d
      Shenghou Ma authored
      Depends on CL 6197045.
      
      Result obtained on Core i7 620M, Darwin/amd64:
      benchmark                       old ns/op    new ns/op    delta
      BenchmarkComplex128DivNormal           57           28  -50.78%
      BenchmarkComplex128DivNisNaN           49           15  -68.90%
      BenchmarkComplex128DivDisNaN           49           15  -67.88%
      BenchmarkComplex128DivNisInf           40           12  -68.50%
      BenchmarkComplex128DivDisInf           33           13  -61.06%
      
      Result obtained on Core i7 620M, Darwin/386:
      benchmark                       old ns/op    new ns/op    delta
      BenchmarkComplex128DivNormal           89           50  -44.05%
      BenchmarkComplex128DivNisNaN          307          802  +161.24%
      BenchmarkComplex128DivDisNaN          309          788  +155.02%
      BenchmarkComplex128DivNisInf          278          237  -14.75%
      BenchmarkComplex128DivDisInf           46           22  -52.46%
      
      Result obtained on 700MHz OMAP4460, Linux/ARM:
      benchmark                       old ns/op    new ns/op    delta
      BenchmarkComplex128DivNormal         1557          465  -70.13%
      BenchmarkComplex128DivNisNaN         1443          220  -84.75%
      BenchmarkComplex128DivDisNaN         1481          218  -85.28%
      BenchmarkComplex128DivNisInf          952          216  -77.31%
      BenchmarkComplex128DivDisInf          861          231  -73.17%
      
      The 386 version has a performance regression, but as we have
      decided to use SSE2 instead of x87 FPU for 386 too (issue 3912),
      I won't address this issue.
      
      R=dsymonds, mchaten, iant, dave, mtj, rsc, r
      CC=golang-dev
      https://golang.org/cl/6024045
      0157c72d
  22. 04 Jul, 2012 1 commit
  23. 01 Jul, 2012 1 commit
  24. 30 May, 2012 2 commits
  25. 29 May, 2012 1 commit
  26. 15 May, 2012 1 commit
  27. 11 May, 2012 1 commit
  28. 12 Apr, 2012 1 commit
  29. 05 Apr, 2012 2 commits
    • Dmitriy Vyukov's avatar
      runtime: make GC stats per-M · d839a809
      Dmitriy Vyukov authored
      This is factored out part of:
      https://golang.org/cl/5279048/
      (Parallel GC)
      
      benchmark                             old ns/op    new ns/op    delta
      garbage.BenchmarkParser              3999106750   3975026500   -0.60%
      garbage.BenchmarkParser-2            3720553750   3719196500   -0.04%
      garbage.BenchmarkParser-4            3502857000   3474980500   -0.80%
      garbage.BenchmarkParser-8            3375448000   3341310500   -1.01%
      garbage.BenchmarkParserLastPause      329401000    324097000   -1.61%
      garbage.BenchmarkParserLastPause-2    208953000    214222000   +2.52%
      garbage.BenchmarkParserLastPause-4    110933000    111656000   +0.65%
      garbage.BenchmarkParserLastPause-8     71969000     78230000   +8.70%
      garbage.BenchmarkParserPause          230808842    197237400  -14.55%
      garbage.BenchmarkParserPause-2        123674365    125197595   +1.23%
      garbage.BenchmarkParserPause-4         80518525     85710333   +6.45%
      garbage.BenchmarkParserPause-8         58310243     56940512   -2.35%
      garbage.BenchmarkTree2                 31471700     31289400   -0.58%
      garbage.BenchmarkTree2-2               21536800     21086300   -2.09%
      garbage.BenchmarkTree2-4               11074700     10880000   -1.76%
      garbage.BenchmarkTree2-8                7568600      7351400   -2.87%
      garbage.BenchmarkTree2LastPause       314664000    312840000   -0.58%
      garbage.BenchmarkTree2LastPause-2     215319000    210815000   -2.09%
      garbage.BenchmarkTree2LastPause-4     110698000    108751000   -1.76%
      garbage.BenchmarkTree2LastPause-8      75635000     73463000   -2.87%
      garbage.BenchmarkTree2Pause           174280857    173147571   -0.65%
      garbage.BenchmarkTree2Pause-2         131332714    129665761   -1.27%
      garbage.BenchmarkTree2Pause-4          93803095     93422904   -0.41%
      garbage.BenchmarkTree2Pause-8          86242333     85146761   -1.27%
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/5987045
      d839a809
    • Dmitriy Vyukov's avatar
      runtime: add 64-bit atomics · 46675716
      Dmitriy Vyukov authored
      This is factored out part of:
      https://golang.org/cl/5279048/
      (Parallel GC)
      
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/5985047
      46675716
  30. 06 Mar, 2012 1 commit
  31. 28 Feb, 2012 1 commit
    • Russ Cox's avatar
      runtime/pprof: support OS X CPU profiling · 6e2ae0a1
      Russ Cox authored
      Work around profiling kernel bug with signal masks.
      Still broken on 64-bit Snow Leopard kernel,
      but I think we can ignore that one and let people
      upgrade to Lion.
      
      Add new trivial tools addr2line and objdump to take
      the place of the GNU tools of the same name, since
      those are not installed on OS X.
      
      Adapt pprof to invoke 'go tool addr2line' and
      'go tool objdump' if the system tools do not exist.
      
      Clean up disassembly of base register on amd64.
      
      Fixes #2008.
      
      R=golang-dev, bradfitz, mikioh.mikioh, r, iant
      CC=golang-dev
      https://golang.org/cl/5697066
      6e2ae0a1
  32. 24 Feb, 2012 1 commit
  33. 23 Feb, 2012 1 commit
  34. 17 Feb, 2012 1 commit
  35. 14 Feb, 2012 2 commits
  36. 13 Feb, 2012 1 commit
    • Russ Cox's avatar
      os/signal: selective signal handling · 35586f71
      Russ Cox authored
      Restore package os/signal, with new API:
      Notify replaces Incoming, allowing clients
      to ask for certain signals only.  Also, signals
      go to everyone who asks, not just one client.
      
      This could plausibly move into package os now
      that there are no magic side effects as a result
      of the import.
      
      Update runtime for new API: move common Unix
      signal handling code into signal_unix.c.
      (It's so easy to do this now that we don't have
      to edit Makefiles!)
      
      Tested on darwin,linux 386,amd64.
      
      Fixes #1266.
      
      R=r, dsymonds, bradfitz, iant, borman
      CC=golang-dev
      https://golang.org/cl/3749041
      35586f71