rpma
rpma copied to clipboard
FEAT: RPMA Fio Engine (server-side) support for offset
FEAT: RPMA Fio Engine (server-side) support for offset
Rationale
To enable running several engines sharing the same pmem file an offset is needed as a supported command option. https://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-offset
It is related to ongoing work to enable multiconnection configuration benchmarking as described in #1879 (draft).
Instead of several separate filename
it will be possible to share one file between several (at least two) jobs.
Description
The proposed change only concerns the server-side implementation of the DeviceDax PMem access.
Both offset
and offset_align
shall be supported.
librpma_fio.c
:
char *librpma_fio_allocate_pmem(struct thread_data *td, struct fio_file *f,
size_t size, struct librpma_fio_mem *mem)
...
if (f->filetype == FIO_TYPE_CHAR) {
/* Each thread uses a separate offset within DeviceDAX. */
ws_offset = (td->thread_number - 1) * size + f->file_offset ;
} else {
/* Each thread uses a separate FileSystemDAX file. No offset is needed. */
ws_offset = 0;
}
...
Please see https://github.com/pmem/rpma/blob/master/tools/perf/multiply_connection_benchmark.md for how to build a configuration with two parallel connections.
With the new parameter offset
one file can be used:
server.job
:
...
[server]
direct_write_to_pmem=${direct_write_to_pmem}
numjobs=${numjobs}
size=100MiB
serverip=${serverip}
filename=${filename1}
offset=0
[server]
direct_write_to_pmem=${direct_write_to_pmem}
numjobs=${numjobs}
size=100MiB
serverip=192.168.103.4
filename=${filename1}
offset=50%
...