Intel QAT ZIP初步分析

Intel QAT ZIP初步分析

-v0.1 2019.11.22 Sherlock init

本文分析Intel QAT技術對應軟件棧的支持,主要的關注點在壓縮解壓縮的軟件棧,本文
只是尋找資料時候的一個筆記,還很粗糙。

  1. 基本信息

QAT的官網: https://www.intel.cn/content/www/cn/zh/architecture-and-technology/intel-quick-assist-technology-overview.html

QAT相關的代碼在01.org網站: https://01.org/zh/intel-quickassist-technology?langredirect=1

基本QAT相關的用戶手冊,代碼都可以從上面的URL獲得。

  1. 用戶APP、QATzip、libqat庫的關係

我們這裏看看QAT裏支持的壓縮解壓縮是怎麼最終叫用戶APP使用到的。

QAT整個壓縮解壓縮的軟件棧由: 內核驅動,libqat用戶態基礎庫,QATzip用戶態庫組成。
我們這裏以ceph作爲APP,一起看下,ceph裏的壓縮解壓縮可以直接調用QATzip庫提供的
接口使用QAT的硬件壓縮解壓縮引擎。

以上軟件的位置在:1. QAT的內核態驅動和libqat用戶態基礎庫合在一起放在上面的01.org
的這個包裏:Intel® QuickAssist Technology Driver for Linux* - HW version 1.7.
2. QATzip的代碼在:https://github.com/intel/QATzip. 3. ceph的代碼:github.com/ceph.

整個調用鏈的邏輯是:

  1. 內核態QAT crypto驅動除了向crypto子系統上註冊外,也會向內核UIO子系統註冊,
    通過UIO把QAT的硬件資源暴露給用戶態。由於UIO存在安全上的問題,可以看到主線
    內核裏註冊到UIO的驅動很少,這也是QAT內核驅動中註冊UIO這部分無法上傳到主線
    的原因。

  2. libqat用戶態基礎庫封裝UIO用戶態接口,向上提供一組基礎的API。這個在01.org
    網站的接口說明文檔中有介紹。

  3. QATzip這個庫調用libqat API對外提供QAT的壓縮解壓縮基本接口。提供的接口在
    QATzip/include/qatzip.h這個頭文件中。

  4. Ceph代碼裏壓縮解壓縮的部分ceph/src/compressor/有QatAccel.cc, 這部分代碼
    調用QATzip的接口封裝ceph裏的壓縮解壓縮接口供同目錄下的zlib/zlibCompressor.cc
    使用。(目前竟然是HAVE_QATZIP這個宏隔開的 😦 )

  5. 接口分析


(to do: …)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章