axboe / fio

Flexible I/O Tester
GNU General Public License v2.0
5.28k stars 1.26k forks source link

how to enable these engines: "libpmem ,libpmemblk,'PMDK pmemblk','PMDK dev-dax','PMDK libpmem' #1048

Closed Wendy798 closed 4 years ago

Wendy798 commented 4 years ago
  1. the software version "fio-3.13" can be used for testing pmemblk ?? If so,how to enable the engine "libpmem ,libpmemblk,'PMDK pmemblk','PMDK dev-dax','PMDK libpmem'

================================================= [root@vm104 fio-master]# ./configure Operating system Linux CPU x86_64 Big endian no Compiler gcc Cross compile no

Static build no Wordsize 64 zlib yes Linux AIO support no POSIX AIO support yes POSIX AIO support needs -lrt yes POSIX AIO fsync yes POSIX pshared support yes Solaris AIO support no sync_fetch_and_add yes __sync_synchronize yes sync_val_compare_and_swap yes libverbs no rdmacm no asprintf() yes vasprintf() yes Linux fallocate yes POSIX fadvise yes POSIX fallocate yes sched_setaffinity(3 arg) yes sched_setaffinity(2 arg) no clock_gettime yes CLOCK_MONOTONIC yes CLOCK_MONOTONIC_RAW yes CLOCK_MONOTONIC_PRECISE no clockid_t yes gettimeofday yes fdatasync yes sync_file_range yes EXT4 move extent yes Linux splice(2) yes GUASI no libnuma no strsep yes strcasestr yes strlcat no getopt_long_only() yes inet_aton yes socklen_t yes thread yes RUSAGE_THREAD yes SCHED_IDLE yes TCP_NODELAY yes Net engine window_size yes TCP_MAXSEG yes RLIMIT_MEMLOCK yes pwritev/preadv yes pwritev2/preadv2 yes IPv6 helpers yes http engine no Rados engine no Rados Block Device engine no setvbuf yes Gluster API engine no s390_z196_facilities no HDFS engine no MTD yes libpmem no libpmemblk no PMDK pmemblk engine no PMDK dev-dax engine no PMDK libpmem engine no DDN's Infinite Memory Engine no lex/yacc for arithmetic no getmntent yes getmntinfo no Static Assert yes bool yes strndup yes Valgrind headers no Zoned block device support yes march_armv8_a_crc_crypto no cuda no mkdir(a, b) yes Build march=native yes CUnit no kernel_rwf_t yes -Wimplicit-fallthrough yes [root@vm104 fio-master]# fio

sitsofe commented 4 years ago

@Wendy798 You will need appropriate development libraries installed for your distro to have those engines compiled. As you didn't say which distro I can't say anything specific. As an example if it's Ubuntu I'd do a search like https://packages.ubuntu.com/search?searchon=contents&keywords=libpmem&mode=filename&suite=eoan&arch=any and guess libpmem-dev ...

Wendy798 commented 4 years ago

@sitsofe ,Thanks, the current OS is redhat 8.0 and kernel is 4.18.0. [root@vm104 examples]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.0 (Ootpa) [root@vm104 examples]# uname -a Linux vm104 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [root@vm104 examples]# uname -r 4.18.0-80.el8.x86_64 [root@vm104 examples]#

sitsofe commented 4 years ago

@Wendy798 the same principle applies - you need to look for whichever package provides the development headers for the engine in question and install that. Fo example you can look in the config.log file and see why the config test failed:

[...]
Compiling test case libpmem
gcc -D_GNU_SOURCE -include config-host.h -Werror-implicit-function-declaration -o /tmp/fio-conf--6916-.exe /tmp/fio-conf--6916-.c -lpmem -lnuma -libverbs -lrt -laio -lz
/tmp/fio-conf--6916-.c:1:10: fatal error: libpmem.h: No such file or directory
 #include <libpmem.h>
          ^~~~~~~~~~~
[...]

On RHEL you can probably run something like:

yum whatprovides *libpmem.h  

and see what it says (note I don't use RHEL so you may need to use another command).

Can you post back to let us know if that helps (and what you had to do) and if it does could you close this issue? Thanks!

Wendy798 commented 4 years ago

@sitsofe ,Thanks a million for your help . It's ok! The execution procedure and output as follows :

===================
[root@vm104 fio-master]# ./configure 
.......................
libpmem                       no
libpmemblk                    no
PMDK pmemblk engine           no
PMDK dev-dax engine           no
PMDK libpmem engine           no
.....................................
[root@vm104 fio-master]# yum whatprovides *libpmemblk.h
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:33:36 ago on Thu 23 Jul 2020 05:07:48 PM CST.
libpmemblk-devel-1.6.1-1.el8.x86_64 : Development files for the Persistent Memory Resident Array of Blocks library
Repo        : AppStream
Matched from:
Other       : *libpmemblk.h

[root@vm104 fio-master]# yum whatprovides *libpmem.h
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:33:43 ago on Thu 23 Jul 2020 05:07:48 PM CST.
libpmem-devel-1.6.1-1.el8.x86_64 : Development files for the low-level persistent memory library
Repo        : AppStream
Matched from:
Other       : *libpmem.h

[root@vm104 fio-master]# yum -y install libpmemblk-devel libpmem-devel
[root@vm104 fio-master]# rpm -qa|grep pmem
libpmem-devel-1.6.1-1.el8.x86_64
libpmemblk-devel-1.6.1-1.el8.x86_64
libpmemblk-1.6.1-1.el8.x86_64
libpmem-1.6.1-1.el8.x86_64
[root@vm104 fio-master]# ./configure 
MTD                           yes
libpmem                       yes
libpmemblk                    yes
PMDK pmemblk engine           yes
PMDK dev-dax engine           yes
PMDK libpmem engine           yes
...........

libpmem                       yes
libpmemblk                    yes
PMDK pmemblk engine           yes
PMDK dev-dax engine           yes
PMDK libpmem engine           yes