Skip to content
This repository was archived by the owner on Sep 5, 2023. It is now read-only.
This repository was archived by the owner on Sep 5, 2023. It is now read-only.

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

@grom72

Description

@grom72

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    FIOenhancementNew feature or requestwontfixThis will not be worked on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions