DOCA Tools
DOCA工具是一組可執行文件/腳本,所有工具都和DOCA一起安裝,作為doc -tools包的一部分,可以直接從終端訪問,也可以在/opt/mellanox/DOCA/tools中找到。
DOCA Bench
CLI name: doca_bench
DOCA Bench是一個允許用戶評估DOCA應用程序性能的工具,允許用戶以合理的準確性評估DOCA應用程序的性能。它提供了一個靈活的體系結構,可以通過多核擴展來評估多個特性,從而提供詳細的吞吐量和延遲分析。該工具可用于評估多個DOCA操作的性能,深入了解復雜DOCA操作的每個階段,并了解緩沖區大小、scaling和GGA配置等項目如何(he)影響吞吐量和時延。
支持的feature
DOCA Bench是為所有BlueField加速器設計的統一測試工具。因此,它提供了以下主要feature:
l BF上執行,利用本地ARM core和GGA;
l host(x86)上執行,利用x86 core或通過PCIe利用BlueField上的GGA;
l 支持以下DPU feature:
n DOCA AES GCM
n DOCA Comch
n DOCA Compress
n DOCA DMA
n DOCA EC
n DOCA Eth
n DOCA RDMA
n DOCA SHA
l 多核/多線程支持;
l 基于時間、任務數量等調(diao)度;
l 能使用GGA構造復雜的pipeline;
l 各種數據源(隨機數據、文件數據、文件組等);
l 遠程內存操作;
l 使用host x86平臺上的數據作為GGA的輸入;
l 輸出到屏幕或CSV;
l 查詢支持的軟硬件特性;
l 參數可以指定起始值(zhi)和結束(shu)值(zhi)以及增(zeng)量(liang);
l 為每個GGA實例設置屬性,從而精細控制GGA操作。
安裝
在DOCA-for-Host和DOCA BlueField Arm包安裝后,DOCA Bench位于/opt/mellanox/doca/tools目(mu)錄下。
前提條件
DOCA 2.7.0和更高版本;
操作模式
DOCA Bench可以(yi)測量吞(tun)吐(tu)量(帶寬(kuan))和時(shi)延。
吞吐量測試
在這種模式下,DOCA Bench測量給定pipeline的最大性能。在執行結束時,提供了一個簡短的摘要以及更詳細的統計數據:

時延測試
DOCA Bench測量從提(ti)交作(zuo)業(ye)到接收響應(ying)之(zhi)間所花費的時間。
DOCA Bench提供了兩種不同類型的延遲測量:
l Bulk latency mode-并(bing)行提交(jiao)一組(zu)作業(ye)以(yi)獲(huo)得最大吞吐量,時延為第一個(ge)作業(ye)提交(jiao)和最后(hou)一個(ge)作業(ye)完成之間(jian)的時間(jian);
l Precision latency mode-同一(yi)時刻只有一(yi)個作業被(bei)提(ti)交和(he)測(ce)量;
Bulk Latency
這種延遲模式有效地以全速運行pipeline,試圖保持最大吞吐量,同時還記錄提交作業的時延數據。為了記錄時延,當在最大吞吐量下操作時,時延數據放以group或bucket為單位進行(而不是記錄每個單獨的作業延遲)。使用這種方法,用戶可以避免每秒記錄數百萬個延遲數據造成大量內存和CPU開銷(否則會顯著降低性能)。
由于每個pipeline操作不同,因此具有不同的時延特征,因此用戶可以提供時延度量的邊界。DOCA Bench在內部創建了100個桶,用戶可以指定每個桶的起始(shi)值和寬度(du)或大小。
l 第一個桶(tong)包(bao)含所有(you)執(zhi)行(xing)速度快(kuai)于起(qi)始周(zhou)期的作業;
l 最后一個bucket包(bao)含花費超過允許的(de)最大(da)時間的(de)作業計數;
命令行參數latency-bucket-range用于提供兩個參數,分別表示第一個桶的起始時間段和每個桶的寬度。例如, latency-bucket-range 10us,100us將從測量響應時間<10μs的最低桶開始,然后是100μs寬的100個桶,最后一個桶的結果耗時超過10010μs。
由批量模式生成的報告以兩種方式可視化呈現:
1. 提供了一個條形圖來直觀地顯示latency-bucket-range選項指定范圍內的分布(bu);
2. 給出了(le)每個桶的作業數量的細分;
Precision Latency
這(zhe)種延遲模式(shi)一(yi)次只在一(yi)個(ge)作業上運行(xing)。以大(da)大(da)降低吞(tun)吐量(liang)為代價(jia),這(zhe)允許精確(que)地(di)記錄最(zui)小延遲。如下所(suo)示,生成(cheng)的統(tong)計信息是精確(que)的,包括各(ge)種字段,如最(zui)小值、最(zui)大(da)值、中位(wei)數和百分位(wei)數值。

運行
無論在x86 host還是BlueField Arm上執行DOCA Bench, DOCA Bench的行為都是相同的。所測量的性能取決于環境。目前只支持x86 host上執行。
pipeline
DOCA Bench是一種高度靈活的工具,能夠配置操作的發生方式和順序。為了實現這一點,DOCA Bench使用了一個操作pipeline,稱為“step”。這些step可以是一個特定的功能(例如,以太網接收、SHA散列生成、數據壓縮)。因此,一個step pipeline可以完成許多順序操作。DOCA Bench可以測量這些pipeline的吞吐量或時延,無論運行在單個或多個core/線程上。目前,DOCA一次只支持運行一個pipeline。
Warm-up Period
為了確保正確的測量,pipeline必須“預熱”(即,任何初始內存、緩存和硬件子系統必須在實際性能測量開始之前運行)。默認情況下,在開始測量之前,通過pipeline運行大約100個作業。
默認參數
DOCA Bench有大量的參數,但是為了簡化執行,在開始性能測量時只需要提供幾個參數。因此,各種參數都有默認值,這在大多數情況下應該是足夠的。為了優化性能,用戶應該密切關注任何可能影響管道運行的默認參數。當執行時,DOCA Bench報告所(suo)有參數和配(pei)置值的完整列表。
性能優化
為了獲得最大的性能,對于任何給定的環境都需要進行一定的調優。雖然超出了本文檔的范圍,但建議用戶:
l 避免使用CPU 0,因為大多數操作系統進程和中斷請求(IRQ)處(chu)理程序都被安排在這個核心上執行(xing);
l 在內核引導參數中啟用CPU/IRQ隔(ge)離,以便(bian)將內核活動從執(zhi)行(xing)性能測試的(de)所有內核中刪除;
l 在主機上,確保在尋址BlueField時不跨NUMA;
l 了(le)解場景的內存(cun)分配(pei)需求,以(yi)避免過度分配(pei)或遇到內存(cun)不(bu)足的情況;
CPU core和線程的指定
DOCA Bench提供了指定core數量和每個core要創建的線程數量的功能,以最大限度地增加提交到給定pipeline的作業數量。
在選擇CPU或線程的數量時,應注意以下事項:
l 跨NUMA區域(即,與BlueField連接的NUMA區域不同)的core上(shang)的線程性能交底,時延較高;
l core 0通常是操作系統(tong)最(zui)常用的(de),應該避免使用;
l 進程在多個CPU core之間切換,由于進程切換開銷會導致性能(neng)下降或(huo)更高的延(yan)遲(chi);
l 通過--core-mask,--core-list,--core-count參數指定CPU core,通過--threads-per-core參數指定線程。
輸入數據的選擇
DOCA Bench可以用以下數據作為輸(shu)入(ru):
l file:單個文件(jian)作為輸入(ru)數據;
l file set:多個文件作為輸入數據,file set本身是一個文件,文件內容是多個文件組成的list,每行代表一個文件,依次作為任務的輸入數據,每個文件的內容將被讀入單獨的buffer。
l 隨(sui)機數據(ju)(ju):在壓縮類(lei)操作中(zhong)可能(neng)性(xing)能(neng)較低,因為文(wen)件中(zhong)有很多重(zhong)復數據(ju)(ju),而(er)隨(sui)機數據(ju)(ju)相反(fan)。
Capabilities Print Tool
CLI name: doca_caps
該工具用于打印可訪問的device和它們的representor device,以及它們的capabilities,可訪問的lib。要求DOCA 2.6.0及其以上版本。
此工具可以在host或Arm端執行。該工具支持以下功能:
l DOCA設備列表-打印每個可用DOCA設備的PCIe設備及其capabilities;
l DOCA representtor設備列表-對于每個DOCA設備,打印每個可用DOCA representtor設備的PCIe設備及其capabilities;
l DOCA lib列表——打印當前操作系統支持的可用DOCA lib,以及它們在特定操作系統上的可用性;
l DOCA lib功能——對于每個DOCA設備,打印它在每個DOCA lib中支持的功能;
運行
l 打印所有可用的DOCA設備和它們的capabilities:

輸出如下:

l 打印所有可用的DOCA representor設備和它們的capabilities:

該命令只能在ARM端運行。
輸出如下:

l 打印特定設備的能力,指定參數--pci-addr;
l 打印所有支持的lib及其可用狀態:

輸出(chu)如下(xia):

l 打印特定lib可用狀態,指定參--lib;
l 打印打印所有信息;

DOCA Comm Channel Admin Tool
Comm Channel Admin Tool用于打印DOCA Comch Channel連接的快照:
l 在BlueField Arm端,它包括DOCA Comch server及其當前連接信息;
l 在host端,它包括所有活動的client連接和它們所連接的server;
l 只報告client-to-server control channel,不包括快路徑的producer/consumer channel;
只支持linux,DOCA版本至少是2.7.0。
運行
Comm Channel Admin Tool可以在host或Arm cpu上執行。默認情況下,該工具掃描所有可用的PCIe插槽以檢測支持的DOCA設備并報告任何可用的Comch信(xin)息。運行命令如下:
