接口介绍
概述
在现代计算环境中,数据压缩常常是提升数据传输效率、存储空间节省的关键手段。然而,传统的压缩方法通常是同步执行,导致在处理大规模数据时可能造成性能瓶颈,特别是在高负载的场景下。为了更好地利用硬件加速器的能力并提高系统的响应能力,鲲鹏BoostKit提供了KAELz4异步接口。
KAELz4异步压缩接口专为处理高并发、大数据量压缩场景设计,引入了并发线程处理数据压缩,能够充分发挥现代多核CPU的并行计算能力,并在硬件加速器KAE的支持下,进一步提升压缩速度。
KAELz4异步压缩接口支持polling模式压缩接口和非polling模式压缩接口两种模式,block、frame、lz77_raw3种压缩数据格式。其中,blcok与frame格式与社区LZ4标准block/frame格式兼容;lz77_raw格式需要调用对应的后处理接口进行转换成标准block\frame格式。
后续部分将分别介绍不同polling模式下,不同数据格式的接口组合方式。
特点
- 支持异步压缩:在压缩过程中不阻塞主线程,可以通过回调函数在压缩完成后获得处理结果。
- 支持硬件加速:通过硬件加速器对压缩过程加速,接口能够显著提升压缩任务的执行效率,同时降低CPU负载。
- 支持多线程并发处理:内部实现采用多线程并发处理,多线程智能调度均衡分发任务,进一步提升整体性能。同时在双加速器硬件环境中,支持自动均匀绑核,将压力平分到2个加速器上,实现资源利用最大化。
- 兼容社区LZ4格式:该接口生成的压缩数据格式与社区LZ4格式兼容。
- 轻松集成:接口可以轻松集成到现有的应用程序中,用户只需调用接口并提供回调函数,便可以快速启动异步压缩,轻松实现高性能数据压缩。
使用场景
- 高并发和高负载场景:当需要处理大量并发数据压缩任务时,该接口能够通过多线程并发执行来有效避免单一线程阻塞,提升系统响应速度。
- 低延迟需求场景:在需要低延迟和快速响应的系统中,该接口可以通过不阻塞主线程来保证系统的流畅性。例如,在实时数据传输、分布式存储或流媒体处理等场景中,该接口能有效避免数据压缩过程中的卡顿现象。
错误码
#define KAE_LZ4_INVAL_PARA 1 # 内部通用错误 #define KAE_LZ4_INIT_FAIL 2 # 初始化资源失败 #define KAE_LZ4_COMP_FAIL 3 # 压缩失败 #define KAE_LZ4_RELEASE_FAIL 4 # 资源释放失败 #define KAE_LZ4_ALLOC_FAIL 5 # 内存资源申请失败 #define KAE_LZ4_SET_FAIL 6 # 内部错误 #define KAE_LZ4_HW_TIMEOUT_FAIL 7 # 硬件超时
切软算场景
用户调用压缩接口时输入数据必须小于64k时才支持切软算。
- 支持在KAE驱动异常时自动切软算。
- 支持在KAE硬件资源耗尽时自动切软算。
- 支持polling接口和通用接口切软算。
- 不支持SGL模式分段buffer切软算。
父主题: KAELz4异步压缩接口调用示例