本發(fā)明涉及帶寬測試領域,特別是涉及一種ntb帶寬測試的方法及裝置。
背景技術:
pci-e非透明橋(ntb,non-transparent-bridge)是連接兩個系統(tǒng)的一種點到點的pci-e總線,ntb可以在被連接的兩個控制器之間提供高速的數據通信鏈路。ntb向本地系統(tǒng)提供一個或者多個讀寫窗口,本地系統(tǒng)對這些窗口的一些讀寫操作會被映射到遠端系統(tǒng)的內存上。且本地系統(tǒng)和遠端系統(tǒng)之間可以通過doorbell或者scratchpad等ntb寄存器進行通信。
現(xiàn)有的ntb帶寬測試方法是在待測試的兩個系統(tǒng)上安裝開源linux內核所提供的ntb驅動,并將ntb設備虛擬成網卡來進行測試。具體過程為:本地系統(tǒng)和遠端系統(tǒng)通過ntb_netdev模塊,將各自的ntb設備分別抽象為虛擬網卡;設置同網段的ip之后,即可基于tcp/ip協(xié)議進行通信,借助第三方工具(如iperf、netperf等),基于tcp/ip協(xié)議進行帶寬測試。
將ntb設備虛擬成虛擬網卡,即在傳輸層增加了虛擬網卡層,而虛擬網卡層會引起傳輸的衰減和損耗,從而使得測得的帶寬的準確率較低。且將ntb驅動和虛擬網卡層均放在內核態(tài)實現(xiàn),調試和部署都比較復雜。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種ntb帶寬測試的方法及裝置,目的在于解決現(xiàn)有技術中ntb帶寬測試的準確率較低且測試過程較復雜的問題。
為解決上述技術問題,本發(fā)明提供一種ntb帶寬測試的方法,該方法包括:
基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息;
根據所述簽名信息,建立與對端系統(tǒng)的通信鏈路;
根據cpu內存拷貝方式,利用所述ntb寄存器,將隨機生成的測試數據發(fā)送至所述對端系統(tǒng);
統(tǒng)計預設時間內發(fā)送的所述測試數據的數據量;
根據所述數據量和所述預設時間,計算出與所述對端系統(tǒng)間的ntb通信帶寬。
可選地,所述基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息包括:
利用所述ntb寄存器的第一寄存器窗口,讀取所述對端系統(tǒng)的配置空間;
根據所述ntb寄存器的第二寄存器以及所述配置空間,讀取所述對端系統(tǒng)ntb寄存器內的所述簽名信息。
可選地,所述根據所述簽名信息,建立與所述對端系統(tǒng)的通信鏈路包括:
將所述簽名信息與預存儲簽名信息比對,判斷是否一致;
若一致,建立與所述對端系統(tǒng)的所述通信鏈路。
可選地,所述根據cpu內存拷貝方式,利用所述ntb寄存器,將隨機生成的測試數據發(fā)送至所述對端系統(tǒng)包括:
根據所述cpu內存拷貝方式,將所述測試數據發(fā)送至所述ntb寄存器的第三寄存器窗口;
利用地址翻譯寄存器,將所述測試數據發(fā)送至所述對端系統(tǒng)。
可選地,在所述基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息之前還包括:
初始化當前系統(tǒng);
根據預設配置規(guī)則,在所述ntb_transport模塊內配置所述ntb寄存器。
此外,本發(fā)明還提供了一種ntb帶寬測試的裝置,該裝置包括:
讀取模塊,用于基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息;
建立模塊,用于根據所述簽名信息,建立與所述對端系統(tǒng)的通信鏈路;
發(fā)送模塊,用于根據cpu內存拷貝方式,利用所述ntb寄存器,將隨機生成的測試數據發(fā)送至所述對端系統(tǒng);
統(tǒng)計模塊,用于統(tǒng)計預設時間內發(fā)送的所述測試數據的數據量;
計算模塊,用于根據所述數據量和所述預設時間,計算出與所述對端系統(tǒng)間的ntb通信帶寬。
可選地,所述讀取模塊包括:
第一讀取單元,用于利用所述ntb寄存器的第一寄存器窗口,讀取所述對端系統(tǒng)的配置空間;
第二讀取單元,用于根據所述ntb寄存器的第二寄存器以及所述配置空間,讀取所述對端系統(tǒng)ntb寄存器內的所述簽名信息。
可選地,所述建立模塊包括:
比對單元,用于將所述簽名信息與預存儲簽名信息比對,判斷是否一致;
建立單元,用于若一致,建立與所述對端系統(tǒng)的所述通信鏈路。
可選地,所述發(fā)送模塊包括:
第一發(fā)送單元,用于根據所述cpu內存拷貝方式,將所述測試數據發(fā)送至所述ntb寄存器的第三寄存器窗口;
第二發(fā)送單元,用于利用地址翻譯寄存器,將所述測試數據發(fā)送至所述對端系統(tǒng)。
可選地,還包括:
初始化模塊,用于初始化當前系統(tǒng);
配置模塊,用于根據預設配置規(guī)則,在所述ntb_transport模塊內配置所述ntb寄存器。
本發(fā)明所提供的一種ntb帶寬測試的方法及裝置,基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息;根據簽名信息,建立與對端系統(tǒng)的通信鏈路;根據cpu內存拷貝方式,利用ntb寄存器,將隨機生成的測試數據發(fā)送至對端系統(tǒng);統(tǒng)計預設時間內發(fā)送的測試數據的數據量;根據數據量和預設時間,計算出與對端系統(tǒng)間的ntb通信帶寬。本申請將ntb_transport模塊轉移至用戶態(tài),且不用借助第三方測試工具,方便調試和部署;直接利用ntb_transport模塊配置的寄存器,實現(xiàn)和對端系統(tǒng)的通信,而不用經過虛擬網卡層,不會有傳輸損耗,使得測得的帶寬的準確率較高??梢?,本申請有利于提高ntb通信帶寬的測試準確率,且便于調試和部署。
附圖說明
為了更清楚的說明本發(fā)明實施例或現(xiàn)有技術的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例所提供的ntb帶寬測試方法的一種具體實施方式的流程示意圖;
圖2為本發(fā)明實施例所提供的ntb通信實現(xiàn)模型示意圖;
圖3為本發(fā)明實施例所提供的ntb帶寬測試裝置的結構框圖。
具體實施方式
為了使本技術領域的人員更好地理解本發(fā)明方案,下面結合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參見圖1,圖1為本發(fā)明實施例所提供的ntb帶寬測試方法的一種具體實施方式的流程示意圖,該方法包括以下步驟:
步驟101:基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息。
需要說明的是,上述ntb寄存器可以是指本地系統(tǒng)的寄存器,具體地,其可以包括bar0/1寄存器、bar2/3寄存器、bar4/5寄存器、相關聯(lián)的窗口大小寄存器、地址翻譯寄存器以及scratchapad寄存器等。ntb通信可以利用相關寄存器進行通信。
上述ntb_transport模塊可以是指本地系統(tǒng)ntb驅動層中的模塊,可以在該ntb_transport模塊中,對相關ntb寄存器進行配置,以保證后續(xù)本地系統(tǒng)和對端系統(tǒng)的通信。而為了調試和部署的方便,將該ntb_transport模塊從內核態(tài)轉移至用戶態(tài)。
當然,對端系統(tǒng)內也可以利用ntb_transport模塊,對自身系統(tǒng)的相關寄存器進行預先配置,以保證本地系統(tǒng)和對端系統(tǒng)之間的通信。
上述對端系統(tǒng)ntb寄存器可以是指對端系統(tǒng)或遠端系統(tǒng)中的ntb寄存器,其可以包括bar0/1寄存器、bar2/3寄存器、bar4/5寄存器、相關聯(lián)的窗口大小寄存器、地址翻譯寄存器以及scratchapad寄存器等。
上述簽名信息可以是指預先設定的特定信息,可以根據對端系統(tǒng)的簽名信息,來判斷該對端系統(tǒng)是否為所要通信的對端系統(tǒng)。而該簽名信息可以存儲在ntb寄存器的scratchpad0寄存器中,具體地,在對端系統(tǒng)的ntb設備使能之后,會向自身系統(tǒng)內的scratchpad0寄存器填充預先約定好的簽名信息。當然,對端系統(tǒng)的ntb設備在使能之后也會進行簽名信息的填充。
為了更好地介紹本地系統(tǒng)和對端系統(tǒng)之間的通信實現(xiàn)模型,下面將結合圖2進行介紹說明,圖2為本發(fā)明實施例所提供的ntb通信實現(xiàn)模型示意圖。
如圖2所示,本地系統(tǒng)和遠端系統(tǒng)內均設置有ntb_transport模塊、ntb_hardware模塊和配置空間以及io空間。ntb_transport模塊位于用戶態(tài),ntb_hardware模塊、配置空間和io空間位于內核態(tài)。用戶態(tài)可以通過linux內核接口ioctl去訪問內核態(tài)的相關資源。本地系統(tǒng)和遠端系統(tǒng)的ntb_transport模塊之間可以通過cpu內存拷貝方式通信。該ntb通信實現(xiàn)模型不用虛擬網卡層,避免了網絡層造成傳輸損耗導致的帶寬測試準確率低下的問題,且將ntb_transport模塊轉移至用戶態(tài),方便調試和部署。
為了保證本地系統(tǒng)和對端系統(tǒng)的通信,需要利用ntb設備驅動來配置寄存器、內存窗口等,保證本地系統(tǒng)和對端系統(tǒng)間的正常通信。
作為一種具體實施方式,在上述基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息之前還可以包括:初始化當前系統(tǒng);根據預設配置規(guī)則,在所述ntb_transport模塊內配置所述ntb寄存器。
需要說明的是,上述當前系統(tǒng)可以是指本地系統(tǒng),即本地系統(tǒng)初始化自身的ntb寄存器。當前,對端系統(tǒng)也會先進行初始化,初始化自身的ntb寄存器。
可以直接在ntb_transport模塊內對相關ntb寄存器進行合理配置。上述預設配置規(guī)則可以具體表現(xiàn)為:將bar0/1作為訪問本地系統(tǒng)配置空間的寄存器;bar2/3作為訪問遠端系統(tǒng)配置空間的寄存器;bar4/5作為訪問遠端系統(tǒng)內存空間的寄存器;利用scratchpad0寄存器存儲簽名信息;利用scratchpad1寄存器存儲本地工作空間64位內存地址的高32位;利用scratchpad2寄存器存儲本地工作空間64位內存地址的低32位。
可以看出,在ntb_transport模塊內直接對相關ntb寄存器進行合理配置,保證系統(tǒng)間的正常通信。
在ntb_transport模塊中配置完相關ntb寄存器之后,可以通過本地系統(tǒng)提供的寄存器來和對端系統(tǒng)通信。
作為一種具體實施方式,上述基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息的過程可以具體為:利用所述ntb寄存器的第一寄存器窗口,讀取所述對端系統(tǒng)的配置空間;根據所述ntb寄存器的第二寄存器以及所述配置空間,讀取所述對端系統(tǒng)ntb寄存器內的所述簽名信息。
具體地,本地系統(tǒng)循環(huán)讀取對端系統(tǒng)的scratchpad0寄存器,以判斷對端ntb設備是否使能,并獲取簽名信息。
需要說明的是,上述第一寄存器窗口可以具體指bar2/3窗口,即本地系統(tǒng)通過配置好的bar2/3窗口,獲取對端系統(tǒng)的配置空間。
上述第二寄存器可以具體指scratchapad0寄存器,此時,通過scratchapad0寄存器既定的偏移位置和配置空間,來讀取簽名信息。
步驟102:根據所述簽名信息,建立與對端系統(tǒng)的通信鏈路。
需要說明的是,本地系統(tǒng)可以根據該簽名信息,判斷對端系統(tǒng)是否使能,從而建立與對端系統(tǒng)的通信鏈路。
作為一種具體實施方式,上述根據所述簽名信息,建立與所述對端系統(tǒng)的通信鏈路的過程可以具體為:將所述簽名信息與預存儲簽名信息比對,判斷是否一致;若一致,建立與所述對端系統(tǒng)的所述通信鏈路。
對獲取到的簽名信息進行判斷,確定其是否為預先約定好的簽名信息,進而確定該對端系統(tǒng)是否使能,確認其是否為所需通信的對端系統(tǒng)。
步驟103:根據cpu內存拷貝方式,利用所述ntb寄存器,將隨機生成的測試數據發(fā)送至所述對端系統(tǒng)。
需要說明的是,上述ntb寄存器可以具體指bar4/5窗口和bar4/5地址翻譯寄存器。
具體地,本地系統(tǒng)在建立通信鏈路之后,會不斷地隨機生成數據,且會開始計時,通過通信鏈路將該數據發(fā)送至對端系統(tǒng)。當然,對端系統(tǒng)在建立通信鏈路之后,也會同時開始計時,并不斷地從對應的內存位置讀取數據。
作為一種具體實施方式,上述根據cpu內存拷貝方式,利用所述ntb寄存器,將隨機生成的測試數據發(fā)送至所述對端系統(tǒng)的過程可以具體為:根據所述cpu內存拷貝方式,將所述測試數據發(fā)送至所述ntb寄存器的第三寄存器窗口;利用地址翻譯寄存器,將所述測試數據發(fā)送至所述對端系統(tǒng)。
需要說明的是,上述第三寄存器窗口可以具體指bar4/5窗口,而地址翻譯寄存器可以具體指bar4/5地址翻譯寄存器。
具體地,本地系統(tǒng)以cpu內存拷貝的方式,向本地bar4/5窗口中發(fā)送數據,然后經過bar4/5地址翻譯寄存器的翻譯,即可將數據發(fā)送至對端系統(tǒng)的指定位置。
步驟104:統(tǒng)計預設時間內發(fā)送的所述測試數據的數據量。
可以理解的是,上述預設時間可以是根據實際需要進行設定,在此不作限定。
當然,對端系統(tǒng)也可以同時開始統(tǒng)計數據發(fā)送時間和所接收的數據量,然后本地系統(tǒng)和對端系統(tǒng)都進行帶寬計算。
步驟105:根據所述數據量和所述預設時間,計算出與所述對端系統(tǒng)間的ntb通信帶寬。
本發(fā)明實施例所提供的ntb帶寬測試方法,基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息;根據簽名信息,建立與對端系統(tǒng)的通信鏈路;根據cpu內存拷貝方式,利用ntb寄存器,將隨機生成的測試數據發(fā)送至對端系統(tǒng);統(tǒng)計預設時間內發(fā)送的測試數據的數據量;根據數據量和預設時間,計算出與對端系統(tǒng)間的ntb通信帶寬。該方法將ntb_transport模塊轉移至用戶態(tài),且不用借助第三方測試工具,方便調試和部署;直接利用ntb_transport模塊配置的寄存器,實現(xiàn)和對端系統(tǒng)的通信,而不用經過虛擬網卡層,不會有傳輸損耗,使得測得的帶寬的準確率較高。
下面對本發(fā)明實施例提供的ntb帶寬測試裝置進行介紹,下文描述的ntb帶寬測試裝置與上文描述的ntb帶寬測試方法可相互對應參照。
圖3為本發(fā)明實施例所提供的ntb帶寬測試裝置的結構框圖,參照圖3ntb帶寬測試裝置可以包括:
讀取模塊31,用于基于利用位于用戶態(tài)的ntb_transport模塊預先配置的ntb寄存器,讀取對端系統(tǒng)ntb寄存器內的簽名信息;
建立模塊32,用于根據簽名信息,建立與對端系統(tǒng)的通信鏈路;
發(fā)送模塊33,用于根據cpu內存拷貝方式,利用ntb寄存器,將隨機生成的測試數據發(fā)送至對端系統(tǒng);
統(tǒng)計模塊34,用于統(tǒng)計預設時間內發(fā)送的測試數據的數據量;
計算模塊35,用于根據數據量和預設時間,計算出與對端系統(tǒng)間的ntb通信帶寬。
可選地,上述讀取模塊包括:
第一讀取單元,用于利用ntb寄存器的第一寄存器窗口,讀取對端系統(tǒng)的配置空間;
第二讀取單元,用于根據ntb寄存器的第二寄存器以及配置空間,讀取對端系統(tǒng)ntb寄存器內的簽名信息。
可選地,上述建立模塊包括:
比對單元,用于將簽名信息與預存儲簽名信息比對,判斷是否一致;
建立單元,用于若一致,建立與對端系統(tǒng)的通信鏈路。
可選地,上述發(fā)送模塊包括:
第一發(fā)送單元,用于根據cpu內存拷貝方式,將測試數據發(fā)送至ntb寄存器的第三寄存器窗口;
第二發(fā)送單元,用于利用地址翻譯寄存器,將測試數據發(fā)送至對端系統(tǒng)。
可選地,還包括:
初始化模塊,用于初始化當前系統(tǒng);
配置模塊,用于根據預設配置規(guī)則,在ntb_transport模塊內配置ntb寄存器。
本發(fā)明實施例所提供的ntb帶寬測試裝置,該裝置將ntb_transport模塊轉移至用戶態(tài),且不用借助第三方測試工具,方便調試和部署;直接利用ntb_transport模塊配置的寄存器,實現(xiàn)和對端系統(tǒng)的通信,而不用經過虛擬網卡層,不會有傳輸損耗,使得測得的帶寬的準確率較高。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
專業(yè)人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(ram)、內存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術領域內所公知的任意其它形式的存儲介質中。
以上對本發(fā)明所提供的ntb帶寬測試的方法及裝置進行了詳細介紹。本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權利要求的保護范圍內。