-
-
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
mmap failure with address space quotas #10390
Comments
This error is from a failing |
Oops, misread the issue, sorry. |
|
@carnaval Could we decrease this to, say, 4GB, to make this issue less likely? |
an 8gb array is also too large for msvc to compile, fwiw |
Can you try reducing the number on Line 88 in e1d6e56
|
We can certainly lower this. I set it that high under the reasoning that address space was essentially free on x64. As I understand it, operations are either O(f(number of memory mappings)) or O(f(size of resident portion)) so it should not hurt performance. |
@carnaval Yes, indeed... lots of performance issues if you have very large amounts of memory mapped... which is why people use huge page support... |
Keep in mind I'm still talking about uncomitted memory. The advantage of huge pages is reducing TLB contention as far as I know, and uncomitted memory sure won't end up in the TLB. Generally, as far as my understanding of the kernel VM system goes, "dense" data structures (such as the page table, for which the TLB acts as a cache) are only filled with committed memory. The mapping itself stays into a "sparse" structure (like a list of mappings), so you only pay costs relative to the number of mappings. I may be wrong though, so I'll be happy to be corrected. |
I'm talking about memory that has actually been touched, i.e. commited. |
That's not what my question was about though. We are already careful to decommit useless pages. The limit is another issue, to enforce it strictly would probably require parsing /proc/self/smaps from time to time anyway to be sure some C library is not sneaking around making mappings. |
Yes, but does the current system ever try to proactively cut down on caches, etc., so that it can free up some memory? It doesn't really have to be done strictly, to be useful, without fancy approaches like parsing /proc/... |
I'm not arguing that we should not do those things. But those are features. I was just trying to check if someone knew that some kernel would be slow with large mappings : it would be a regression, not a missing feature. |
I'm running into a It builds fine but it crashes on running the tests, the culprit is
However, As far as I can tell there are no relevant ulimits:
On my normal machine the |
The same problem arises using the Julia nightlies Any ideas on how I could resolve this? Should I contact the admin of that machine to change some settings? |
yes, you can remove the Line 164 in f40da0f
Maybe I should make that the default but it feels so silly to me for admins to restrict addr space, I don't get it really. |
Yes, that works, thanks! Just to clarify, my understanding from this thread is that it is limiting the |
As for me, this is happening on ARM for unclear reasons. The GC memory space is currently not expandable I take it. If it were, I think minimal low-end stuff could afford a heap size of at least 64M, without an issue while expecting size approaching 1G is ridiculous. Somewhere in between is the target. Additionally, I request that this needs to be configurable via library |
The arm issue is completely different. This is only an issue for those who cannot control the virtual address limit. The amount of physical memory is irrelevant here. |
Well since the error message is the same it at least seems related. Are you saying this happens not because of the size of the allocation but the location? These aren't related? The previous discussion made it sound that people were having problems because the system prevented oversubscription which seems to indicate a problem with size. Well if that's the case, then that kind of makes sense too; it is true that there is a lack of OS support for 64-bit virtual addresses. |
Attempting to compile on XSEDE's Comet raised this error. Removing |
Comet's front end has a severely restricted memory limit setting (
|
* Set region sizes based on `ulimit`. * Automatically shrink region size when allocation fails. Fix #10390
* Set region sizes based on `ulimit`. * Automatically shrink region size when allocation fails. Fix #10390
* Set region sizes based on `ulimit`. * Automatically shrink region size when allocation fails. Fix JuliaLang#10390
* Set region sizes based on `ulimit`. * Automatically shrink region size when allocation fails. Fix #10390
* Set region sizes based on `ulimit`. * Automatically shrink region size when allocation fails. Fix #10390
Hi all, |
#16385 was a pretty large change, I'm not sure whether it can be easily backported. Are you building from source or using binaries? If the former, just change the number in the code and recompile. If the latter, I guess we could trigger an unofficial build with a smaller value. |
i was using binaries. building is a nightmare on that system as well, I run into |
might take a while to build, but check back at https://build.julialang.org/builders/package_tarball64/builds/435 and when it's done it should be available at https://julianightlies.s3.amazonaws.com/bin/linux/x64/0.4/julia-0.4.6-c7cd8171df-linux64.tar.gz (assuming you want 64 bit linux, and dropping by a factor of 8 will get you below your ulimit) |
Awesome! Thanks. On Wednesday, 8 June 2016, Tony Kelman [email protected] wrote:
|
@tkelman thanks so much works out of the box like a charm! so much for "broken software". outstanding support as usual. 👍 👍 👍 |
In case someone else stumbles over this: I was under the impression that this issue was resolve but it still surfaced for me with 0.5-rc4 binaries and source build for rc4, see #18477. The error now looks a bit different for me with either just hanging at the tests when running |
Reopened to be fixed in 0.5.x. |
As mentioned in the related issue, this is really #17987. It does not fail because we are asking for a huge fixed size anymore and the remaining is better handled by allowing users with special memory constraint to specify that directly. |
Sorry to bother with this but I am still looking for a solution to this problem. I am working on a cluster where I have to request the max amount of virtual and physical memory that I will be using, and I have to request very large amounts in order for my job to run at all. This puts me on a significantly longer queue, because I basically need an entire compute node all for myself. julia v0.5-rc3. my job has the following memory requirements when run on a single compute node on that same cluster.
Any advice for how to deal with this greatly appreciated. |
I'm having a problem where when I build from 3c7136e when I run julia, I get the error
could not allocate pools
If I run as a different user, Julia runs successfully.I think there might be something specific to my user on this box, but I am happy to help identify what is happening here.
I think this is related to #8699
also, from the julia-users group: https://groups.google.com/forum/#!topic/julia-users/FSIC1E6aaXk
The text was updated successfully, but these errors were encountered: