Message ID | 20231109154638.488213-4-yuan1.liu@intel.com |
---|---|
State | New |
Headers | show |
Series | Live Migration Acceleration with IAA Compression | expand |
Yuan Liu <yuan1.liu@intel.com> writes: > the Query Processing Library (QPL) is an open-source library that > supports data compression and decompression features. > > add --enable-qpl and --disable-qpl options to enable and disable > the QPL compression accelerator. The QPL compression accelerator > can accelerate the Zlib compression algorithm during the live migration. > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > --- > meson.build | 7 +++++++ > meson_options.txt | 2 ++ > scripts/meson-buildoptions.sh | 3 +++ > 3 files changed, 12 insertions(+) > > diff --git a/meson.build b/meson.build > index 259dc5f308..b4ba30b4fa 100644 > --- a/meson.build > +++ b/meson.build > @@ -1032,6 +1032,11 @@ if not get_option('zstd').auto() or have_block > required: get_option('zstd'), > method: 'pkg-config') > endif > +qpl = not_found > +if not get_option('qpl').auto() > + qpl = dependency('libqpl', required: get_option('qpl'), > + method: 'pkg-config') > +endif Hm.. I'm not having success with pkg-config: ../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried pkgconfig It seems it doesn't find the static library. I had to use this instead: qpl = declare_dependency(dependencies: cc.find_library('qpl', required: get_option('qpl'))) What am I missing here? > virgl = not_found > > have_vhost_user_gpu = have_tools and targetos == 'linux' and pixman.found() > @@ -2165,6 +2170,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim) > config_host_data.set('CONFIG_STATX', has_statx) > config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) > config_host_data.set('CONFIG_ZSTD', zstd.found()) > +config_host_data.set('CONFIG_QPL', qpl.found()) > config_host_data.set('CONFIG_FUSE', fuse.found()) > config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) > config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found()) > @@ -4325,6 +4331,7 @@ summary_info += {'snappy support': snappy} > summary_info += {'bzip2 support': libbzip2} > summary_info += {'lzfse support': liblzfse} > summary_info += {'zstd support': zstd} > +summary_info += {'Query Processing Library support': qpl} > summary_info += {'NUMA host support': numa} > summary_info += {'capstone': capstone} > summary_info += {'libpmem support': libpmem} > diff --git a/meson_options.txt b/meson_options.txt > index 3c7398f3c6..71cd533985 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -255,6 +255,8 @@ option('xkbcommon', type : 'feature', value : 'auto', > description: 'xkbcommon support') > option('zstd', type : 'feature', value : 'auto', > description: 'zstd compression support') > +option('qpl', type : 'feature', value : 'auto', > + description: 'Query Processing Library support') > option('fuse', type: 'feature', value: 'auto', > description: 'FUSE block device export') > option('fuse_lseek', type : 'feature', value : 'auto', > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh > index 7ca4b77eae..0909d1d517 100644 > --- a/scripts/meson-buildoptions.sh > +++ b/scripts/meson-buildoptions.sh > @@ -220,6 +220,7 @@ meson_options_help() { > printf "%s\n" ' Xen PCI passthrough support' > printf "%s\n" ' xkbcommon xkbcommon support' > printf "%s\n" ' zstd zstd compression support' > + printf "%s\n" ' qpl Query Processing Library support' > } > _meson_option_parse() { > case $1 in > @@ -556,6 +557,8 @@ _meson_option_parse() { > --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; > --enable-zstd) printf "%s" -Dzstd=enabled ;; > --disable-zstd) printf "%s" -Dzstd=disabled ;; > + --enable-qpl) printf "%s" -Dqpl=enabled ;; > + --disable-qpl) printf "%s" -Dqpl=disabled ;; > *) return 1 ;; > esac > } > -- > 2.39.3
> -----Original Message----- > From: Fabiano Rosas <farosas@suse.de> > Sent: Saturday, December 2, 2023 1:45 AM > To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com; > peterx@redhat.com; leobras@redhat.com > Cc: qemu-devel@nongnu.org; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai > <nanhai.zou@intel.com> > Subject: Re: [PATCH v2 3/4] configure: add qpl option > > Yuan Liu <yuan1.liu@intel.com> writes: > > > the Query Processing Library (QPL) is an open-source library that > > supports data compression and decompression features. > > > > add --enable-qpl and --disable-qpl options to enable and disable the > > QPL compression accelerator. The QPL compression accelerator can > > accelerate the Zlib compression algorithm during the live migration. > > > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > > --- > > meson.build | 7 +++++++ > > meson_options.txt | 2 ++ > > scripts/meson-buildoptions.sh | 3 +++ > > 3 files changed, 12 insertions(+) > > > > diff --git a/meson.build b/meson.build index 259dc5f308..b4ba30b4fa > > 100644 > > --- a/meson.build > > +++ b/meson.build > > @@ -1032,6 +1032,11 @@ if not get_option('zstd').auto() or have_block > > required: get_option('zstd'), > > method: 'pkg-config') endif > > +qpl = not_found > > +if not get_option('qpl').auto() > > + qpl = dependency('libqpl', required: get_option('qpl'), > > + method: 'pkg-config') endif > > Hm.. I'm not having success with pkg-config: > > ../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried > pkgconfig > > It seems it doesn't find the static library. I had to use this instead: > > qpl = declare_dependency(dependencies: cc.find_library('qpl', > required: get_option('qpl'))) > > What am I missing here? Sorry about this, the QPL repo(https://github.com/intel/qpl) does not yet support libqpl pkg-config file, we are in the process of adding this functionality and we hope to resolve libqpl's dependencies through pkg-config file. I will explicitly address this issue and provide relevant documentation in the next version. For the pkg-config test, 1. create /usr/lib64/pkgconfig/libqpl.pc 2. add below lines prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: libqpl Description: Intel Query Processing Library Version: 1.3.0 Libs: -L${libdir} -lqpl -lpthread -laccel-config -ldl -lstdc++ Cflags: -I${includedir} 3. Install the header files to /usr/local/include/qpl and static library to /usr/local/lib64/libqpl.a > > virgl = not_found > > > > have_vhost_user_gpu = have_tools and targetos == 'linux' and > > pixman.found() @@ -2165,6 +2170,7 @@ > > config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim) > > config_host_data.set('CONFIG_STATX', has_statx) > > config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) > > config_host_data.set('CONFIG_ZSTD', zstd.found()) > > +config_host_data.set('CONFIG_QPL', qpl.found()) > > config_host_data.set('CONFIG_FUSE', fuse.found()) > > config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) > > config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found()) > > @@ -4325,6 +4331,7 @@ summary_info += {'snappy support': snappy} > > summary_info += {'bzip2 support': libbzip2} > > summary_info += {'lzfse support': liblzfse} > > summary_info += {'zstd support': zstd} > > +summary_info += {'Query Processing Library support': qpl} > > summary_info += {'NUMA host support': numa} > > summary_info += {'capstone': capstone} > > summary_info += {'libpmem support': libpmem} > > diff --git a/meson_options.txt b/meson_options.txt index > > 3c7398f3c6..71cd533985 100644 > > --- a/meson_options.txt > > +++ b/meson_options.txt > > @@ -255,6 +255,8 @@ option('xkbcommon', type : 'feature', value : > 'auto', > > description: 'xkbcommon support') option('zstd', type : > > 'feature', value : 'auto', > > description: 'zstd compression support') > > +option('qpl', type : 'feature', value : 'auto', > > + description: 'Query Processing Library support') > > option('fuse', type: 'feature', value: 'auto', > > description: 'FUSE block device export') option('fuse_lseek', > > type : 'feature', value : 'auto', diff --git > > a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index > > 7ca4b77eae..0909d1d517 100644 > > --- a/scripts/meson-buildoptions.sh > > +++ b/scripts/meson-buildoptions.sh > > @@ -220,6 +220,7 @@ meson_options_help() { > > printf "%s\n" ' Xen PCI passthrough support' > > printf "%s\n" ' xkbcommon xkbcommon support' > > printf "%s\n" ' zstd zstd compression support' > > + printf "%s\n" ' qpl Query Processing Library support' > > } > > _meson_option_parse() { > > case $1 in > > @@ -556,6 +557,8 @@ _meson_option_parse() { > > --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; > > --enable-zstd) printf "%s" -Dzstd=enabled ;; > > --disable-zstd) printf "%s" -Dzstd=disabled ;; > > + --enable-qpl) printf "%s" -Dqpl=enabled ;; > > + --disable-qpl) printf "%s" -Dqpl=disabled ;; > > *) return 1 ;; > > esac > > } > > -- > > 2.39.3
"Liu, Yuan1" <yuan1.liu@intel.com> writes: >> -----Original Message----- >> From: Fabiano Rosas <farosas@suse.de> >> Sent: Saturday, December 2, 2023 1:45 AM >> To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com; >> peterx@redhat.com; leobras@redhat.com >> Cc: qemu-devel@nongnu.org; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai >> <nanhai.zou@intel.com> >> Subject: Re: [PATCH v2 3/4] configure: add qpl option >> >> Yuan Liu <yuan1.liu@intel.com> writes: >> >> > the Query Processing Library (QPL) is an open-source library that >> > supports data compression and decompression features. >> > >> > add --enable-qpl and --disable-qpl options to enable and disable the >> > QPL compression accelerator. The QPL compression accelerator can >> > accelerate the Zlib compression algorithm during the live migration. >> > >> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> >> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> >> > --- >> > meson.build | 7 +++++++ >> > meson_options.txt | 2 ++ >> > scripts/meson-buildoptions.sh | 3 +++ >> > 3 files changed, 12 insertions(+) >> > >> > diff --git a/meson.build b/meson.build index 259dc5f308..b4ba30b4fa >> > 100644 >> > --- a/meson.build >> > +++ b/meson.build >> > @@ -1032,6 +1032,11 @@ if not get_option('zstd').auto() or have_block >> > required: get_option('zstd'), >> > method: 'pkg-config') endif >> > +qpl = not_found >> > +if not get_option('qpl').auto() >> > + qpl = dependency('libqpl', required: get_option('qpl'), >> > + method: 'pkg-config') endif >> >> Hm.. I'm not having success with pkg-config: >> >> ../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried >> pkgconfig >> >> It seems it doesn't find the static library. I had to use this instead: >> >> qpl = declare_dependency(dependencies: cc.find_library('qpl', >> required: get_option('qpl'))) >> >> What am I missing here? > Sorry about this, the QPL repo(https://github.com/intel/qpl) does not yet support libqpl pkg-config file, we are in the process of adding this functionality and we hope to resolve libqpl's dependencies through pkg-config file. > I will explicitly address this issue and provide relevant documentation in the next version. Ok, just remember to test with a clean setup next time. > > For the pkg-config test, > 1. create /usr/lib64/pkgconfig/libqpl.pc > 2. add below lines > prefix=/usr/local > exec_prefix=${prefix} > libdir=${exec_prefix}/lib > includedir=${prefix}/include > > Name: libqpl > Description: Intel Query Processing Library > Version: 1.3.0 > Libs: -L${libdir} -lqpl -lpthread -laccel-config -ldl -lstdc++ We could probably do this with meson directly instead of requiring a pkg-config preliminary setup. My meson-fu is not the best, but something like: qpl = declare_dependency(dependencies: [ cc.find_library('qpl', required: get_option('qpl')), cc.find_library('accel-config', required: get_option('qpl')), ... ], link_args: ['-lstdc++', ...]) > Cflags: -I${includedir} > > 3. Install the header files to /usr/local/include/qpl and static library to /usr/local/lib64/libqpl.a For this part is ok to just point to the official docs.
> -----Original Message----- > From: Fabiano Rosas <farosas@suse.de> > Sent: Monday, December 4, 2023 8:30 PM > To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com; > peterx@redhat.com; leobras@redhat.com > Cc: qemu-devel@nongnu.org; Zou, Nanhai <nanhai.zou@intel.com> > Subject: RE: [PATCH v2 3/4] configure: add qpl option > > "Liu, Yuan1" <yuan1.liu@intel.com> writes: > > >> -----Original Message----- > >> From: Fabiano Rosas <farosas@suse.de> > >> Sent: Saturday, December 2, 2023 1:45 AM > >> To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com; > >> peterx@redhat.com; leobras@redhat.com > >> Cc: qemu-devel@nongnu.org; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, > >> Nanhai <nanhai.zou@intel.com> > >> Subject: Re: [PATCH v2 3/4] configure: add qpl option > >> > >> Yuan Liu <yuan1.liu@intel.com> writes: > >> > >> > the Query Processing Library (QPL) is an open-source library that > >> > supports data compression and decompression features. > >> > > >> > add --enable-qpl and --disable-qpl options to enable and disable > >> > the QPL compression accelerator. The QPL compression accelerator > >> > can accelerate the Zlib compression algorithm during the live > migration. > >> > > >> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > >> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > >> > --- > >> > meson.build | 7 +++++++ > >> > meson_options.txt | 2 ++ > >> > scripts/meson-buildoptions.sh | 3 +++ > >> > 3 files changed, 12 insertions(+) > >> > > >> > diff --git a/meson.build b/meson.build index 259dc5f308..b4ba30b4fa > >> > 100644 > >> > --- a/meson.build > >> > +++ b/meson.build > >> > @@ -1032,6 +1032,11 @@ if not get_option('zstd').auto() or have_block > >> > required: get_option('zstd'), > >> > method: 'pkg-config') endif > >> > +qpl = not_found > >> > +if not get_option('qpl').auto() > >> > + qpl = dependency('libqpl', required: get_option('qpl'), > >> > + method: 'pkg-config') endif > >> > >> Hm.. I'm not having success with pkg-config: > >> > >> ../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried > >> pkgconfig > >> > >> It seems it doesn't find the static library. I had to use this instead: > >> > >> qpl = declare_dependency(dependencies: cc.find_library('qpl', > >> required: get_option('qpl'))) > >> > >> What am I missing here? > > Sorry about this, the QPL repo(https://github.com/intel/qpl) does not > yet support libqpl pkg-config file, we are in the process of adding this > functionality and we hope to resolve libqpl's dependencies through pkg- > config file. > > I will explicitly address this issue and provide relevant documentation > in the next version. > > Ok, just remember to test with a clean setup next time. Sure > > For the pkg-config test, > > 1. create /usr/lib64/pkgconfig/libqpl.pc 2. add below lines > > prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib > > includedir=${prefix}/include > > > > Name: libqpl > > Description: Intel Query Processing Library > > Version: 1.3.0 > > Libs: -L${libdir} -lqpl -lpthread -laccel-config -ldl -lstdc++ > > We could probably do this with meson directly instead of requiring a pkg- > config preliminary setup. My meson-fu is not the best, but something > like: > > qpl = declare_dependency(dependencies: [ > cc.find_library('qpl', required: get_option('qpl')), > cc.find_library('accel-config', required: get_option('qpl')), > ... > ], link_args: ['-lstdc++', ...]) I will fix this, thank you for the sample code > > Cflags: -I${includedir} > > > > 3. Install the header files to /usr/local/include/qpl and static > > library to /usr/local/lib64/libqpl.a > > For this part is ok to just point to the official docs. Yes, good idea
diff --git a/meson.build b/meson.build index 259dc5f308..b4ba30b4fa 100644 --- a/meson.build +++ b/meson.build @@ -1032,6 +1032,11 @@ if not get_option('zstd').auto() or have_block required: get_option('zstd'), method: 'pkg-config') endif +qpl = not_found +if not get_option('qpl').auto() + qpl = dependency('libqpl', required: get_option('qpl'), + method: 'pkg-config') +endif virgl = not_found have_vhost_user_gpu = have_tools and targetos == 'linux' and pixman.found() @@ -2165,6 +2170,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim) config_host_data.set('CONFIG_STATX', has_statx) config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) config_host_data.set('CONFIG_ZSTD', zstd.found()) +config_host_data.set('CONFIG_QPL', qpl.found()) config_host_data.set('CONFIG_FUSE', fuse.found()) config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found()) @@ -4325,6 +4331,7 @@ summary_info += {'snappy support': snappy} summary_info += {'bzip2 support': libbzip2} summary_info += {'lzfse support': liblzfse} summary_info += {'zstd support': zstd} +summary_info += {'Query Processing Library support': qpl} summary_info += {'NUMA host support': numa} summary_info += {'capstone': capstone} summary_info += {'libpmem support': libpmem} diff --git a/meson_options.txt b/meson_options.txt index 3c7398f3c6..71cd533985 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -255,6 +255,8 @@ option('xkbcommon', type : 'feature', value : 'auto', description: 'xkbcommon support') option('zstd', type : 'feature', value : 'auto', description: 'zstd compression support') +option('qpl', type : 'feature', value : 'auto', + description: 'Query Processing Library support') option('fuse', type: 'feature', value: 'auto', description: 'FUSE block device export') option('fuse_lseek', type : 'feature', value : 'auto', diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 7ca4b77eae..0909d1d517 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -220,6 +220,7 @@ meson_options_help() { printf "%s\n" ' Xen PCI passthrough support' printf "%s\n" ' xkbcommon xkbcommon support' printf "%s\n" ' zstd zstd compression support' + printf "%s\n" ' qpl Query Processing Library support' } _meson_option_parse() { case $1 in @@ -556,6 +557,8 @@ _meson_option_parse() { --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; --enable-zstd) printf "%s" -Dzstd=enabled ;; --disable-zstd) printf "%s" -Dzstd=disabled ;; + --enable-qpl) printf "%s" -Dqpl=enabled ;; + --disable-qpl) printf "%s" -Dqpl=disabled ;; *) return 1 ;; esac }