Rectify readme.md for more information. (#9) Slightly improve readme.md
Rectify readme.md for more information. (#9)
Slightly improve readme.md
veSAL(Volcano Engine Storage Acceleration library) 定位是对火山存储业务中高频、高负载的操作提供加速优化库,如压缩/解压缩、加解密、CRC校验、memmove、Erasure Coding等。 veSAL目前包含三大组件:
目前已在火山引擎高性能存储中集成使用,在节省了大量CPU资源的情况下,获得了显著的性能提升。
理论上不要求特定的OS版本,但是建议使用>=5.4版本的debian系统,我们在该环境做了大量验证。另外,由于需要与硬件交互的能力,需要打开iommu的能力:
# cat /proc/cmdline iommu=pt intel_iommu=on,sm_on # 请确保这些参数已打开。
且veSAL依赖大页,请确保1GB或2MB大页可用。
压缩/解压缩,加密/解密/哈希在存储场景是一个非常常见的操作逻辑,耗费大量的CPU资源。vesal提出基于QAT进行压缩/解压缩/加密/解密/哈希的卸载方案,并支持对压缩前/后的数据随路计算CRC,大大节省业务的CPU资源。 确认您的机型是否支持QAT:
# lspci -nn | egrep -e '8086:37c8|8086:19e2|8086:0435|8086:6f54|8086:4940|8086:4942' 76:00.0 Co-processor [0b40]: Intel Corporation Device [8086:4942] (rev 40) 7a:00.0 Co-processor [0b40]: Intel Corporation Device [8086:4942] (rev 40) f3:00.0 Co-processor [0b40]: Intel Corporation Device [8086:4942] (rev 40) f7:00.0 Co-processor [0b40]: Intel Corporation Device [8086:4942] (rev 40)
QAT需要对应的kernel module,推荐直接使用最新版的QAT driver。https://www.intel.com/content/www/us/en/download/765501/intel-quickassist-technology-driver-for-linux-hw-version-2-0.html 按照Intel官方方式完成安装即可。安装完成后,需要确保用户态库libqat_s.so和usdm_drv.so可以被找到(在LD_LIBRARY_PATH中)。
Intel DSA硬件支持对CRC和Memcpy等常见的操作逻辑进行卸载,vesal基于DSA完成CRC和Memcpy卸载支持。 确认您的机型是否支持DSA:
# lspci | grep 0b25 75:01.0 System peripheral: Intel Corporation Device 0b25 f2:01.0 System peripheral: Intel Corporation Device 0b25
DSA不需要专门的kernel module,但是需要对硬件资源做一次初始化。该步骤需要先执行编译,请看后文。
首先安装以下通用依赖:
cmake autoconf valgrind libnuma-dev libunwind-dev
之后执行:
./build.sh
该命令会下载第三方库依赖并执行编译,具体可见get-deps.py脚本
get-deps.py
REPOS = { "https://github.com/gflags/gflags.git": "v2.2.2", "https://github.com/google/googletest.git": "release-1.11.0", "https://github.com/gperftools/gperftools.git": "gperftools-2.12", "https://github.com/ebiggers/libdeflate.git": "v1.23", "https://github.com/lz4/lz4.git": "v1.9.3", "https://github.com/gabime/spdlog.git": "v1.8.2", "https://github.com/facebook/zstd.git": "v1.5.5", "https://github.com/madler/zlib.git": "v1.3.1", "https://github.com/openssl/openssl.git": "OpenSSL_1_0_1-stable", "https://github.com/skarupke/flat_hash_map.git": "master" }
编译产物将存放于build目录下。
add_executable(foo foo.cc) set(VESAL_ENABLE_ZSTD ON) # zstd is optional, set to false if zstd if not used. Default is false add_subdirectory(vesal) target_link_libraries(foo PRIVATE vesal)
注意,由于需要基于uio与硬件进行交互,且需要对内存地址进行计算,运行vesal所有程序需要root权限。
./perf_simple
tools/pci_bind.sh
./prepare_dsa_env
vesal_data_flow_example
vesal基于GPLv3协议开源,您可以在遵守协议的前提下自由使用、修改和分发vesal。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
veSAL(Volcano Engine Storage Acceleration library) 定位是对火山存储业务中高频、高负载的操作提供加速优化库,如压缩/解压缩、加解密、CRC校验、memmove、Erasure Coding等。 veSAL目前包含三大组件:
目前已在火山引擎高性能存储中集成使用,在节省了大量CPU资源的情况下,获得了显著的性能提升。
Prerequisites
环境要求
理论上不要求特定的OS版本,但是建议使用>=5.4版本的debian系统,我们在该环境做了大量验证。另外,由于需要与硬件交互的能力,需要打开iommu的能力:
且veSAL依赖大页,请确保1GB或2MB大页可用。
Codec & Cypher
压缩/解压缩,加密/解密/哈希在存储场景是一个非常常见的操作逻辑,耗费大量的CPU资源。vesal提出基于QAT进行压缩/解压缩/加密/解密/哈希的卸载方案,并支持对压缩前/后的数据随路计算CRC,大大节省业务的CPU资源。 确认您的机型是否支持QAT:
QAT需要对应的kernel module,推荐直接使用最新版的QAT driver。https://www.intel.com/content/www/us/en/download/765501/intel-quickassist-technology-driver-for-linux-hw-version-2-0.html 按照Intel官方方式完成安装即可。安装完成后,需要确保用户态库libqat_s.so和usdm_drv.so可以被找到(在LD_LIBRARY_PATH中)。
DataFlow
Intel DSA硬件支持对CRC和Memcpy等常见的操作逻辑进行卸载,vesal基于DSA完成CRC和Memcpy卸载支持。 确认您的机型是否支持DSA:
DSA不需要专门的kernel module,但是需要对硬件资源做一次初始化。该步骤需要先执行编译,请看后文。
编译方式
首先安装以下通用依赖:
之后执行:
该命令会下载第三方库依赖并执行编译,具体可见
get-deps.py脚本编译产物将存放于build目录下。
项目集成
运行
注意,由于需要基于uio与硬件进行交互,且需要对内存地址进行计算,运行vesal所有程序需要root权限。
Codec & Cypher
./perf_simple,会使用QAT压缩和解压perf目录下的calgary数据集。注意默认的QAT section name为”SSL0”,可以使用gflags参数修改,如:–vesal_codec_qat_section_name=”SSL”。详细的参数可见include/vesal/vesal.hDataFlow
tools/pci_bind.sh,再./prepare_dsa_env运行编译产物中的准备程序。该准备只需执行一次。vesal_data_flow_example。License
vesal基于GPLv3协议开源,您可以在遵守协议的前提下自由使用、修改和分发vesal。