如何嘗試使用Linux SVA

如何嘗試使用Linux SVA

-v0.1 Sherlock 2020.7.5 init

簡介:本文介紹使用Linux SVA技術的方法,基於KunPeng920上的壓縮解壓縮設備。

  1. 硬件確認

首先你要有一臺KunPeng920服務器,而且這臺服務器上的壓縮解壓縮設備是可見的。你可以
lspci -s 75:00.0 -vv

root@ubuntu:~# lspci -s 75:00.0
75:00.0 Processing accelerators: Device 19e5:a250 (rev 21)

如上,說明你的系統上有這個壓縮解壓縮的設備。

系統的SMMU要在UEFI裏打開。你可以看下系統啓動日誌,dmesg | grep iommu

root@ubuntu:~# dmesg | grep iommu
[...]
[   19.410490] hisi_zip 0000:75:00.0: Adding to iommu group 14
[...]

如上,可以認爲SMMU的配置沒有問題,當然group的編號可以是不同的。

  1. 內核配置和編譯

目前內核的相關補丁還沒有完全上主線,我們在Linaro的github上維護了一個完整的可以
跑的分支:https://github.com/Linaro/linux-kernel-warpdrive/tree/uacce-devel

make defconfig

make menuconfig

這裏defconfig的配置是不夠的,你需要確保如下的內核配置是打開的:
CONFIG_ARM_SMMU_V3=y
CONFIG_PCI_PASID=y
CONFIG_IOMMU_SVA=y
CONFIG_CRYPTO_DEV_HISI_QM=y
CONFIG_CRYPTO_DEV_HISI_ZIP=y
CONFIG_UACCE=y

然後編譯內核即可。

  1. 用戶態代碼配置和編譯

對應的用戶態代碼的倉庫也在Linaro的github上:https://github.com/Linaro/warpdrive/tree/master

./autogen.sh
./conf.sh
make

在.lib目錄下會生成編譯出的用戶態庫:

Sherlock@EstBuildSvr1:~/repos/linaro_wd/warpdrive/.libs$ ls *.so
libhisi_qm.so  libwd_ciper.so  libwd_comp.so  libwd_digest.so  libwd.so

在test目錄下有編譯好的測試app:

 test_sva_bind test_sva_perf

如上的兩個測試app基於壓縮解壓縮設備,所以依賴的庫是:
libhisi_qm.so libwd_comp.so libwd.so

  1. 運行測試用例

使用如上編譯好的內核Image啓動系統, 把libhisi_qm.so libwd_comp.so libwd.so
拷貝到系統上,然後嘗試運行下 test_sva_perf。如果運行OK的話會有性能數據打印出來:

root@ubuntu:/home/sherlock/warpdrive/test# ./test_sva_perf 
Compress bz=512000 nb=1×10, speed=1433.5 MB/s (±0.0% N=1) overall=1334.3 MB/s (±0.0%)

test_sva_bind test_sva_perf裏各個命令參數的用法可以參考help說明。

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