diff --git a/configure.py b/configure.py index 22861a10eeac54..16c1365c1a62bf 100755 --- a/configure.py +++ b/configure.py @@ -395,8 +395,7 @@ parser.add_option('--use-largepages', action='store_true', dest='node_use_large_pages', - help='build with Large Pages support. This feature is supported only on Linux kernel' + - '>= 2.6.38 with Transparent Huge pages enabled') + help='This option has no effect. --use-largepages is now a runtime option.') intl_optgroup.add_option('--with-intl', action='store', @@ -1025,23 +1024,12 @@ def configure_node(o): else: o['variables']['node_use_dtrace'] = 'false' - if options.node_use_large_pages and flavor != 'linux': - raise Exception( - 'Large pages are supported only on Linux Systems.') - if options.node_use_large_pages and flavor == 'linux': - if options.shared or options.enable_static: - raise Exception( - 'Large pages are supported only while creating node executable.') - if target_arch!="x64": - raise Exception( - 'Large pages are supported only x64 platform.') - # Example full version string: 2.6.32-696.28.1.el6.x86_64 - FULL_KERNEL_VERSION=os.uname()[2] - KERNEL_VERSION=FULL_KERNEL_VERSION.split('-')[0] - if KERNEL_VERSION < "2.6.38": - raise Exception( - 'Large pages need Linux kernel version >= 2.6.38') - o['variables']['node_use_large_pages'] = b(options.node_use_large_pages) + if options.node_use_large_pages: + warn('''The `--use-largepages` option has no effect during build time. + Support for mapping to large pages is now a runtime option of Node.js. + Run `node --use-largepages` or add `--use-largepages` to the + `NODE_OPTIONS` environment variable once Node.js is built to enable + mapping to large pages.''') if options.no_ifaddrs: o['defines'] += ['SUNOS_NO_IFADDRS'] diff --git a/doc/api/cli.md b/doc/api/cli.md index 57e2f8e8f0fb46..7eb43c648e2167 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -480,6 +480,22 @@ environment variables. See `SSL_CERT_DIR` and `SSL_CERT_FILE`. +### `--use-largepages=mode` + + +Re-map the Node.js static code to large memory pages at startup. If supported on +the target system, this will cause the Node.js static code to be moved onto 2 +MiB pages instead of 4 KiB pages. + +The following values are valid for `mode`: +* `off`: No mapping will be attempted. This is the default. +* `on`: If supported by the OS, mapping will be attempted. Failure to map will + be ignored and a message will be printed to standard error. +* `silent`: If supported by the OS, mapping will be attempted. Failure to map + will be ignored and will not be reported. + ### `--v8-options`