RPMEMD(1)
π RPMEMD(1) β librpmem target node process (DEPRECATED)
okay bestie, welcome to the PMDK Programmer's Manual π this one's all about rpmemd, and listenβ¦ she's a legend but she's also deprecated, so read the whole thing, k? no skipping π
β¨ NAME β¨
rpmemd β the librpmem target node process π¦ (and yeah, she's DEPRECATED, we'll get there)
πΈ SYNOPSIS πΈ
$ rpmemd [--help] [--version] [<args>]
π« DESCRIPTION π«
So here's the tea π« β the rpmemd process gets executed on the target node by the librpmem(7) library, and it does that over ssh(1). Its whole job? Facilitating access to persistent memory over RDMA. Iconic behavior, truly.
π¨ lowkey important: rpmemd should NOT be run manually under normal conditions. Like, not me casually running it myselfβ¦ no ma'am. π
π OPTIONS π
Command line options overwrite the default rpmemd configuration, the global configuration file, and the user configuration file. They said "my rules now" πββοΈ
-V,--versionβ Displays therpmemdversion and dips out. βοΈ-h,--helpβ Prints the synopsis plus the list of parameters, then exits. free info, bestie π-c,--config<path>β Custom configuration file location. Heads up: if you pass a custom config file, the other ones are omitted entirely. See the CONFIGURATION FILES section for the deets. ποΈ-r,--remove<poolset>β Removes a pool described by the given pool set file descriptor. It's interpreted as a path to the pool set file relative to the pool set directory. bye bye pool π-f,--forceβ Ignores errors when removing a pool file using the--removeoption. chaos mode: enabled π₯
All options described in the CONFIGURATION FILES section are common for both the configuration file and the command line β the equivalent of this line in the config file:
option = value
is <em>this</em> on the command line:
--option value
And now the plot twist π β these three command line options: --persist-apm, --persist-general and --use-syslog should NOT be followed by any value. Just their presence on the command line turns the appropriate option on. See the CONFIGURATION FILES section for details. periodt.
ποΈ CONFIGURATION FILES ποΈ
rpmemd searches for configuration files in this priority order:
- The global configuration file, located in
/etc/rpmemd/rpmemd.conf. - The user configuration file, located in the user home directory (
$HOME/.rpmemd.conf).
rpmemd can also read configuration from a custom configuration file provided with the --config command line option. See the OPTIONS section for details. π
The default configuration is described in the DEFAULT CONFIGURATION section.
The configuration file is a plain text file. Each line can store only one configuration option, defined as a key=value pair. Empty lines and lines starting with # are omitted. π¬
The allowed options are:
log-file = <path>β log file locationpoolset-dir = <path>β pool set files directorypersist-apm = {yes|no}β enable The Appliance Persistency Method. This option must be set only if the target platform has non-allocating writes IO enabled. See the PERSISTENCY METHODS section for details.persist-general = {yes|no}β enable The General Purpose Server Persistency Method. See the PERSISTENCY METHODS section for details.use-syslog = {yes|no}β usesyslog(3)for logging messages instead of the log filelog-level = <level>β set the log level value. The accepted<level>values are:errβ error conditions πwarnβ warning conditions β οΈnoticeβ normal, but significant conditions πinfoβ informational message βΉοΈdebugβ debug-level message π
Also! The $HOME sub-string inside the poolset-dir path gets replaced with the current user home directory. cute, right? π
π EXAMPLE π
Example of the configuration file:
# 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
π DEFAULT CONFIGURATION π
The rpmemd default configuration is the equivalent of the following configuration file:
log-file = /var/log/rpmemd.log
poolset-dir = $HOME
persist-apm = no
persist-general = yes
use-syslog = yes
log-level = err
π₯ PERSISTENCY METHODS π₯
librpmem(7) supports two methods for making data written to remote persistent memory durable. The difference between them comes down to whether librpmem(7) will make use of non-allocating writes on the remote node. let's break it down bestie π§
- The General Purpose Server Persistency Method does not have any requirements for the platform on which the target daemon runs, and can be enabled by the administrator using the
persist-generaloption. This method utilizeslibpmem(7)persistency mechanisms on the remote node and requires additional communication between the initiator and the remote node using the in-band connection. - The Appliance Persistency Method requires non-allocating writes enabled on the platform, and can be enabled by the administrator using the
persist-apmoption. This method requires issuing an RDMA READ operation after the RDMA WRITE operations performed on the requested chunk of memory.
βNon-allocating write requestsβ 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. no cap, straight through π¨
rpmemd dynamically chooses the appropriate persistency method and the flushing-to-persistence primitive for GPSPM for each opened pool set name, depending on the available persistency methods and whether <em>all</em> pool set parts are stored in the persistent memory. it's giving adaptive β¨
- If the Appliance Persistency Method is enabled and the pool set IS stored in the persistent memory,
rpmemdwill use the Appliance Persistency Method. If the pool set is NOT stored in the persistent memory, it will fallback to the General Purpose Server Persistency Method withpmem_msync(3). - If the General Purpose Server Persistency Method is enabled and the pool set IS stored in the persistent memory,
rpmemdwill usepmem_persist(3). If the pool set is NOT stored in the persistent memory, it will usepmem_msync(3).
See pmem_persist(3) and pmem_msync(3) for more details. π
β οΈ NOTE β οΈ
Thelibrpmem(7)library andrpmemdare deprecated since the PMDK 1.12 release. If you're interested in remote persistent memory support, please look at the new libraryrpmaat <https://github.com/pmem/rpma>. π it's the end of an era, but we move π«Ά
π SEE ALSO π
ssh(1), pmem_msync(3), pmem_persist(3), syslog(3), libpmem(7), libpmemobj(7), librpmem(7) and <https://pmem.io>
and that's the whole page, bestie!! π this was rpmemd, PMDK - rpmemd version 1.4, dated 2022-08-25 β go forth and be iconic, ily, bye!! πβ¨π¦
π¦ where this page comes from
- debian bookworm: pmdk-tools 1.12.1-2 Β· BSD-3-Clause
- π the page's license: BSD-3-Clause
- Copyright 2016-2018, Intel Corporation
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms