diff options
author | Sverker Eriksson <[email protected]> | 2016-02-22 18:18:15 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-02-23 12:15:39 +0100 |
commit | 8e2a21f1df1140867d0b074ec7a86610d1e1b51e (patch) | |
tree | dc3edd24e9233f0b9c5b110f2e8bb6cc27141427 | |
parent | abe5967c1964a4ca93f321c6cd564c8650f11a53 (diff) | |
download | otp-8e2a21f1df1140867d0b074ec7a86610d1e1b51e.tar.gz otp-8e2a21f1df1140867d0b074ec7a86610d1e1b51e.tar.bz2 otp-8e2a21f1df1140867d0b074ec7a86610d1e1b51e.zip |
erts: Add emulator flag +MIscs for literal super carrier size
-rw-r--r-- | erts/doc/src/erts_alloc.xml | 10 | ||||
-rw-r--r-- | erts/emulator/beam/erl_alloc.c | 11 | ||||
-rw-r--r-- | erts/etc/common/erlexec.c | 1 |
3 files changed, 20 insertions, 2 deletions
diff --git a/erts/doc/src/erts_alloc.xml b/erts/doc/src/erts_alloc.xml index 75de74523e..0965f9b49c 100644 --- a/erts/doc/src/erts_alloc.xml +++ b/erts/doc/src/erts_alloc.xml @@ -566,6 +566,16 @@ set to <c>false</c>, <c>sys_alloc</c> carriers will never be created by allocators using the <c>alloc_util</c> framework.</item> </taglist> + <p>The following flag is special for <c>literal_alloc</c>:</p> + <taglist> + <tag><marker id="MIscs"/><c><![CDATA[+MIscs <size in MB>]]></c></tag> + <item> + <c>literal_alloc</c> super carrier size (in MB). The amount of + <em>virtual</em> address space reserved for literal terms in + Erlang code on 64-bit architectures. The default is 1024 (1GB) + and is usually sufficient. The flag is ignored on 32-bit + architectures.</item> + </taglist> <p>Instrumentation flags:</p> <taglist> <tag><marker id="Mim"/><c>+Mim true|false</c></tag> diff --git a/erts/emulator/beam/erl_alloc.c b/erts/emulator/beam/erl_alloc.c index 7c880342bd..a266ea6d19 100644 --- a/erts/emulator/beam/erl_alloc.c +++ b/erts/emulator/beam/erl_alloc.c @@ -1489,8 +1489,15 @@ handle_args(int *argc, char **argv, erts_alc_hndl_args_init_t *init) case 'B': handle_au_arg(&init->binary_alloc, &argv[i][3], argv, &i, 0); break; - case 'I': - handle_au_arg(&init->literal_alloc, &argv[i][3], argv, &i, 0); + case 'I': + if (has_prefix("scs", argv[i]+3)) { +#if HAVE_ERTS_MSEG + init->mseg.literal_mmap.scs = +#endif + get_mb_value(argv[i]+6, argv, &i); + } + else + handle_au_arg(&init->literal_alloc, &argv[i][3], argv, &i, 0); break; case 'D': handle_au_arg(&init->std_alloc, &argv[i][3], argv, &i, 0); diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c index 91204fda5c..54da59e50d 100644 --- a/erts/etc/common/erlexec.c +++ b/erts/etc/common/erlexec.c @@ -122,6 +122,7 @@ static char *plusM_other_switches[] = { "Ym", "Ytp", "Ytt", + "Iscs", NULL }; |