1RPMEMD(1) PMDK Programmer's Manual RPMEMD(1)
2
3
4
6 rpmemd - librpmem target node process (EXPERIMENTAL)
7
9 $ rpmemd [--help] [--version] [<args>]
10
12 The rpmemd process is executed on target node by librpmem(7) library
13 over ssh(1) and facilitates access to persistent memory over RDMA. The
14 rpmemd should not be run manually under normal conditions.
15
17 Command line options overwrite the default rpmemd configuration, the
18 global configuration file and the user configuration file.
19
20 -V, --version
21
22 Displays rpmemd version and exits.
23
24 -h, --help
25
26 Prints synopsis and list of parameters and exits.
27
28 -c, --config <path>
29
30 Custom configuration file location. If the custom configuration file
31 is provided others are omitted. See CONFIGURATION FILES section for
32 details.
33
34 All options described in CONFIGURATION FILES section are common for
35 both the configuration file and the command line - the equivalent of
36 the following line in the config file:
37
38 option = value
39
40 is
41
42 --option value
43
44 in the command line.
45
46 The following command line options: –persist-apm, –persist-general and
47 –use-syslog should not be followed by any value. Presence of each of
48 them in the command line turns on an appropriate option. See CONFIGU‐
49 RATION FILES section for details.
50
51 -r, --remove <poolset>
52
53 Remove a pool described by given pool set file descriptor. It is in‐
54 terpreted as a path to the pool set file relative to the pool set di‐
55 rectory.
56
57 -f, --force
58
59 Ignore errors when removing a pool file using –remove option.
60
62 The rpmemd searches for the configuration files with following priori‐
63 ties:
64
65 • The global configuration file located in /etc/rpmemd/rpmemd.conf.
66
67 • The user configuration file located in the user home directory
68 ($HOME/.rpmemd.conf).
69
70 The rpmemd can also read configuration from the custom configuration
71 file provided using –config command line option. See OPTIONS section
72 for details.
73
74 The default configuration is described in the DEFAULT CONFIGURATION
75 section.
76
77 The configuration file is a plain text file. Each line of the configu‐
78 ration file can store only one configuration option defined as a
79 key=value pair. Empty lines and lines starting with # are omitted.
80
81 The allowed options are:
82
83 • log-file = <path> - log file location
84
85 • poolset-dir = <path> - pool set files directory
86
87 • persist-apm = {yes|no} - enable The Appliance Persistency Method.
88 This option must be set only if the target platform has non-allocat‐
89 ing writes IO enabled. See PERSISTENCY METHODS section for details.
90
91 • persist-general = {yes|no} - enable The General Purpose Server Per‐
92 sistency Method. See PERSISTENCY METHODS section for details.
93
94 • use-syslog = {yes|no} - use syslog(3) for logging messages instead of
95 log file
96
97 • log-level = <level> - set log level value. Accepted <level> values
98 are:
99
100 • err - error conditions
101
102 • warn - warning conditions
103
104 • notice - normal, but significant conditions
105
106 • info - informational message
107
108 • debug - debug-level message
109
110 The $HOME sub-string in the poolset-dir path is replaced with the cur‐
111 rent user home directory.
112
114 Example of the configuration file:
115
116 # This is an example of configuration file
117 log-file = $HOME/.logs/rpmemd.log
118 poolset-dir = $HOME/poolsets/
119 persist-apm = yes
120 persist-general = no
121 use-syslog = no # Use log file instead of syslog
122 log-level = info
123
125 The rpmemd default configuration is equivalent of the following config‐
126 uration file:
127
128 log-file = /var/log/rpmemd.log
129 poolset-dir = $HOME
130 persist-apm = no
131 persist-general = yes
132 use-syslog = yes
133 log-level = err
134
136 The librpmem(7) supports two methods for making data written to remote
137 persistent memory durable. The difference between the use of the two
138 mechanisms is based on whether librpmem(7) will make use of non-allo‐
139 cating writes on the remote node.
140
141 • The General Purpose Server Persistency Method does not have any re‐
142 quirements for the platform on which the target daemon runs and can
143 be enabled by administrator using the persist-general option. This
144 method utilize libpmem(7) persistency mechanisms on remote node and
145 requires additional communication between initiator and remote node
146 using the in-band connection.
147
148 • The Appliance Persistency Method requires non-allocating writes en‐
149 abled on the platform and can be enabled by administrator using per‐
150 sist-apm option. This method requires to issue an RDMA READ opera‐
151 tion after the RDMA WRITE operations performed on requested chunk of
152 memory.
153
154 “Non-allocating write requests” is the Intel Integrated IO Controller
155 mode where all incoming PCIe writes will utilize non-allocating buffers
156 for the write requests. Non-allocating writes are guaranteed to bypass
157 all of the CPU caches and force the write requests to flow directly to
158 the Integrated Memory Controller without delay.
159
160 The rpmemd dynamically choose the appropriate persistency method and
161 the flushing to persistence primitive for GPSPM for each opened pool
162 set name depending on available persistency methods and whether all
163 pool set parts are stored in the persistent memory.
164
165 If the Appliance Persistency Method is enabled and the pool set is
166 stored in the persistent memory rpmemd will use the Appliance Persis‐
167 tency Method. If the pool set is NOT stored in the persistent memory
168 it will fallback to the General Puropose Server Persistency Method with
169 pmem_msync(3).
170
171 If the General Puropose Server Persistency Method is enabled and the
172 pool set is stored in the persistent memory rpmemd will use pmem_per‐
173 sist(3). If the pool set is NOT stored in the persistent momory it
174 will use pmem_msync(3).
175
176 See pmem_persist(3) and pmem_msync(3) for more details.
177
179 ssh(1), pmem_msync(3), pmem_persist(3), syslog(3), libpmem(7), libpmem‐
180 obj(7), librpmem(7) and <https://pmem.io>
181
182
183
184PMDK - rpmemd version 1.4 2021-07-22 RPMEMD(1)