Age | Commit message (Collapse) | Author |
|
The commit removing pmemblk inadvertently removed dev-dax and
libpmem ioengines as well.
Tested-by: Yi Zhang yi.zhang@redhat.com
Fixes: 04c1cdc4c108c6537681ab7c50daaed6d2fb4c93 ("pmemblk: remove
pmemblk engine")
Fixes: https://github.com/axboe/fio/issues/1523
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
|
|
No further support or maintenance of the libpmemblk library is planned.
https://pmem.io/blog/2022/11/update-on-pmdk-and-our-long-term-support-strategy/
https://github.com/pmem/pmdk/pull/5538
Signed-off-by: osalyk <oksana.salyk@intel.com>
|
|
Before:
jensaxboe@Jenss-MacBook-Pro fio % ./fio --crctest=crc32c
crc32c: 440.18 MiB/sec
After:
ensaxboe@Jenss-MacBook-Pro fio % ./fio --crctest=crc32c
crc32c: 23923.00 MiB/sec
We know we have it on osx on arm hardware, enabling it is pretty
straightforward with that assumption.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
This file is auto-generated, and it currently spews the following
warning for me:
In function ‘setup_to_parse_string’,
inlined from ‘evaluate_arithmetic_expression’ at y.tab.c:1571:2:
y.tab.c:1559:9: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-truncation]
1559 | strncpy(lexer_input_buffer, string, len);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
y.tab.c:1556:19: note: length computed here
1556 | if (len > strlen(string))
| ^~~~~~~~~~~~~~
when compiled with:
gcc (Debian 12.2.0-14) 12.2.0
Just set -Wno-stringop-truncation unconditionally in the Makefile for
this file, don't think there's any point in checking if this warning
has been enabled manually.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
The libblkio library provides a unified API for efficiently accessing
block devices using modern high-performance block I/O interfaces like
io_uring and vhost-user-blk. Using libblkio reduces the amount of code
needed for interfacing with storage devices and allows developers to
focus on their applcations.
Add a libblkio engine that uses libblkio to perform I/O. This is useful
to benchmark the library itself, and also adds support for storage
interfaces and devices otherwise not supported by fio, such as
virtio-blk PCI, vhost-user, and vhost-vDPA devices.
See the libblkio documentation [2] or KVM Forum 2022 [3] presentation
for more information on the library itself.
[1] https://gitlab.com/libblkio/libblkio
[2] https://libblkio.gitlab.io/libblkio/index.html
[3] https://static.sched.com/hosted_files/kvmforum2022/8c/libblkio-kvm-forum-2022.pdf
Signed-off-by: Alberto Faria <afaria@redhat.com>
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
|
|
Prevent that struct nvme_uring_cmd detection fails as follows:
error: unused variable 'cmd' [-Werror=unused-variable]
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|
|
Prevent that the clock_gettime() and CLOCK_MONOTONIC tests fail as follows:
error: argument 2 null where non-null expected [-Werror=nonnull]
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|
|
Enable support for --zonemode=zbd on Android.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|
|
The libcufile probe now requires -ldl passsed to the linker.
Signed-off-by: Brian T. Smith <bsmith@systemfabricworks.com>
|
|
grep -P is not supported on FreeBSD. So use grep -E when we check
whether the value provided for --seed-buckets is a number or not.
Reported-by: Rebecca Cran <rebecca@bsdio.com>
Link: https://lore.kernel.org/fio/26076f36-54d5-ca6e-0b96-a7371b1c5e49@bsdio.com/T/#t
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
|
|
Add support for libpmem2 to librpma fio engine in the APM mode.
Signed-off-by: Kacper Stefanski <kacper.stefanski@intel.com>
|
|
The __fill_random_buf fills a buffer using the random 8byte integer to
write. But, this mechanism is depend on the CPU performance and could
not reach the max performance on the PCIe Gen5 devices. I have tested
128KB single worker sequential write on PCIe Gen5 NVMe, but it cannot
reach write throughput 6.0GB/s.
So, I have reviewed the __fill_random_buf and focused the multiplier
dependency to generate the random number. So, I have changed
__fill_random_buf using the multiple-random-seed to reduce the
dependencies in the small data filling loop.
I'll attach detail analysis result in the PR of this branch.
Signed-off-by: Sungup Moon <sungup.moon@samsung.com>
|
|
By default, build the nfs ioengine if configure can find libnfs.
Add a --disable-libnfs to avoid building the nfs ionegine even if
support could be found on the system.
Change the --enable-libnfs option to abort the build if libnfs cannot be
found.
Also use pkg-config to find the libnfs path instead of hard coding the
path.
Finally, drop CONFIG_NFS and use CONFIG_LIBNFS everywhere. There's no
reason to have two separate symbols.
Signed-off-by: Vincent Fu <vincentfu@gmail.com>
|
|
It's broken and nobody seems to be stepping up to fix it, revert the
known problematic change.
Fixes: 165b8a70f919 ("NFS configure fixes")
Link: https://github.com/axboe/fio/pull/1216
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Add option to disable xnvme build even if found.
Remove enable xnvme build option, as xnvme support
is already being probed.
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Link: https://lore.kernel.org/r/20220622112546.13503-2-ankit.kumar@samsung.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
The path of the libzbc header file is /usr/include/libzbc/libzbc/zbc.h
instead of /usr/include/libzbc/zbc.h on SUSE Linux systems. Add support
for the SUSE libzbc include path.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|
|
Fix the following classes of errors reported by gcc 12:
* ${variable} may be used uninitialized.
* ${variable} is set but not used.
* argument 2 is null but the corresponding size argument 3 value is 1 [-Werror=nonnull]
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|
|
Modify configure to check availability of nvme_uring_cmd, but only
when the target OS is Linux. This way in the follow up patch we
can define the missing structure to prevent compilation errors.
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Link: https://lore.kernel.org/r/20220531133155.17493-3-ankit.kumar@samsung.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Recent Debian-based distributions provide zlib support in the zlib1g-dev
package.
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
Link: https://lore.kernel.org/r/20220524142229.135808-3-vincent.fu@samsung.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
This patch introduces a new fio engine to work with xNVMe >= 0.2.0.
xNVMe provides a user space library (libxnvme) to work with NVMe
devices. The NVMe driver being used by libxnvme is re-targetable and
can be any one of the GNU/Linux Kernel NVMe driver via libaio,
IOCTLs, io_uring, the SPDK NVMe driver, or your own custom NVMe driver.
For more info visit https://xnvme.io
https://github.com/OpenMPDK/xNVMe
Co-Authored-By: Ankit Kumar <ankit.kumar@samsung.com>
Co-Authored-By: Simon A. F. Lund <simon.lund@samsung.com>
Co-Authored-By: Mads Ynddal <m.ynddal@samsung.com>
Co-Authored-By: Michael Bang <mi.bang@samsung.com>
Co-Authored-By: Karl Bonde Torp <k.torp@samsung.com>
Co-Authored-By: Gurmeet Singh <gur.singh@samsung.com>
Co-Authored-By: Pierre Labat <plabat@micron.com>
Link: https://lore.kernel.org/r/20220511163019.5608-2-ankit.kumar@samsung.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
* 'improvement/enable-asan' of https://github.com/dpronin/fio:
ASAN enabling when configuring
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
introduced opportunity for a user to enable ASAN for the compiler
when calling 'configure' script using '--enable-asan' option
Signed-off-by: Denis Pronin <dannftk@yandex.ru>
|
|
tabs are replaced by whitespaces in help page
Signed-off-by: Denis Pronin <dannftk@yandex.ru>
|
|
Signed-off-by: Denis Pronin <dannftk@yandex.ru>
|
|
https://github.com/ldorau/fio
* 'rpma-update-RPMA-engines-with-new-librpma-completions-API' of https://github.com/ldorau/fio:
rpma: update RPMA engines with new librpma completions API
rpma: RPMA engines require librpma>=v0.11.0 with rpma_cq_get_wc()
|
|
Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
|
|
Apparently used a mix of the two, inconsistently.
Fixes: a04e0665cb5d ("Use fcntl(..., F_FULLSYNC) if available")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Some operating systems don't perform a data integrity flush when
fsync() is done, but provide fcntl(fd, F_FULLSYNC) to provide that kind
of guarantee.
To ensure that comparisons between operating systems is fair, use
fcntl() to do a proper sync if available.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
|
|
Do what check_min_lib_version() does to not print the error message
when pkg-config doesn't exist.
--
DAOS File System (dfs) Engine no
./configure: pkg-config: not found
NFS engine no
Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
|
|
* 'taras/nfs-upstream' of https://github.com/tarasglek/fio-1:
clean up nfs example
skip skeleton comments
single line bodies
C-style comments
NFS configure fixes
NFS engine
|
|
The following shell statement:
if eval "echo \$$_feature" = "yes" ; then
executes:
echo $... = "yes"
It does not actually compare the variable named by $_feature to the
string "yes".
Add the missing "test" call so the comparison happens as intended and
wrap the eval so it doesn't include the = "yes".
Fixes: 3e48f7c9de61 ("configure: fix syntax error with NetBSD")
Cc: Dmitry Fomichev <dmitry.fomichev@wdc.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
|
|
|
|
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
* 'add-librpma-engines' of https://github.com/janekmi/fio:
rpma: add librpma_apm_* and librpma_gpspm_* engines
|
|
DAOS is a new scale-out open-source object store.
See https://github.com/daos-stack/daos for more information.
This patch adds a new fio engine to support the filesystem layer built
on top of DAOS called DFS (DAOS File System). It supports asynchronous
read/write operations.
Signed-off-by: Johann Lombardi <johann.lombardi@intel.com>
Co-authored-by: Mohamad Chaarawi <mohamad.chaarawi@intel.com>
Co-authored-by: Vishwanath Venkatesan <vishwanath.venkatesan@intel.com>
Co-authored-by: Ioannis Galanis <ioannis.galanis@intel.com>
|
|
Signed-off-by: Johann Lombardi <johann.lombardi@intel.com>
|
|
The Remote Persistent Memory Access (RPMA) Library is a C library
created to simplify accessing persistent memory on remote hosts over
Remote Direct Memory Access (RDMA).
The librpma_apm_client and librpma_apm_server is a pair of engines
which allows benchmarking persistent writes achieved via
the Appliance Persistency Method (APM; natively supported by
the librpma library) and regular reads (a part of the RDMA standard).
The librpma_gpspm_client and librpma_gpspm_server is a pair of
engines which allows benchmarking persistent writes achieved via
the General Purpose Persistency Method (GPSPM; build on top of
the librpma API).
The librpma library is available here: https://github.com/pmem/rpma
along with the set of scripts using the newly introduced engines
to construct miscellaneous benchmarking scenarios:
https://github.com/pmem/rpma/tree/master/tools/perf
The full history of the development of the librpma fio engines
is available at: https://github.com/pmem/fio/tree/rpma
Co-Authored-By: Lukasz Dorau <lukasz.dorau@intel.com>
Co-Authored-By: Tomasz Gromadzki <tomasz.gromadzki@intel.com>
Co-Authored-By: Jan Michalski <jan.m.michalski@intel.com>
Co-Authored-By: Oksana Salyk <oksana.salyk@intel.com>
|
|
The symbols are not used in the code and the respective probes were
removed in commits 187f39063e1b0a7baeda20a9f4f2406327ec0d41 and
69212fc41c0420f8caf272a0cc270194edbddfe7.
Signed-off-by: Fotis Xenakis <foxen@windowslive.com>
|
|
The current test for libpmem in 'configure' fails
in the following way:
$ gcc test.c -lpmem
test.c: In function ‘main’:
test.c:6:27: warning: passing argument 2 of ‘pmem_is_pmem’ \
makes integer from pointer \
without a cast [-Wint-conversion]
6 | rc = pmem_is_pmem(NULL, NULL);
| ^~~~
| |
| void *
In file included from test.c:1:
/usr/include/libpmem.h:92:43: note: expected ‘size_t’ \
{aka ‘long unsigned int’} but argument \
is of type ‘void *’
92 | int pmem_is_pmem(const void *addr, size_t len);
| ~~~~~~~^~~
Fix it.
|
|
Running fio on an ESX host fails due to the lack of support for file
descriptor based notifications of timer expiration. This change
bypasses patch 696378af added to increase timer accuracy.
Signed-off-by: Brian 'Redbeard' Harrington <redbeard@redhat.com>
|
|
* 'osx_fix' of https://github.com/sitsofe/fio:
configure: fix compilation on recent macOS Xcode versions
|
|
Back in ccf2d89d39b21bc8c7b497b40be5b82eadb80863 ("configure: try to
disable weak linking on OSX") disabling weak symbols was done to prevent
depending on features when building on a newer macOS but targeting an
older one. Fast-forward to Xcode 11.4 and it turns out Apple have broken
this by depending on weak symbols for critical symbols like FD_SET
leading to compilation errors like the following
ld: weak import of symbol '___darwin_check_fd_set_overflow' not supported because of option: -no_weak_imports for architecture x86_64
Other people/projects have been hit by this issue:
- https://openradar.appspot.com/FB7647406
- https://github.com/mono/mono/issues/19393
but Apple have kept this behaviour into XCode 12 so we should adapt.
- Introduce the concept of configure only CFLAGS
- Switch to using -Werror=partial-availability with the above
- Stop logging a message about disabling weak linking
The above should avoid finding features the target platform doesn't have
while allowing weak linking. The name CONFIGURE_CFLAGS is used to remain
similar to QEMU's configure. Fingers crossed this approach stays
supported by Apple...
Fixes https://github.com/axboe/fio/issues/1006
Signed-off-by: Sitsofe Wheeler <sitsofe@yahoo.com>
|
|
Windows 2003 has been EOL since 2015 and Windows XP has been EOL since
2014. Technically fio hasn't been properly targetting XP anyway - (see
16d40a15783f9181d64082fc00a970dff485798f 'configure: be explicit about
"XP" Windows API version').
- Strip out support for XP and change the documentation to no longer
mention it
- Stop targetting XP in the CI 32 bit build
Next stop, Windows 7...
Signed-off-by: Sitsofe Wheeler <sitsofe@yahoo.com>
|
|
The libcufile I/O engine uses NVIDIA GPUDirect Storage (GDS) cuFile API to perform
synchronous I/O directly against GPU buffers via nvidia-fs and a GDS-supported
filesystem.
'configure --enable-libcufile' enables the libcufile engine.
CFLAGS must specify the location of CUDA and cuFile headers.
e.g. CFLAGS="-I/usr/local/cuda/include -I/usr/local/cuda/lib64"
LDFLAGS must specify the location of CUDA and cuFile libraries.
e.g. LDFLAGS="-L/usr/local/cuda/lib64"
The paths used in CFLAGS and LDFLAGS depend upon the build host's
CUDA installation.
libcufile adds the following optons: gpu_dev_ids, cuda_io
Usage is documented in HOWTO, fio.1, examples/libcufile-cufile.fio
and examples/libcufile-posix.fio.
Note that enabling verify when cuda_io=cufile necessitates
cudaMemcpy() to populate the GPU buffer on a write and populate the
CPU buffer on a read. The primary goal of GDS is to not copy data
between CPU and GPU buffers.
Signed-off-by: Brian T. Smith <bsmith@systemfabricworks.com>
|
|
This was missed in the previous patch.
Fixes: d4946e79e833 ("Remove the "libaio over io_uring" mode")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Not going to maintain this mode in liburing, so just get rid of it. It's
also caused some confusion where users think they need this enabled to
run io_uring, which isn't the case.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
The helper_thread uses select() to wait for the next event. select() rounds
up its timeout argument to 1 / HZ. Increase timer accuracy by using a
high-res timer if possible. This patch has been tested by running the
following fio command and by verifying that the next_log and
msec_to_next_event were always above 100 ms:
./fio --debug=helperthread --bandwidth-log --write_bw_log=log --log_avg_msec=1000 --ioengine=null --name=null --size=1G --rw=randwrite --loops=999999 --runtime=60
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|
|
Introduce a new function for querying the monotonic clock, something that
is necessary in every context where relative time is measured and where
wall clock time jumps should have no effect. Remove fill_clock_gettime()
since the only contexts where CLOCK_MONOTONIC_RAW are used are
get_cycles_per_msec() and --clocksource=clock_gettime. I think both contexts
should use CLOCK_MONOTONIC instead of its raw variant such that the values
read from the clock are frequency adjusted (a computer clock crystal can
deviate up to 500 ppm from its nominal frequency).
This patch improves accuracy of the helper_thread code on Darwin. Darwin
supports CLOCK_MONOTONIC but not pthread_condattr_setclock(). In other
words, this patch causes the helper thread code to switch from the
real-time clock to the monotonic clock on Darwin.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|