blob: 81106e2e6997f07b27e3d15ce59d0be71dc0f043 [file] [log] [blame]
---
title: Locking Memory (Linux Systems Only)
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<a id="locking-memory"></a>
On Linux systems, you can lock memory to prevent the operating system from paging out heap or off-heap memory.
To use this feature:
1. Configure the operating system limits for locked memory. Increase the operating system's `ulimit -l` value (the maximum size that may be locked in memory) from the default (typically 32 KB or 64 KB) to at least the total amount of memory used by <%=vars.product_name%> for on-heap or off-heap storage. To view the current setting, enter `ulimit -a` at a shell prompt and find the value for `max locked memory`:
``` pre
# ulimit -a
...
max locked memory (kbytes, -l) 64
...
```
Use `ulimit -l max-size-in-kbytes` to raise the limit. For example, to set the locked memory limit to 64 GB:
``` pre
# ulimit -l 64000000
```
2. Using locked memory in this manner increases the time required to start <%=vars.product_name%>. The additional time required to start <%=vars.product_name%> depends on the total amount of memory used, and can range from several seconds to 10 minutes or more. To improve startup time and reduce the potential of member timeouts, instruct the kernel to free operating system page caches just before starting a <%=vars.product_name%> member by issuing the following command:
``` pre
$ echo 1 > /proc/sys/vm/drop_caches
```
3. Start each <%=vars.product_name%> data store with the gfsh `-lock-memory=true` option. If you deploy more than one server per host, begin by starting each server sequentially. Starting servers sequentially avoids a race condition in the operating system that can cause failures (even machine crashes) if you accidentally over-allocate the available RAM. After you verify that the system configuration is stable, you can then start servers concurrently.