- 24 Jan, 2014 5 commits
-
-
Dmitriy Vyukov authored
Introduce fixed-size P-local caches. When local caches overflow/underflow a batch of items is transferred to/from global mutex-protected cache. benchmark old ns/op new ns/op delta BenchmarkPool 50554 22423 -55.65% BenchmarkPool-4 400359 5904 -98.53% BenchmarkPool-16 403311 1598 -99.60% BenchmarkPool-32 367310 1526 -99.58% BenchmarkPoolOverlflow 5214 3633 -30.32% BenchmarkPoolOverlflow-4 42663 9539 -77.64% BenchmarkPoolOverlflow-8 46919 11385 -75.73% BenchmarkPoolOverlflow-16 39454 13048 -66.93% BenchmarkSprintfEmpty 84 63 -25.68% BenchmarkSprintfEmpty-2 371 32 -91.13% BenchmarkSprintfEmpty-4 465 22 -95.25% BenchmarkSprintfEmpty-8 565 12 -97.77% BenchmarkSprintfEmpty-16 498 5 -98.87% BenchmarkSprintfEmpty-32 492 4 -99.04% BenchmarkSprintfString 259 229 -11.58% BenchmarkSprintfString-2 574 144 -74.91% BenchmarkSprintfString-4 651 77 -88.05% BenchmarkSprintfString-8 868 47 -94.48% BenchmarkSprintfString-16 825 33 -95.96% BenchmarkSprintfString-32 825 30 -96.28% BenchmarkSprintfInt 213 188 -11.74% BenchmarkSprintfInt-2 448 138 -69.20% BenchmarkSprintfInt-4 624 52 -91.63% BenchmarkSprintfInt-8 691 31 -95.43% BenchmarkSprintfInt-16 724 18 -97.46% BenchmarkSprintfInt-32 718 16 -97.70% BenchmarkSprintfIntInt 311 282 -9.32% BenchmarkSprintfIntInt-2 333 145 -56.46% BenchmarkSprintfIntInt-4 642 110 -82.87% BenchmarkSprintfIntInt-8 832 42 -94.90% BenchmarkSprintfIntInt-16 817 24 -97.00% BenchmarkSprintfIntInt-32 805 22 -97.17% BenchmarkSprintfPrefixedInt 309 269 -12.94% BenchmarkSprintfPrefixedInt-2 245 168 -31.43% BenchmarkSprintfPrefixedInt-4 598 99 -83.36% BenchmarkSprintfPrefixedInt-8 770 67 -91.23% BenchmarkSprintfPrefixedInt-16 829 54 -93.49% BenchmarkSprintfPrefixedInt-32 824 50 -93.83% BenchmarkSprintfFloat 418 398 -4.78% BenchmarkSprintfFloat-2 295 203 -31.19% BenchmarkSprintfFloat-4 585 128 -78.12% BenchmarkSprintfFloat-8 873 60 -93.13% BenchmarkSprintfFloat-16 884 33 -96.24% BenchmarkSprintfFloat-32 881 29 -96.62% BenchmarkManyArgs 1097 1069 -2.55% BenchmarkManyArgs-2 705 567 -19.57% BenchmarkManyArgs-4 792 319 -59.72% BenchmarkManyArgs-8 963 172 -82.14% BenchmarkManyArgs-16 1115 103 -90.76% BenchmarkManyArgs-32 1133 90 -92.03% LGTM=rsc R=golang-codereviews, bradfitz, minux.ma, gobot, rsc CC=golang-codereviews https://golang.org/cl/46010043
-
Dmitriy Vyukov authored
On top of "tiny allocator" (cl/38750047), reduces number of allocs by 1% on json. No code must rely on zero termination. So will also make debugging simpler, by uncovering issues earlier. json-1 allocated 7949686 7915766 -0.43% allocs 93778 92790 -1.05% time 100957795 97250949 -3.67% rest of the metrics are too noisy. LGTM=r R=golang-codereviews, r, bradfitz, iant CC=golang-codereviews https://golang.org/cl/40370061
-
Russ Cox authored
There is more zeroing than I would like right now - temporaries used for the new map and channel runtime calls need to be eliminated - but it will do for now. This CL only has an effect if you are building with GOEXPERIMENT=precisestack ./all.bash (or make.bash). It costs about 5% in the overall time spent in all.bash. That number will come down before we make it on by default, but this should be enough for Keith to try using the precise maps for copying stacks. amd64 only (and it's not really great generated code). TBR=khr, iant CC=golang-codereviews https://golang.org/cl/56430043
-
Russ Cox authored
The addition of TLS to ARM rewrote the MRC instruction differently depending on whether we were using internal or external linking mode. That's clearly not okay, since we don't know that during compilation, which is when we now generate the code. Also, because the change did not introduce a real MRC instruction but instead just macro-expanded it in the assembler, liblink is rewriting a WORD instruction that may actually be looking for that specific constant, which would lead to very unexpected results. It was also using one value that happened to be 8 where a different value that also happened to be 8 belonged. So the code was correct for those values but not correct in general, and very confusing. Throw it all away. Replace with the following. There is a linker-provided symbol runtime.tlsgm with a value (address) set to the offset from the hardware-provided TLS base register to the g and m storage. Any reference to that name emits an appropriate TLS relocation to be resolved by either the internal linker or the external linker, depending on the link mode. The relocation has exactly the semantics of the R_ARM_TLS_LE32 relocation, which is what the external linker provides. This symbol is only used in two routines, runtime.load_gm and runtime.save_gm. In both cases it is now used like this: MRC 15, 0, R0, C13, C0, 3 // fetch TLS base pointer MOVW $runtime·tlsgm(SB), R2 ADD R2, R0 // now R0 points at thread-local g+m storage It is likely that this change breaks the generation of shared libraries on ARM, because the MOVW needs to be rewritten to use the global offset table and a different relocation type. But let's get the supported functionality working again before we worry about unsupported functionality. LGTM=dave, iant R=iant, dave CC=golang-codereviews https://golang.org/cl/56120043
-
Rob Pike authored
Needs to be an h3, not an h2. Thanks to Mingjie Xing for pointing it out. LGTM=dsymonds R=golang-codereviews, dsymonds CC=golang-codereviews https://golang.org/cl/55980046
-
- 23 Jan, 2014 5 commits
-
-
Keith Randall authored
Fixes bug 7180 R=golang-codereviews, dvyukov CC=golang-codereviews, gri https://golang.org/cl/55810044
-
Dmitriy Vyukov authored
Currently the benchmarks lie to testing package by doing O(N) work under StopTimer. And that hidden O(N) actually consitutes the bulk of benchmark work (e.g includes GC per iteration). This behavior accounts for windows-amd64-race builder hangs. Before: BenchmarkReaderCopyOptimal-4 1000000 1861 ns/op BenchmarkReaderCopyUnoptimal-4 500000 3327 ns/op BenchmarkReaderCopyNoWriteTo-4 50000 34549 ns/op BenchmarkWriterCopyOptimal-4 100000 16849 ns/op BenchmarkWriterCopyUnoptimal-4 500000 3126 ns/op BenchmarkWriterCopyNoReadFrom-4 50000 34609 ns/op ok bufio 65.273s After: BenchmarkReaderCopyOptimal-4 10000000 172 ns/op BenchmarkReaderCopyUnoptimal-4 10000000 267 ns/op BenchmarkReaderCopyNoWriteTo-4 100000 22905 ns/op BenchmarkWriterCopyOptimal-4 10000000 170 ns/op BenchmarkWriterCopyUnoptimal-4 10000000 226 ns/op BenchmarkWriterCopyNoReadFrom-4 100000 20575 ns/op ok bufio 14.074s Note the change in total time. LGTM=alex.brainman, rsc R=golang-codereviews, alex.brainman, rsc CC=golang-codereviews https://golang.org/cl/51360046
-
Russ Cox authored
The R= is populated by Rietveld, so it's basically anyone who replied to the CL. The LGTM= is meant to record who actually signed off on the CL. LGTM=r R=r CC=golang-codereviews https://golang.org/cl/55390043
-
Dmitriy Vyukov authored
Breaks darwin and freebsd. ««« original CL description runtime: increase page size to 8K Tcmalloc uses 8K, 32K and 64K pages, and in custom setups 256K pages. Only Chromium uses 4K pages today (in "slow but small" configuration). The general tendency is to increase page size, because it reduces metadata size and DTLB pressure. This change reduces GC pause by ~10% and slightly improves other metrics. json-1 allocated 8037492 8038689 +0.01% allocs 105762 105573 -0.18% cputime 158400000 155800000 -1.64% gc-pause-one 4412234 4135702 -6.27% gc-pause-total 2647340 2398707 -9.39% rss 54923264 54525952 -0.72% sys-gc 3952624 3928048 -0.62% sys-heap 46399488 46006272 -0.85% sys-other 5597504 5290304 -5.49% sys-stack 393216 393216 +0.00% sys-total 56342832 55617840 -1.29% time 158478890 156046916 -1.53% virtual-mem 256548864 256593920 +0.02% garbage-1 allocated 2991113 2986259 -0.16% allocs 62844 62652 -0.31% cputime 16330000 15860000 -2.88% gc-pause-one 789108229 725555211 -8.05% gc-pause-total 3945541 3627776 -8.05% rss 1143660544 1132253184 -1.00% sys-gc 65609600 65806208 +0.30% sys-heap 1032388608 1035599872 +0.31% sys-other 37501632 22777664 -39.26% sys-stack 8650752 8781824 +1.52% sys-total 1144150592 1132965568 -0.98% time 16364602 15891994 -2.89% virtual-mem 1327296512 1313746944 -1.02% R=golang-codereviews, dave, khr, rsc, khr CC=golang-codereviews https://golang.org/cl/45770044 »»» R=golang-codereviews CC=golang-codereviews https://golang.org/cl/56060043
-
Dmitriy Vyukov authored
Tcmalloc uses 8K, 32K and 64K pages, and in custom setups 256K pages. Only Chromium uses 4K pages today (in "slow but small" configuration). The general tendency is to increase page size, because it reduces metadata size and DTLB pressure. This change reduces GC pause by ~10% and slightly improves other metrics. json-1 allocated 8037492 8038689 +0.01% allocs 105762 105573 -0.18% cputime 158400000 155800000 -1.64% gc-pause-one 4412234 4135702 -6.27% gc-pause-total 2647340 2398707 -9.39% rss 54923264 54525952 -0.72% sys-gc 3952624 3928048 -0.62% sys-heap 46399488 46006272 -0.85% sys-other 5597504 5290304 -5.49% sys-stack 393216 393216 +0.00% sys-total 56342832 55617840 -1.29% time 158478890 156046916 -1.53% virtual-mem 256548864 256593920 +0.02% garbage-1 allocated 2991113 2986259 -0.16% allocs 62844 62652 -0.31% cputime 16330000 15860000 -2.88% gc-pause-one 789108229 725555211 -8.05% gc-pause-total 3945541 3627776 -8.05% rss 1143660544 1132253184 -1.00% sys-gc 65609600 65806208 +0.30% sys-heap 1032388608 1035599872 +0.31% sys-other 37501632 22777664 -39.26% sys-stack 8650752 8781824 +1.52% sys-total 1144150592 1132965568 -0.98% time 16364602 15891994 -2.89% virtual-mem 1327296512 1313746944 -1.02% R=golang-codereviews, dave, khr, rsc, khr CC=golang-codereviews https://golang.org/cl/45770044
-
- 22 Jan, 2014 26 commits
-
-
Rob Pike authored
The term "package file" is unclear. R=iant, dave CC=golang-codereviews https://golang.org/cl/54760044
-
Gautham Thambidorai authored
Adam (agl@) had already done an initial review of this CL in a branch. Added ClientSessionState to Config which now allows clients to keep state required to resume a TLS session with a server. A client handshake will try and use the SessionTicket/MasterSecret in this cached state if the server acknowledged resumption. We also added support to cache ClientSessionState object in Config that will be looked up by server remote address during the handshake. R=golang-codereviews, agl, rsc, agl, agl, bradfitz, mikioh.mikioh CC=golang-codereviews https://golang.org/cl/15680043
-
David du Colombier authored
It implements parsing of the header and symbol table for both 32-bit and 64-bit Plan 9 binaries. The nm tool was updated to use this package. R=rsc, aram CC=golang-codereviews https://golang.org/cl/49970044
-
Russ Cox authored
The typo was introduced by one of Dmitriy's CLs this morning. The fix makes the ARM build compile again; it still won't pass its tests, but one thing at a time. TBR=dvyukov CC=golang-codereviews https://golang.org/cl/55770044
-
Russ Cox authored
Sorry, too many windows in which to run all.bash. Fixes build. TBR=r CC=golang-codereviews https://golang.org/cl/55790043
-
Jeff Sickel authored
This change include updates to the probeIPv4Stack and probeIPv6Stack to ensure that one or both protocols are supported by ip(3). The addition of fdMutex to netFD fixes the TestTCPConcurrentAccept failures. Additional changes add support for keepalive. R=golang-codereviews, 0intro CC=golang-codereviews, rsc https://golang.org/cl/49920048
-
Russ Cox authored
Fixes #6546. LGTM=dave, bradfitz, r R=r, dave, bradfitz CC=golang-codereviews https://golang.org/cl/55780043
-
David du Colombier authored
warning: /usr/go/src/cmd/gc/obj.c:23 format mismatch -10d VLONG, arg 9 warning: /usr/go/src/cmd/gc/plive.c:1680 set and not used: printed warning: /usr/go/src/cmd/ld/lib.c:332 non-interruptable temporary warning: /usr/go/src/cmd/ld/lib.c:338 non-interruptable temporary R=rsc CC=golang-codereviews https://golang.org/cl/53820046
-
Michael Gehring authored
R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/55720044
-
Brad Fitzpatrick authored
Linux Flock_t, Unix FcntlFlock, and various BSD Termios. R=golang-codereviews, dsymonds CC=golang-codereviews https://golang.org/cl/55460043
-
Brad Fitzpatrick authored
Unbreaks the build. R=golang-codereviews, dsymonds CC=golang-codereviews https://golang.org/cl/53820045
-
Michael Gehring authored
R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/55720043
-
Brad Fitzpatrick authored
Doesn't really matter for the most part, since the runtime-integrated network poller uses its own kevent implementation, but for people using the syscall directly, we should use an unsafe.Pointer for the precise GC to retain the pointer arguments. Also push down unsafe.Pointer a bit further in exec_linux.go, not that there are any GC preemption points in the middle and sys is still live anyway. R=golang-codereviews, dvyukov CC=golang-codereviews, iant https://golang.org/cl/55520043
-
Dmitriy Vyukov authored
Place && at the end of line. Offset expression continuation. R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/55380044
-
Dmitriy Vyukov authored
Introduces two-phase goroutine parking mechanism -- prepare to park, commit park. This mechanism does not require backing mutex to protect wait predicate. Use it in netpoll. See comment in netpoll.goc for details. This slightly reduces contention between reader, writer and read/write io notifications; and just eliminates a bunch of mutex operations from hotpaths, thus making then faster. benchmark old ns/op new ns/op delta BenchmarkTCP4ConcurrentReadWrite 2109 1945 -7.78% BenchmarkTCP4ConcurrentReadWrite-2 1162 1113 -4.22% BenchmarkTCP4ConcurrentReadWrite-4 798 755 -5.39% BenchmarkTCP4ConcurrentReadWrite-8 803 748 -6.85% BenchmarkTCP4Persistent 9411 9240 -1.82% BenchmarkTCP4Persistent-2 5888 5813 -1.27% BenchmarkTCP4Persistent-4 4016 3968 -1.20% BenchmarkTCP4Persistent-8 3943 3857 -2.18% R=golang-codereviews, mikioh.mikioh, gobot, iant, rsc CC=golang-codereviews, khr https://golang.org/cl/45700043
-
Dmitriy Vyukov authored
The new select tests currently fail (the race is not detected). R=khr CC=golang-codereviews https://golang.org/cl/54220043
-
Dmitriy Vyukov authored
Helps reduce contention on sched.goidgen. benchmark old ns/op new ns/op delta BenchmarkCreateGoroutines-16 259 237 -8.49% BenchmarkCreateGoroutinesParallel-16 127 43 -66.06% R=golang-codereviews, dave, bradfitz, khr CC=golang-codereviews, rsc https://golang.org/cl/46970043
-
Dmitriy Vyukov authored
- do not lose profiling signals when we have no mcache (possible for syscalls/cgo) - do not lose any profiling signals on windows - fix profiling of cgo programs on windows (they had no m->thread setup) - properly setup tls in cgo programs on windows - check _beginthread return value Fixes #6417. Fixes #6986. R=alex.brainman, rsc CC=golang-codereviews https://golang.org/cl/44820047
-
Jeff Sickel authored
R=rsc, r, 0intro CC=golang-codereviews https://golang.org/cl/36060047
-
Rémy Oudompheng authored
Fixes #6295. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews https://golang.org/cl/20850043
-
Dominik Honnef authored
Fixes #6572. LGTM=rsc, daniel.morsing, rsc R=golang-codereviews, bradfitz, minux.ma, iant, rsc, gobot, daniel.morsing CC=golang-codereviews https://golang.org/cl/14516055
-
Brad Fitzpatrick authored
In particular: setsockopt, getsockopt, bind, connect. There are probably more. All platforms cross-compile with make.bash, and all.bash still pases on linux/amd64. Update #7169 R=rsc CC=golang-codereviews https://golang.org/cl/55410043
-
Dave Cheney authored
Fixes #7152. R=iant, rsc, gobot CC=golang-codereviews https://golang.org/cl/54790044
-
Russ Cox authored
Now that liblink is compiled into the compilers and assemblers, it must not refer to the "linkmode", since that is not known until link time. This CL makes the ARM support no longer use linkmode, which fixes a bug with cgo binaries that contain their own TLS variables. The x86 code must also remove linkmode; that is issue 7164. Fixes #6992. R=golang-codereviews, iant CC=golang-codereviews https://golang.org/cl/55160043
-
Russ Cox authored
Now it should always fail on ARM. (The fix is on its way too.) R=iant, r, dave CC=golang-codereviews https://golang.org/cl/55140043
-
Brad Fitzpatrick authored
Update #7059 R=rsc CC=golang-codereviews https://golang.org/cl/55370043
-
- 21 Jan, 2014 4 commits
-
-
Brad Fitzpatrick authored
Fixes #7059 R=golang-codereviews, iant, mikioh.mikioh CC=golang-codereviews https://golang.org/cl/53470043
-
Keith Randall authored
R=golang-codereviews, iant, khr, dvyukov CC=golang-codereviews https://golang.org/cl/54160043
-
Russ Cox authored
Sorry, "hg status" hides .6 files by default. We should probably fix that. TBR=iant CC=golang-codereviews https://golang.org/cl/55290043
-
Ian Lance Taylor authored
R=golang-codereviews, r CC=golang-codereviews https://golang.org/cl/55140044
-