From: "Kirill A. Shutemov" <kirill@shutemov.name>
To: Christopher Covington <cov@codeaurora.org>
Cc: Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>,
Linaro Dev Mailman List <linaro-dev@lists.linaro.org>,
Arnd Bergmann <arnd.bergmann@linaro.org>,
Mark Brown <broonie@linaro.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
Dmitry Safonov <dsafonov@virtuozzo.com>,
Andy Lutomirski <luto@amacapital.net>,
Cyrill Gorcunov <gorcunov@gmail.com>
Subject: Re: JITs and 52-bit VA
Date: Wed, 22 Jun 2016 18:40:39 +0300 [thread overview]
Message-ID: <20160622154039.GA18723@node.shutemov.name> (raw)
In-Reply-To: <576AA67E.50009@codeaurora.org>
On Wed, Jun 22, 2016 at 10:53:50AM -0400, Christopher Covington wrote:
> +Andy, Cyrill, Dmitry who have been discussing variable TASK_SIZE on x86
> on linux-mm
>
> http://marc.info/?l=linux-mm&m=146290118818484&w=2
>
> >>> On 04/28/2016 09:00 AM, Maxim Kuvyrkov wrote:
> >>>> This is a summary of discussions we had on IRC between kernel and
> >>>> toolchain engineers regarding support for JITs and 52-bit virtual
> >>>> address space (mostly in the context of LuaJIT, but this concerns other
> >>>> JITs too).
> >>>>
> >>>> The summary is that we need to consider ways of reducing the size of
> >>>> VA for a given process or container on a Linux system.
> >>>>
> >>>> The high-level problem is that JITs tend to use upper bits of
> >>>> addresses to encode various pieces of data, and that the number of
> >>>> available bits is shrinking due to VA size increasing. With the usual
> >>>> 42-bit VA (which is what most JITs assume) they have 22 bits to encode
> >>>> various performance-critical data. With 48-bit VA (e.g., ThunderX world)
> >>>> things start to get complicated, and JITs need to be non-trivially
> >>>> patched at the source level to continue working with less bits available
> >>>> for their performance-critical storage. With upcoming 52-bit VA things
> >>>> might get dire enough for some JITs to declare such configurations
> >>>> unsupported.
> >>>>
> >>>> On the other hand, most JITs are not expected to requires terabytes
> >>>> of RAM and huge VA for their applications. Most JIT applications will
> >>>> happily live in 42-bit world with mere 4 terabytes of RAM that it
> >>>> provides. Therefore, what JITs need in the modern world is a way to make
> >>>> mmap() return addresses below a certain threshold, and error out with
> >>>> ENOMEM when "lower" memory is exhausted. This is very similar to
> >>>> ADDR_LIMIT_32BIT personality, but extended to common VA sizes on 64-bit
> >>>> systems: 39-bit, 42-bit, 48-bit, 52-bit, etc.
> >>>>
> >>>> Since we do not want to penalize the whole system (using an
> >>>> artificially low-size VA), it would be best to have a way to enable VA
> >>>> limit on per-process basis (similar to ADDR_LIMIT_32BIT personality). If
> >>>> that's not possible -- then on per-container / cgroup basis. If that's
> >>>> not possible -- then on system level (similar to vm.mmap_min_addr, but
> >>>> from the other end).
> >>>>
> >>>> Dear kernel people, what can be done to address the JITs need to
> >>>> reduce effective VA size?
What about, by default, keep applications within known-to-be-safe VA size
and require explicit opt-in for larger one.
The opt-in can be provided in few forms: personality()/prctl() or ELF flag.
I think it's reasonable to set the large-VA ELF flag for newly compiled
binaries (unless specified otherwise). So they can benefit from larger VA
size, but existing binaries woundn't break.
I believe we had something similar for non-executable stack transition.
--
Kirill A. Shutemov
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
prev parent reply other threads:[~2016-06-22 15:40 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4A8E6E6D-6CF7-4964-A62E-467AE287D415@linaro.org>
2016-06-22 14:53 ` JITs and 52-bit VA Christopher Covington
2016-06-22 15:13 ` Andy Lutomirski
2016-06-22 19:18 ` Cyrill Gorcunov
2016-06-22 19:20 ` Andy Lutomirski
2016-06-22 19:44 ` Cyrill Gorcunov
2016-06-22 20:46 ` Andy Lutomirski
2016-06-22 21:38 ` Cyrill Gorcunov
2016-06-22 19:56 ` Dave Hansen
2016-06-22 20:10 ` Cyrill Gorcunov
2016-06-22 20:17 ` Cyrill Gorcunov
2016-06-22 20:24 ` Kirill A. Shutemov
2016-06-22 20:41 ` Dave Hansen
2016-06-22 21:06 ` Cyrill Gorcunov
2016-06-23 8:20 ` Dmitry Safonov
2016-06-22 15:40 ` Kirill A. Shutemov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160622154039.GA18723@node.shutemov.name \
--to=kirill@shutemov.name \
--cc=arnd.bergmann@linaro.org \
--cc=broonie@linaro.org \
--cc=cov@codeaurora.org \
--cc=dsafonov@virtuozzo.com \
--cc=gorcunov@gmail.com \
--cc=linaro-dev@lists.linaro.org \
--cc=linux-mm@kvack.org \
--cc=luto@amacapital.net \
--cc=maxim.kuvyrkov@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).