Message ID | 20240319164527.1873891-4-yuan1.liu@intel.com |
---|---|
State | New |
Headers | show |
Series | Live Migration With IAA | expand |
On 19/03/2024 17.45, Yuan Liu wrote: > add --enable-qpl and --disable-qpl options to enable and disable > the QPL compression method for multifd migration. > > the Query Processing Library (QPL) is an open-source library > that supports data compression and decompression features. > > The QPL compression is based on the deflate compression algorithm > and use Intel In-Memory Analytics Accelerator(IAA) hardware for > compression and decompression acceleration. > > Please refer to the following for more information about QPL > https://intel.github.io/qpl/documentation/introduction_docs/introduction.html > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > --- > meson.build | 16 ++++++++++++++++ > meson_options.txt | 2 ++ > scripts/meson-buildoptions.sh | 3 +++ > 3 files changed, 21 insertions(+) > > diff --git a/meson.build b/meson.build > index b375248a76..bee7dcd53b 100644 > --- a/meson.build > +++ b/meson.build > @@ -1200,6 +1200,20 @@ 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() Do you really only want to enable this if the user explicitly specified "--enable-qpl" ? Otherwise, I think this should be: if not get_option('qpl').auto() or have_system ? Thomas > + libqpl = cc.find_library('qpl', required: false) > + if not libqpl.found() > + error('libqpl not found, please install it from ' + > + 'https://intel.github.io/qpl/documentation/get_started_docs/installation.html') > + endif > + libaccel = dependency('libaccel-config', version: '>=4.0.0', > + required: true, > + method: 'pkg-config') > + qpl = declare_dependency(dependencies: [libqpl, libaccel, > + cc.find_library('dl', required: get_option('qpl'))], > + link_args: ['-lstdc++']) > +endif > virgl = not_found
On 20/03/2024 09.55, Thomas Huth wrote: > On 19/03/2024 17.45, Yuan Liu wrote: >> add --enable-qpl and --disable-qpl options to enable and disable >> the QPL compression method for multifd migration. >> >> the Query Processing Library (QPL) is an open-source library >> that supports data compression and decompression features. >> >> The QPL compression is based on the deflate compression algorithm >> and use Intel In-Memory Analytics Accelerator(IAA) hardware for >> compression and decompression acceleration. >> >> Please refer to the following for more information about QPL >> https://intel.github.io/qpl/documentation/introduction_docs/introduction.html >> >> Signed-off-by: Yuan Liu <yuan1.liu@intel.com> >> Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> >> --- >> meson.build | 16 ++++++++++++++++ >> meson_options.txt | 2 ++ >> scripts/meson-buildoptions.sh | 3 +++ >> 3 files changed, 21 insertions(+) >> >> diff --git a/meson.build b/meson.build >> index b375248a76..bee7dcd53b 100644 >> --- a/meson.build >> +++ b/meson.build >> @@ -1200,6 +1200,20 @@ 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() > > Do you really only want to enable this if the user explicitly specified > "--enable-qpl" ? Otherwise, I think this should be: > > if not get_option('qpl').auto() or have_system > > ? > > Thomas > > > > >> + libqpl = cc.find_library('qpl', required: false) ... and it should use "required: get_option('qpl')" in that case. Thomas >> + if not libqpl.found() >> + error('libqpl not found, please install it from ' + >> + >> 'https://intel.github.io/qpl/documentation/get_started_docs/installation.html') >> + endif >> + libaccel = dependency('libaccel-config', version: '>=4.0.0', >> + required: true, >> + method: 'pkg-config') >> + qpl = declare_dependency(dependencies: [libqpl, libaccel, >> + cc.find_library('dl', required: get_option('qpl'))], >> + link_args: ['-lstdc++']) >> +endif >> virgl = not_found >
On Wed, Mar 20, 2024 at 12:45:23AM +0800, Yuan Liu wrote: > add --enable-qpl and --disable-qpl options to enable and disable > the QPL compression method for multifd migration. > > the Query Processing Library (QPL) is an open-source library > that supports data compression and decompression features. > > The QPL compression is based on the deflate compression algorithm > and use Intel In-Memory Analytics Accelerator(IAA) hardware for > compression and decompression acceleration. > > Please refer to the following for more information about QPL > https://intel.github.io/qpl/documentation/introduction_docs/introduction.html > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > --- > meson.build | 16 ++++++++++++++++ > meson_options.txt | 2 ++ > scripts/meson-buildoptions.sh | 3 +++ > 3 files changed, 21 insertions(+) > > diff --git a/meson.build b/meson.build > index b375248a76..bee7dcd53b 100644 > --- a/meson.build > +++ b/meson.build > @@ -1200,6 +1200,20 @@ 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() > + libqpl = cc.find_library('qpl', required: false) > + if not libqpl.found() > + error('libqpl not found, please install it from ' + > + 'https://intel.github.io/qpl/documentation/get_started_docs/installation.html') > + endif > + libaccel = dependency('libaccel-config', version: '>=4.0.0', > + required: true, > + method: 'pkg-config') > + qpl = declare_dependency(dependencies: [libqpl, libaccel, > + cc.find_library('dl', required: get_option('qpl'))], > + link_args: ['-lstdc++']) > +endif Are either of these libraries present in any mainstream Linux distro ? If not, then this feature will not get any CI build coverage from QEMU. Needing to manually add '-lstdc++' & '-ldl' is presumably a requirement from 'qpl'. As a future enhancement it would be much better if 'qpl' provided a pkg-config file, so this list of dependencies didn't have to be hardcoded by apps using qpl With regards, Daniel
> -----Original Message----- > From: Thomas Huth <thuth@redhat.com> > Sent: Wednesday, March 20, 2024 4:57 PM > To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com; farosas@suse.de > Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com; > bryan.zhang@bytedance.com; Zou, Nanhai <nanhai.zou@intel.com> > Subject: Re: [PATCH v5 3/7] configure: add --enable-qpl build option > > On 20/03/2024 09.55, Thomas Huth wrote: > > On 19/03/2024 17.45, Yuan Liu wrote: > >> add --enable-qpl and --disable-qpl options to enable and disable > >> the QPL compression method for multifd migration. > >> > >> the Query Processing Library (QPL) is an open-source library > >> that supports data compression and decompression features. > >> > >> The QPL compression is based on the deflate compression algorithm > >> and use Intel In-Memory Analytics Accelerator(IAA) hardware for > >> compression and decompression acceleration. > >> > >> Please refer to the following for more information about QPL > >> > https://intel.github.io/qpl/documentation/introduction_docs/introduction.h > tml > >> > >> Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > >> Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > >> --- > >> meson.build | 16 ++++++++++++++++ > >> meson_options.txt | 2 ++ > >> scripts/meson-buildoptions.sh | 3 +++ > >> 3 files changed, 21 insertions(+) > >> > >> diff --git a/meson.build b/meson.build > >> index b375248a76..bee7dcd53b 100644 > >> --- a/meson.build > >> +++ b/meson.build > >> @@ -1200,6 +1200,20 @@ 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() > > > > Do you really only want to enable this if the user explicitly specified > > "--enable-qpl" ? Otherwise, I think this should be: > > > > if not get_option('qpl').auto() or have_system > > > > ? > > > > Thomas > > > > > > > > > >> + libqpl = cc.find_library('qpl', required: false) > > ... and it should use "required: get_option('qpl')" in that case. > > Thomas Hi Thomas Thanks for your comments, you are right, I need to add have_system and check get_option('qpl') here, I will fix this next version. > >> + if not libqpl.found() > >> + error('libqpl not found, please install it from ' + > >> + > >> > 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h > tml') > >> + endif > >> + libaccel = dependency('libaccel-config', version: '>=4.0.0', > >> + required: true, > >> + method: 'pkg-config') > >> + qpl = declare_dependency(dependencies: [libqpl, libaccel, > >> + cc.find_library('dl', required: get_option('qpl'))], > >> + link_args: ['-lstdc++']) > >> +endif > >> virgl = not_found > >
> -----Original Message----- > From: Daniel P. Berrangé <berrange@redhat.com> > Sent: Wednesday, March 20, 2024 6:31 PM > To: Liu, Yuan1 <yuan1.liu@intel.com> > Cc: peterx@redhat.com; farosas@suse.de; qemu-devel@nongnu.org; > hao.xiang@bytedance.com; bryan.zhang@bytedance.com; Zou, Nanhai > <nanhai.zou@intel.com> > Subject: Re: [PATCH v5 3/7] configure: add --enable-qpl build option > > On Wed, Mar 20, 2024 at 12:45:23AM +0800, Yuan Liu wrote: > > add --enable-qpl and --disable-qpl options to enable and disable > > the QPL compression method for multifd migration. > > > > the Query Processing Library (QPL) is an open-source library > > that supports data compression and decompression features. > > > > The QPL compression is based on the deflate compression algorithm > > and use Intel In-Memory Analytics Accelerator(IAA) hardware for > > compression and decompression acceleration. > > > > Please refer to the following for more information about QPL > > > https://intel.github.io/qpl/documentation/introduction_docs/introduction.h > tml > > > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > > --- > > meson.build | 16 ++++++++++++++++ > > meson_options.txt | 2 ++ > > scripts/meson-buildoptions.sh | 3 +++ > > 3 files changed, 21 insertions(+) > > > > diff --git a/meson.build b/meson.build > > index b375248a76..bee7dcd53b 100644 > > --- a/meson.build > > +++ b/meson.build > > @@ -1200,6 +1200,20 @@ 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() > > + libqpl = cc.find_library('qpl', required: false) > > + if not libqpl.found() > > + error('libqpl not found, please install it from ' + > > + > 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h > tml') > > + endif > > + libaccel = dependency('libaccel-config', version: '>=4.0.0', > > + required: true, > > + method: 'pkg-config') > > + qpl = declare_dependency(dependencies: [libqpl, libaccel, > > + cc.find_library('dl', required: get_option('qpl'))], > > + link_args: ['-lstdc++']) > > +endif > > Are either of these libraries present in any mainstream Linux > distro ? If not, then this feature will not get any CI build > coverage from QEMU. > > Needing to manually add '-lstdc++' & '-ldl' is presumably a > requirement from 'qpl'. As a future enhancement it would be > much better if 'qpl' provided a pkg-config file, so this > list of dependencies didn't have to be hardcoded by apps > using qpl > > > With regards, > Daniel Hi Daniel Thanks for your comments, the QPL has not been integrated into mainstream Linux distro yet, I am actively promoting QPL to support pkg-config file and integrate it into the distributions. The QPL will support these soon, I will use pkg-config in the next version to solve the QPL build dependency issue.
diff --git a/meson.build b/meson.build index b375248a76..bee7dcd53b 100644 --- a/meson.build +++ b/meson.build @@ -1200,6 +1200,20 @@ 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() + libqpl = cc.find_library('qpl', required: false) + if not libqpl.found() + error('libqpl not found, please install it from ' + + 'https://intel.github.io/qpl/documentation/get_started_docs/installation.html') + endif + libaccel = dependency('libaccel-config', version: '>=4.0.0', + required: true, + method: 'pkg-config') + qpl = declare_dependency(dependencies: [libqpl, libaccel, + cc.find_library('dl', required: get_option('qpl'))], + link_args: ['-lstdc++']) +endif virgl = not_found have_vhost_user_gpu = have_tools and host_os == 'linux' and pixman.found() @@ -2305,6 +2319,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()) @@ -4462,6 +4477,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 0a99a059ec..06cd675572 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -259,6 +259,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 680fa3f581..784f74fde9 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -222,6 +222,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 @@ -562,6 +563,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 }