1. 16 Jan, 2014 2 commits
    • Dmitriy Vyukov's avatar
      runtime: output how long goroutines are blocked · c0b9e621
      Dmitriy Vyukov authored
      Example of output:
      
      goroutine 4 [sleep for 3 min]:
      time.Sleep(0x34630b8a000)
              src/pkg/runtime/time.goc:31 +0x31
      main.func·002()
              block.go:16 +0x2c
      created by main.main
              block.go:17 +0x33
      
      Full program and output are here:
      http://play.golang.org/p/NEZdADI3Td
      
      Fixes #6809.
      
      R=golang-codereviews, khr, kamil.kisiel, bradfitz, rsc
      CC=golang-codereviews
      https://golang.org/cl/50420043
      c0b9e621
    • Dmitriy Vyukov's avatar
      runtime: use lock-free ring for work queues · 4722b1cb
      Dmitriy Vyukov authored
      Use lock-free fixed-size ring for work queues
      instead of an unbounded mutex-protected array.
      The ring has single producer and multiple consumers.
      If the ring overflows, work is put onto global queue.
      
      benchmark              old ns/op    new ns/op    delta
      BenchmarkMatmult               7            5  -18.12%
      BenchmarkMatmult-4             2            2  -18.98%
      BenchmarkMatmult-16            1            0  -12.84%
      
      BenchmarkCreateGoroutines                     105           88  -16.10%
      BenchmarkCreateGoroutines-4                   376          219  -41.76%
      BenchmarkCreateGoroutines-16                  241          174  -27.80%
      BenchmarkCreateGoroutinesParallel             103           87  -14.66%
      BenchmarkCreateGoroutinesParallel-4           169          143  -15.38%
      BenchmarkCreateGoroutinesParallel-16          158          151   -4.43%
      
      R=golang-codereviews, rsc
      CC=ddetlefs, devon.odell, golang-codereviews
      https://golang.org/cl/46170044
      4722b1cb
  2. 15 Jan, 2014 7 commits
  3. 14 Jan, 2014 22 commits
  4. 13 Jan, 2014 9 commits