經(jīng)歷了近十幾年的快速發(fā)展,SSD已在眾多領(lǐng)域取代了HDD。消費級SSD的規(guī)格趨于穩(wěn)定,成本要求不斷提高,技術(shù)和市場的格局已基本固定。所以,許多初創(chuàng)團隊和大廠開始將研發(fā)重心放在了企業(yè)級SSD上。在這個大背景下,我們開發(fā)了一套NVMe SSD的測試軟件PyNVMe3。通過最近三年多的推廣,我們和眾多OEM廠商、SSD廠商建立了良好的合作關(guān)系。很多廠商使用我們的產(chǎn)品和服務(wù),并取得了良好的效果:以前抓不到的問題可以抓到了,以前不能測的特性可以測了。
快是王道
為什么PyNVMe3能找出更多的bug?原因在于,PyNVMe3對性能有極致的追求。對于企業(yè)級SSD來說,最基本的要求就是穩(wěn)定。我們對性能的極致追求并不是為了性能測試的結(jié)果,而是要最大化對測試盤的壓力,提供最緊湊的時序,這樣才有可能在有限的開發(fā)周期內(nèi)壓出各種潛在的問題。
雖然所有企業(yè)級SSD都會使用fio進行性能和壓力測試,但其也有一定的局限性。PyNVMe3可以帶來比fio更大的測試壓力。我們在同一臺主機和同一塊SSD盤上對fio和PyNVMe3的4K隨機讀性能進行了測試。fio的單核IOPS為445k,而PyNVMe3可達到831K。PyNVMe3只利用單核CPU就可以打到大部分SSD盤的性能瓶頸。
但有人會問:那我們在用fio測試的時候定義numjobs=4甚至更多的jobs,不就可以了嗎?本質(zhì)上,1個job和4個job是兩個不同的測試用例。無論性能還是可靠性,4個job的測試都不能替代1個job的測試。PyNVMe3對性能的極致追求不是為了性能測試的成績更好看,而是要在各種workload下對測試盤提供最大的壓力和最緊湊的時序,用比真實業(yè)務(wù)場景更大的壓力盡量把問題在研發(fā)階段就打出來。
從設(shè)計上來看,PyNVMe3能實現(xiàn)比fio更高的性能,是因為PyNVMe3使用了我們基于SPDK自主研發(fā)的用戶態(tài)NVMe驅(qū)動。如下圖所示,fio的每一個IO都需要經(jīng)過復(fù)雜的內(nèi)核存儲子系統(tǒng)軟件堆棧。而PyNVMe3直接通過用戶態(tài)驅(qū)動把IO命令寫到和測試盤共享的命令隊列,并使用輪詢機制從回收隊列獲得IO的結(jié)果。這種方式避免了主機端的內(nèi)核和中斷開銷,性能更快、延遲更小,并且性能和延遲的一致性也更好,更接近測試盤的本來面目。打個比方,傳統(tǒng)測試工具在測試盤上面蓋上了一層厚厚的棉襖,讓我們看不清盤的真實面貌;而PyNVMe3的輕量級的驅(qū)動只是一層薄薄的紗,讓測試腳本可以觸摸到測試盤的每一個棱角。
還要可靠
任何存儲設(shè)備對可靠性的要求都非常高,SSD也是如此??煽啃跃唧w可以分成很多方面:性能要可靠、設(shè)備要可靠、數(shù)據(jù)要可靠。性能可靠:SSD盤要在任何workload下面都提供高并且穩(wěn)定的性能。設(shè)備可靠:SSD盤即便在很大IO壓力下,也要能正確處理一些異常事件和命令。數(shù)據(jù)可靠:SSD盤在各個生命周期的階段都不能丟數(shù)據(jù),真的發(fā)生數(shù)據(jù)丟失也一定要如實報告。
要測試SSD盤的可靠性,需要一個更可靠的測試工具。
PyNVMe3通過上文提到的高性能低延遲的用戶態(tài)驅(qū)動,能給盤最大的壓力,并且記錄準確的性能跳動和延遲分布。
PyNVMe3可以在Python腳本中創(chuàng)建多個進程,利用多個CPU的資源對同一個測試盤下不同的測試命令。譬如在一個CPU大壓力讀寫測試盤的同時,另一個CPU發(fā)指令對測試盤掉電或reset;也可以在一個CPU大壓力讀寫測試的同時,另一個CPU對測試盤發(fā)Admin命令或做帶外管理操作。
PyNVMe3實現(xiàn)了對測試腳本透明的數(shù)據(jù)校驗機制:通過在DRAM中維護每一個LBA的CRC值,來檢查每一筆讀數(shù)據(jù)的正確性。借助x86和ARM提供的CRC專用指令,PyNVMe3可以在實現(xiàn)極高IO性能的同時,對每一筆讀IO進行CRC校驗。這種機制簡化了數(shù)據(jù)一致性測試的實現(xiàn),可以在大部分測試中都實現(xiàn)對數(shù)據(jù)一致性的檢查。
PyNVMe3本身的設(shè)計也非常注重可靠性。如下圖所示,我們在底層驅(qū)動中實現(xiàn)了高效的數(shù)據(jù)流,而將各種各樣的NVMe SSD特性放到上層庫和Python腳本中實現(xiàn)。通過這種分層設(shè)計,將復(fù)雜多變的特性和穩(wěn)定可靠的數(shù)據(jù)流分開實現(xiàn),上層的變化不會影響到下層驅(qū)動的穩(wěn)定性。譬如,我們在擴展對ZNS、SRIOV、MI等特性的時候,都是通過上層腳本實現(xiàn)的,避免各種新特性的加入對下層驅(qū)動的穩(wěn)定性造成影響。
二次開發(fā)
PyNVMe3不僅具有極高的性能和可靠性,而且還非常容易實現(xiàn)二次開發(fā)。在PyNVMe3設(shè)計之初,我們就確定將所有功能都通過Python API作為唯一的接口開放給客戶使用。測試工程師可以通過開發(fā)Python腳本來實現(xiàn)他們的創(chuàng)新,并將腳本部署到自動化的測試流程中,實現(xiàn)項目的敏捷開發(fā)模式。這對快節(jié)奏和高要求的SSD研發(fā)項目來說是至關(guān)重要的。
PyNVMe3的API設(shè)計遵循NVMe協(xié)議,通過面向?qū)ο蟮姆绞桨巡煌母拍詈凸δ芊庋b到不同的類中實現(xiàn)。下圖是PyNVMe3 API提供的各種類及其關(guān)聯(lián)方式。
利用PyNVMe3提供的API,用戶可以快速實現(xiàn)以下各種特性的Python測試腳本:
各種類型的Admin命令
各種壓力和類型的IO場景
自定義的NVMe初始化過程
雙端口
SRIOV
多Namespace
各種LBA format
各種NVMe的特性,如:ZNS,SGL,Reservation,metadata,Arbitration等
注入各種錯誤和reset事件
掉電測試
Latency和QoS
數(shù)據(jù)一致性
MI/SMBus帶外管理接口
受限于測試工具,以往很多特性不能充分測試。PyNVMe3不僅可以實現(xiàn)上述各種特性的測試,還可以將多種特性結(jié)合起來構(gòu)造更復(fù)雜的測試場景。譬如我們發(fā)現(xiàn),將大壓力IO和Admin命令放到一起測試,有些盤處理Admin命令的延遲會長達數(shù)秒。PyNVMe3提供的這些API讓用戶可以通過二次開發(fā)實現(xiàn)更多的測試用例,讓測試開發(fā)的效率更高、更富有成效。
我們的腳本開發(fā)指南提供了PyNVMe3二次開發(fā)的更多細節(jié)。
公共平臺
PyNVMe3具有很高的性能和可靠性,可以便捷地二次開發(fā)各種特性的測試腳本,所以很多客戶開始選擇PyNVMe3作為內(nèi)部研發(fā)階段的測試平臺,這些客戶覆蓋了消費級、企業(yè)級、數(shù)據(jù)中心、工業(yè)和車載等各類SSD產(chǎn)品和主控的研發(fā)。
PyNVMe3是一個軟件定義的NVMe SSD測試平臺,可以工作在筆記本、臺式機、工作站以及服務(wù)器等各種通用計算機平臺之上。PyNVMe3不捆綁特定硬件平臺,降低用戶大規(guī)模部署的成本和風險。PyNVMe3也可以適配各種專門的測試制具,用來實現(xiàn)電源控制、功耗測量、帶外管理接口命令等測試。PyNVMe3是一個為廣大SSD廠商定制開發(fā)的NVMe SSD測試平臺,受到廣大廠商的關(guān)注和信任。
當我們的客戶發(fā)現(xiàn)他們的合作伙伴也在使用PyNVMe3的時候,PyNVMe3作為一個獨立第三方的測試平臺的優(yōu)勢就體現(xiàn)出來了:各個廠家可以各自開發(fā)PyNVMe3的測試腳本,并且和他們的合作伙伴共享這些測試腳本,來保證雙方合作的順暢。我們經(jīng)常會遇到一些問題只能通過SSD廠商的內(nèi)部平臺來復(fù)現(xiàn),但是出于各種技術(shù)、商業(yè)和IP的考慮,這些內(nèi)部平臺無法開放給合作伙伴使用?,F(xiàn)在我們只需要在PyNVMe3上面開發(fā)腳本,這樣合作各方都可以在PyNVMe3這個公共平臺上面跑相同的測試腳本。相對于開放整個內(nèi)部測試平臺,共享一些Python測試文件的使用權(quán)限在公司之間更容易操作。PyNVMe3正在成為業(yè)界一個專業(yè)的可獲得的SSD測試公共平臺。
我們與眾多SSD廠商和OEM廠商建立了合作關(guān)系,為客戶提供我們的測試工具和服務(wù)。我們通過PyNVMe3的開放的理念、優(yōu)越的性能和可靠性、強大的二次開發(fā)擴展能力,和業(yè)界合作伙伴一起做出更好更穩(wěn)定的SSD產(chǎn)品!
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1372瀏覽量
40276 -
SSD
+關(guān)注
關(guān)注
21文章
2857瀏覽量
117367 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84627 -
HDD
+關(guān)注
關(guān)注
0文章
143瀏覽量
27419 -
nvme
+關(guān)注
關(guān)注
0文章
221瀏覽量
22621
原文標題:PyNVMe3:重塑企業(yè)級SSD測試的新范式
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論