如何嘗試使用Linux SVA
-v0.1 Sherlock 2020.7.5 init
簡介:本文介紹使用Linux SVA技術的方法,基於KunPeng920上的壓縮解壓縮設備。
- 硬件確認
首先你要有一臺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的編號可以是不同的。
- 內核配置和編譯
目前內核的相關補丁還沒有完全上主線,我們在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
然後編譯內核即可。
- 用戶態代碼配置和編譯
對應的用戶態代碼的倉庫也在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
- 運行測試用例
使用如上編譯好的內核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說明。