-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Arch Linux is not shipping sys.so, causing long startup times #8119
Comments
Ah, I thought the Arch maintainer of the Julia package said they were shipping it. AFAIK the right approach is to ship it, and build Julia with EDIT: Makefile seems to prefer |
Ah that is the reason why the startup became slower when I switched from self building to the packaged version. A possible solution would be with #8074 to add a post-install step that regenerates sys.so instead of deleting like it currently does: https://projects.archlinux.org/svntogit/community.git/tree/trunk/sysfix.install?h=packages/julia |
@vchuravy There's no need for that. The baseline image should suit all users with a reasonable performance. |
Yes it should be working, but since march=x86_64 is the setting default on Archlinux (especially) for packagers https://wiki.archlinux.org/index.php/makepkg And the sys.so only gets removed when Julia is falling to start up. So the question is why if the package is indeed compiled with march=x86_64 and JULIA_CPU_TARGET=core2,
triggered on my machine which is a sandybridge processor. Since I don't have a sys.so file installed |
@vchuravy Well, it's hard to tell. Could you extract the sys.so file from the package, put it at |
Extracting sys.so from the latest julia build for Archlinux I get
running I get this:
running
|
The subject of this issue is misleading. sys.so is placed in /usr/lib/julia/sys.so if julia works when sys.so is present. When it is removed, the startup times are longer. Blaming Arch Linux is premature. |
It seems the Arch sys.so has not actually been built for @xyproto I don't understand |
It looks like the true culprit is https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/julia#n25 This line is supposed to set running this on a sys.so generated by the aforementioned PKGBUILD gives me julia> bytestring(cglobal(("jl_sysimg_cpu_target","./sys.so"), Cchar))
native instead of core2 |
I think you nailed it, vchuravy. Thank you. Rebuilding the julia package. |
@xyproto JULIA_CPU_TARGET will still default to native Also could one set MARCH to i686 instead of pentium4? Pentium4 is i768 and I think Archlinux accepted minimum is i686 -- edit
|
@vchuravy You're right. The i686 support in Arch Linux is without SSE2 - for the oldest versions of i686. Pentium4 is probably too high. (Unfortunately. The Go package has the same problem, I wish SSE2 was supported for i686. I'll see if I can convince the other Arch Linux people). I'll try rebuilding with MARCH set to x86_64 for 64-bit and MARCH set to i686 for 32-bit, then. |
@xyproto I am currently building for x86_64 and will report back if I get a sensible result. In the mean time I am using
|
So Julia build successfully with x86-64 :) and the sys.so also reports the correct cpu-target
-- edit |
Updating the julia package for x86-64 now. @vchuravy Please confirm that it works as expected. Added your name in the PKGBUILD. Thanks for testing. |
There's not much point in going < pentium4 for the 32-bit build because of dSFMT, see #7185 (comment). |
@pao So currently, for Arch Linux to have a julia package for i686, it can't be built for pentium4. |
It seems all distributions would like to support all i686 CPUs, but at the moment it's not possible. Anyway it's better to support > Pentium4 than having no 32-bit support at all. And honestly, if your package doesn't work on < P4, nobody is going to notice (if you don't need to get it reviewed)... @vchuravy Just use |
@nalimilan When the go package was compiled in a way that required SSE2, a bug report was quickly filed and someone was not happy that it did not work with their pentium 3... I've already sorta tried to do it the sneaky way and it didn't work out. |
Julia does not work on Pentium 3 and most likely never will, so I'm not sure what to say. Is it really a requirement for Arch Linux that all software support hardware that's 15 years old? |
@StefanKarpinski Currently, there are three types of architectures for binary Arch Linux packages: "i686", "x86_64" and "any". The latter, "any", must work on any architecture, while "i686", regrettably, can not require the presence of SSE2. It is fully possible to only offer julia as an x86_64 package only, if that is preferable to a lobotomized SSE2-less version for i686. |
@xyproto There has been at least one case (Chromium 35) https://bugs.archlinux.org/task/40479. Upstream decided to drop i686 without SSE2 and Archlinux also dropped support for i686 without SSE2 for Chromium. |
@xyproto Interesting to hear. I didn't think people were really using such old machines for development work. I used to have a P2 working circa 2006, but then that's already 8 years back. ;-) |
As of the Julia package 2:0.3.0-2, I'm now seeing the performance expected on my x86_64 box. I don't think there's anything left to do in this issue. |
😄 |
@sebastien-villemot Unrelated to the Arch issue, but you may be interested in using |
@vchuravy Talked to the maintainer of Chromium on Arch Linux. He said that Chromium was added with SSE2 as an exception to the rule, because people with non-SSE2 computers were not likely to be running Chromium in any case. If Julia is considered to be a "fast computers only"-application, enabling SSE2 should be a possibility. If so, please state that somewhere on the webpage, in the manpage or elsewhere, so that bug reports about missing SSE2-support can be directed there. That would help a lot. Thanks. |
Arch Linux has decided not to include sys.so in their package of Julia 0.3. They delete sys.so as part of the packaging process: https://projects.archlinux.org/svntogit/community.git/tree/trunk/sysfix.install?h=packages/julia due to issues with architecture mismatches: https://bugs.archlinux.org/task/39721
As a result, Julia 0.3 still has a ~3 second startup time: https://bugs.archlinux.org/task/41666
What's the right approach here?
Related: #5459.
The text was updated successfully, but these errors were encountered: