]> Cypherpunks repositories - gostls13.git/commit
runtime: use vDSO for clock_gettime on linux/arm64
authorMeng Zhuo <mengzhuo1203@gmail.com>
Mon, 12 Mar 2018 07:32:28 +0000 (07:32 +0000)
committerIan Lance Taylor <iant@golang.org>
Tue, 27 Mar 2018 13:21:27 +0000 (13:21 +0000)
commitea59ebd3387ab93b826606ea90a4149dad7b4e50
tree2bb7bbd413c4e31da3b8f5b52286e0f8cab2b5fa
parentb63b0f2b75c71b9e80e42488aaa7ddf1a5da11ae
runtime: use vDSO for clock_gettime on linux/arm64

Use the __vdso_clock_gettime fast path via the vDSO on linux/arm64 to
speed up nanotime and walltime. This results in the following
performance improvement for time.Now on Cavium ThunderX:

name     old time/op  new time/op  delta
TimeNow   442ns ± 0%   163ns ± 0%  -63.16%  (p=0.000 n=10+10)

And benchmarks on VDSO

BenchmarkClockVDSOAndFallbackPaths/vDSO         10000000 166 ns/op
BenchmarkClockVDSOAndFallbackPaths/Fallback     3000000 456 ns/op

Change-Id: I326118c6dff865eaa0569fc45d1fc1ff95cb74f6
Reviewed-on: https://go-review.googlesource.com/99855
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/os_linux_novdso.go
src/runtime/sys_linux_arm64.s
src/runtime/vdso_elf64.go
src/runtime/vdso_in_none.go
src/runtime/vdso_linux.go
src/runtime/vdso_linux_386.go
src/runtime/vdso_linux_amd64.go
src/runtime/vdso_linux_arm.go
src/runtime/vdso_linux_arm64.go [new file with mode: 0644]
src/runtime/vdso_linux_test.go