rpma icon indicating copy to clipboard operation
rpma copied to clipboard

FEAT: RPMA Fio Engine (server-side) support for offset

Open grom72 opened this issue 2 years ago • 0 comments

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%
...

grom72 avatar Jul 11 '22 14:07 grom72