-
Notifications
You must be signed in to change notification settings - Fork 17.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
x/build: Scaleway linux-arm builders don't have vdso support #33574
Comments
The linux-arm and linux-arm64 builders are different in about all ways. arm is on scaleway, 1 builder per machine, 50 machines, with images prepared in a weird way. arm64 is on packet.net on a big machine, with builds running in Docker. This issue should probably be split in two, with more context: is this about upgrading the host image (for a new kernel? which minimum level/feature?) or the container environment? |
The current kernels used on both the linux-arm and linux-arm64 builders do not use VDSO for the time functions. The purpose of this issue is upgrade the kernel so that it uses VDSO on both kinds of systems. It is of course fine to split the issue in two. |
Our existing linux-arm machines are Xenial, running some weird netboot kernel, 4.10.8-docker-1 (built Wed Apr 5 16:04:23 UTC 2017). But I tried out a Bionic instance on the same hardware and the kernel is still weird, but newer: 4.9.93-mainline-rev1 #1 SMP Tue Apr 10 09:42:40 UTC 2018. Unfortunately this C1 hardware (their only 32-bit ARM hardware) doesn't support local boot. It can only NFS boot kernels they provide, AFAICT: https://github.com/scaleway/image-ubuntu/issues/132 Probably good enough. |
Change https://golang.org/cl/205603 mentions this issue: |
…erse flag Updates golang/go#21260 (no more buildlets using the --reverse flag) Updates golang/go#33574 (linux-arm kernel+userspace updated) Change-Id: I7455f6fa3e851f1f9f81d6f1eb487ef7e4bea55b Reviewed-on: https://go-review.googlesource.com/c/build/+/205603 Reviewed-by: Bryan C. Mills <[email protected]>
Okay, linux-arm is now an Ubuntu bionic host (kernel 4.9.93) with Debian Buster containers. All deployed. Arm64 (packet) remains. |
The Arm64 packet host is Ubuntu Xenial (4.10.0-26-generic) with Debian Buster containers. Upgrading it remotely now over ssh. Hope it survives the process. Otherwise we'll have to re-create it. |
The packet host upgraded & rebooted and everything seems to be Bionic now but the kernel is still the same:
I see that it's supposed to be 4.15: And 4.15 is installed, but not in use:
@ianlancetaylor, when did Linux start using VDSOs on these architectures? |
It's a configuration option when the kernel is built. I believe that on ARM64 it was available as of kernel version 2.6.39. |
https://blog.linuxplumbersconf.org/2016/ocw/system/presentations/3711/original/LPC_vDSO.pdf suggests arm got it in 4.1, but that means the old Xenial kernel should've been new enough. 904f046 has a test but doesn't t.Skip anywhere that I can see, so running that test wouldn't really tell me if the host supported it. |
I see CONFIG_GENERIC_TIME_VSYSCALL=y on both the 4.10 and 4.15 packet kernels. |
I think I decided that VDSO was not available based on |
But if I made a mistake on that, I apologize. I was working on a test that should have failed when using VDSO, for #32912, which has since been fixed anyhow (the test is now |
On Packet, with the Linux 4.10.0-26-generic aarch64 kernel, I get:
... which certainly looks like it's not doing a system call for the time. |
Also on that host:
I see [vdso] there. |
But on Scaleway, even with Bionic, the 4.9.93-mainline-rev1 armv7 kernel it netboots doesn't have vdso in /proc/self/maps and strace on date shows:
And in /proc/config.gz:
Looks like it's just not built with vdso support. But not sure we can build our own kernel+initrd "bootscript" (https://www.scaleway.com/en/docs/bootscript-and-how-to-use-it/) on Scaleway. See also https://github.com/scaleway/image-ubuntu/issues/132 ... maybe we can kexec a newer one?
|
/cc @cagedmantis |
…erse flag Updates golang/go#21260 (no more buildlets using the --reverse flag) Updates golang/go#33574 (linux-arm kernel+userspace updated) Change-Id: I7455f6fa3e851f1f9f81d6f1eb487ef7e4bea55b Reviewed-on: https://go-review.googlesource.com/c/build/+/205603 Reviewed-by: Bryan C. Mills <[email protected]>
The Scaleway builders were removed in June (#45066). Is this still an issue with the current |
As of today, we have linux/arm and linux/arm64 AWS builders, and linux/arm64 Equinix (previously named Packet) builders. I tried to check and as far as I can tell it's available on both linux/arm64 builder types, but not the linux/arm (32-bit) AWS one. I'm not sure if my check was thorough; I pieced together what I read in this issue and in #32912, plus searching on the internet. The /proc/config.gz file wasn't available on the AWS builders, so I used other signals. The relevant log:
If there's any future work to do, we should track it in new issue(s), so closing this one. |
As discussed at #32912, let's upgrade the linux-arm and linux-arm64 builders to bionic.
The text was updated successfully, but these errors were encountered: