Skip to content

Commit 7e465c9

Browse files
authored
Merge pull request ceph#58336 from Svelar/uadk
Compressor: add UADK support Reviewed-by: Brad Hubbard <[email protected]> Reviewed-by: Casey Bodley <[email protected]> Reviewed-by: Ilya Dryomov <[email protected]>
2 parents 07df700 + d58f327 commit 7e465c9

File tree

12 files changed

+658
-1
lines changed

12 files changed

+658
-1
lines changed

CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,15 @@ if(WITH_QATZIP)
379379
set(HAVE_QATZIP TRUE)
380380
endif(WITH_QATZIP)
381381

382+
CMAKE_DEPENDENT_OPTION(WITH_UADK "Enable UADK" ON
383+
"CMAKE_SYSTEM_PROCESSOR MATCHES aarch64" OFF)
384+
if(WITH_UADK)
385+
include(Builduadk)
386+
build_uadk()
387+
set(HAVE_UADK TRUE)
388+
message("HAVE_UADK " ${HAVE_UADK})
389+
endif(WITH_UADK)
390+
382391
# needs mds and? XXX
383392
option(WITH_LIBCEPHFS "libcephfs client library" ON)
384393

ceph.spec.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ BuildRequires: libibverbs-devel
442442
BuildRequires: librdmacm-devel
443443
BuildRequires: ninja-build
444444
BuildRequires: openldap-devel
445+
BuildRequires: numactl-devel
445446
#BuildRequires: krb5-devel
446447
BuildRequires: openssl-devel
447448
BuildRequires: CUnit-devel
@@ -511,7 +512,6 @@ BuildRequires: openEuler-rpm-config
511512
%if 0%{with seastar}
512513
%if 0%{?fedora} || 0%{?rhel} || 0%{?openEuler}
513514
BuildRequires: cryptopp-devel
514-
BuildRequires: numactl-devel
515515
%endif
516516
%if 0%{?suse_version}
517517
BuildRequires: libcryptopp-devel

cmake/modules/Builduadk.cmake

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
function(build_uadk)
2+
set(UADK_INSTALL_DIR ${CMAKE_BINARY_DIR}/src/uadk/install)
3+
set(UADK_INCLUDE_DIR ${UADK_INSTALL_DIR}/include)
4+
set(UADK_LIBRARY_DIR ${UADK_INSTALL_DIR}/lib)
5+
set(UADK_WD_LIBRARY ${UADK_LIBRARY_DIR}/libwd.a)
6+
set(UADK_WD_COMP_LIBRARY ${UADK_LIBRARY_DIR}/libwd_comp.a)
7+
set(UADK_WD_ZIP_LIBRARY ${UADK_LIBRARY_DIR}/uadk/libhisi_zip.a)
8+
set(configure_cmd env ./configure --prefix=${UADK_INSTALL_DIR})
9+
list(APPEND configure_cmd --with-pic --enable-static --disable-shared --with-static_drv)
10+
11+
include(ExternalProject)
12+
ExternalProject_Add(uadk_ext
13+
UPDATE_COMMAND "" # this disables rebuild on each run
14+
GIT_REPOSITORY "https://github.com/Linaro/uadk.git"
15+
GIT_CONFIG advice.detachedHead=false
16+
GIT_SHALLOW 1
17+
GIT_TAG "master"
18+
SOURCE_DIR "${PROJECT_SOURCE_DIR}/src/uadk"
19+
BUILD_IN_SOURCE 1
20+
CMAKE_ARGS -DCMAKE_CXX_COMPILER=which g++
21+
CONFIGURE_COMMAND ./autogen.sh COMMAND ${configure_cmd}
22+
BUILD_COMMAND make
23+
BUILD_BYPRODUCTS ${UADK_WD_LIBRARY} ${UADK_WD_COMP_LIBRARY} ${UADK_WD_ZIP_LIBRARY}
24+
INSTALL_COMMAND make install
25+
LOG_CONFIGURE ON
26+
LOG_BUILD ON
27+
LOG_INSTALL ON
28+
LOG_MERGED_STDOUTERR ON
29+
LOG_OUTPUT_ON_FAILURE ON)
30+
31+
ExternalProject_Get_Property(uadk_ext source_dir)
32+
set(UADK_INCLUDE_DIR ${UADK_INCLUDE_DIR} PARENT_SCOPE)
33+
34+
add_library(uadk::uadk UNKNOWN IMPORTED)
35+
add_library(uadk::uadkwd UNKNOWN IMPORTED)
36+
add_library(uadk::uadkzip UNKNOWN IMPORTED)
37+
add_dependencies(uadk::uadk uadk_ext)
38+
add_dependencies(uadk::uadkwd uadk_ext)
39+
add_dependencies(uadk::uadkzip uadk_ext)
40+
file(MAKE_DIRECTORY ${UADK_INCLUDE_DIR})
41+
set_target_properties(uadk::uadk PROPERTIES
42+
INTERFACE_INCLUDE_DIRECTORIES ${UADK_INCLUDE_DIR}
43+
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
44+
IMPORTED_LOCATION "${UADK_WD_COMP_LIBRARY}")
45+
set_target_properties(uadk::uadkwd PROPERTIES
46+
INTERFACE_INCLUDE_DIRECTORIES ${UADK_INCLUDE_DIR}
47+
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
48+
IMPORTED_LOCATION "${UADK_WD_LIBRARY}")
49+
set_target_properties(uadk::uadkzip PROPERTIES
50+
INTERFACE_INCLUDE_DIRECTORIES ${UADK_INCLUDE_DIR}
51+
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
52+
IMPORTED_LOCATION "${UADK_WD_ZIP_LIBRARY}")
53+
endfunction()

src/common/options/global.yaml.in

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,19 @@ options:
795795
level: advanced
796796
desc: Set QAT busy bolling to reduce latency at the cost of potentially increasing CPU usage
797797
default: false
798+
- name: uadk_compressor_enabled
799+
type: bool
800+
level: advanced
801+
desc: Enable UADK acceleration support for compression if available
802+
default: false
803+
with_legacy: true
804+
- name: uadk_wd_sync_ctx_num
805+
type: int
806+
level: advanced
807+
desc: Set the number of instances in the queue
808+
default: 2
809+
min: 2
810+
max: 1024
798811
- name: plugin_crypto_accelerator
799812
type: str
800813
level: advanced

src/compressor/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ if(HAVE_QATZIP AND HAVE_QAT)
1212
)
1313
endif()
1414

15+
if (HAVE_UADK)
16+
add_library(uadk_compressor OBJECT UadkAccel.cc)
17+
target_link_libraries(uadk_compressor PUBLIC
18+
uadk::uadk
19+
uadk::uadkwd
20+
uadk::uadkzip
21+
numa)
22+
endif()
23+
1524
## compressor plugins
1625

1726
set(compressor_plugin_dir ${CEPH_INSTALL_PKGLIBDIR}/compressor)

0 commit comments

Comments
 (0)