Blob Blame History Raw
.\" Automatically generated by Pandoc 2.1.3
.\"
.TH "RPMEMD" "1" "2018-07-18" "PMDK - rpmemd version 1.4" "PMDK Programmer's Manual"
.hy
.\" Copyright 2014-2018, Intel Corporation
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\"
.\"     * Redistributions of source code must retain the above copyright
.\"       notice, this list of conditions and the following disclaimer.
.\"
.\"     * Redistributions in binary form must reproduce the above copyright
.\"       notice, this list of conditions and the following disclaimer in
.\"       the documentation and/or other materials provided with the
.\"       distribution.
.\"
.\"     * Neither the name of the copyright holder nor the names of its
.\"       contributors may be used to endorse or promote products derived
.\"       from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
.\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
.\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
.\" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
.\" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.SH NAME
.PP
\f[B]rpmemd\f[] \- librpmem target node process (EXPERIMENTAL)
.SH SYNOPSIS
.IP
.nf
\f[C]
$\ rpmemd\ [\-\-help]\ [\-\-version]\ [<args>]
\f[]
.fi
.SH DESCRIPTION
.PP
The \f[B]rpmemd\f[] process is executed on target node by
\f[B]librpmem\f[](7) library over \f[B]ssh\f[](1) and facilitates access
to persistent memory over RDMA.
The \f[B]rpmemd\f[] should not be run manually under normal conditions.
.SH OPTIONS
.PP
Command line options overwrite the default \f[B]rpmemd\f[]
configuration, the global configuration file and the user configuration
file.
.PP
\f[C]\-V,\ \-\-version\f[]
.PP
Displays \f[B]rpmemd\f[] version and exits.
.PP
\f[C]\-h,\ \-\-help\f[]
.PP
Prints synopsis and list of parameters and exits.
.PP
\f[C]\-c,\ \-\-config\ <path>\f[]
.PP
Custom configuration file location.
If the custom configuration file is provided others are omitted.
See \f[B]CONFIGURATION FILES\f[] section for details.
.PP
All options described in \f[B]CONFIGURATION FILES\f[] section are common
for both the configuration file and the command line \- the equivalent
of the following line in the config file:
.PP
\f[C]option\ =\ value\f[]
.PP
is
.PP
\f[C]\-\-option\ value\f[]
.PP
in the command line.
.PP
The following command line options: \f[B]\[en]persist\-apm\f[],
\f[B]\[en]persist\-general\f[] and \f[B]\[en]use\-syslog\f[] should not
be followed by any value.
Presence of each of them in the command line turns on an appropriate
option.
See \f[B]CONFIGURATION FILES\f[] section for details.
.PP
\f[C]\-r,\ \-\-remove\ <poolset>\f[]
.PP
Remove a pool described by given pool set file descriptor.
It is interpreted as a path to the pool set file relative to the pool
set directory.
.PP
\f[C]\-f,\ \-\-force\f[]
.PP
Ignore errors when removing a pool file using \f[B]\[en]remove\f[]
option.
.SH CONFIGURATION FILES
.PP
The \f[B]rpmemd\f[] searches for the configuration files with following
priorities:
.IP \[bu] 2
The global configuration file located in
\f[B]/etc/rpmemd/rpmemd.conf\f[].
.IP \[bu] 2
The user configuration file located in the user home directory
(\f[B]$HOME/.rpmemd.conf\f[]).
.PP
The \f[B]rpmemd\f[] can also read configuration from the custom
configuration file provided using \f[B]\[en]config\f[] command line
option.
See \f[B]OPTIONS\f[] section for details.
.PP
The default configuration is described in the \f[B]DEFAULT
CONFIGURATION\f[] section.
.PP
The configuration file is a plain text file.
Each line of the configuration file can store only one configuration
option defined as a \f[I]key=value\f[] pair.
Empty lines and lines starting with \f[I]#\f[] are omitted.
.PP
The allowed options are:
.IP \[bu] 2
\f[C]log\-file\ =\ <path>\f[] \- log file location
.IP \[bu] 2
\f[C]poolset\-dir\ =\ <path>\f[] \- pool set files directory
.IP \[bu] 2
\f[C]persist\-apm\ =\ {yes|no}\f[] \- enable \f[B]The Appliance
Persistency Method\f[].
This option must be set only if the target platform has non\-allocating
writes IO enabled.
See \f[B]PERSISTENCY METHODS\f[] section for details.
.IP \[bu] 2
\f[C]persist\-general\ =\ {yes|no}\f[] \- enable \f[B]The General
Purpose Server Persistency Method\f[].
See \f[B]PERSISTENCY METHODS\f[] section for details.
.IP \[bu] 2
\f[C]use\-syslog\ =\ {yes|no}\f[] \- use \f[B]syslog\f[](3) for logging
messages instead of log file
.IP \[bu] 2
\f[C]log\-level\ =\ <level>\f[] \- set log level value.
Accepted \f[I]<level>\f[] values are:
.RS 2
.IP \[bu] 2
\f[B]err\f[] \- error conditions
.IP \[bu] 2
\f[B]warn\f[] \- warning conditions
.IP \[bu] 2
\f[B]notice\f[] \- normal, but significant conditions
.IP \[bu] 2
\f[B]info\f[] \- informational message
.IP \[bu] 2
\f[B]debug\f[] \- debug\-level message
.RE
.PP
The \f[B]$HOME\f[] sub\-string in the \f[I]poolset\-dir\f[] path is
replaced with the current user home directory.
.SH EXAMPLE
.PP
Example of the configuration file:
.IP
.nf
\f[C]
#\ This\ is\ an\ example\ of\ configuration\ file
log\-file\ =\ $HOME/.logs/rpmemd.log
poolset\-dir\ =\ $HOME/poolsets/
persist\-apm\ =\ yes
persist\-general\ =\ no
use\-syslog\ =\ no\ #\ Use\ log\ file\ instead\ of\ syslog
log\-level\ =\ info
\f[]
.fi
.SH DEFAULT CONFIGURATION
.PP
The \f[B]rpmemd\f[] default configuration is equivalent of the following
configuration file:
.IP
.nf
\f[C]
log\-file\ =\ /var/log/rpmemd.log
poolset\-dir\ =\ $HOME
persist\-apm\ =\ no
persist\-general\ =\ yes
use\-syslog\ =\ yes
log\-level\ =\ err
\f[]
.fi
.SH PERSISTENCY METHODS
.PP
The \f[B]librpmem\f[](7) supports two methods for making data written to
remote persistent memory durable.
The difference between the use of the two mechanisms is based on whether
\f[B]librpmem\f[](7) will make use of non\-allocating writes on the
remote node.
.IP \[bu] 2
\f[B]The General Purpose Server Persistency Method\f[] does not have any
requirements for the platform on which the target daemon runs and can be
enabled by administrator using the \f[I]persist\-general\f[] option.
This method utilize \f[B]libpmem\f[](7) persistency mechanisms on remote
node and requires additional communication between initiator and remote
node using the in\-band connection.
.IP \[bu] 2
\f[B]The Appliance Persistency Method\f[] requires non\-allocating
writes enabled on the platform and can be enabled by administrator using
\f[I]persist\-apm\f[] option.
This method requires to issue an RDMA READ operation after the RDMA
WRITE operations performed on requested chunk of memory.
.PP
\[lq]Non\-allocating write requests\[rq] is the Intel Integrated IO
Controller mode where all incoming PCIe writes will utilize
non\-allocating buffers for the write requests.
Non\-allocating writes are guaranteed to bypass all of the CPU caches
and force the write requests to flow directly to the Integrated Memory
Controller without delay.
.PP
The \f[B]rpmemd\f[] dynamically choose the appropriate persistency
method and the flushing to persistence primitive for GPSPM for each
opened pool set name depending on available persistency methods and
whether all pool set parts are stored in the persistent memory.
.PP
If the \f[B]Appliance Persistency Method\f[] is enabled and the pool set
is stored in the persistent memory \f[B]rpmemd\f[] will use the
\f[B]Appliance Persistency Method\f[].
If the pool set is NOT stored in the persistent memory it will fallback
to the \f[B]General Puropose Server Persistency Method\f[] with
\f[B]pmem_msync\f[](3).
.PP
If the \f[B]General Puropose Server Persistency Method\f[] is enabled
and the pool set is stored in the persistent memory \f[B]rpmemd\f[] will
use \f[B]pmem_persist\f[](3).
If the pool set is NOT stored in the persistent momory it will use
\f[B]pmem_msync\f[](3).
.PP
See \f[B]pmem_persist\f[](3) and \f[B]pmem_msync\f[](3) for more
details.
.SH SEE ALSO
.PP
\f[B]ssh\f[](1), \f[B]pmem_msync\f[](3), \f[B]pmem_persist\f[](3),
\f[B]syslog\f[](3), \f[B]libpmem\f[](7), \f[B]libpmemobj\f[](7),
\f[B]librpmem\f[](7) and \f[B]<http://pmem.io>\f[]