<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          采用SPDK技術(shù)優(yōu)化虛擬機本地存儲的IO性能

          共 2743字,需瀏覽 6分鐘

           ·

          2021-11-15 15:05



          SPDK (Storage performance development kit)是由Intel發(fā)起,用于使用NVMe SSD作為后端存儲的應(yīng)用軟件加速庫。該軟件庫的核心是實現(xiàn)了用戶態(tài)、異步、無鎖、輪詢方式的NVMe驅(qū)動。

          ?

          與傳統(tǒng)Linux內(nèi)核的NVMe驅(qū)動相比,它可以大幅度降低NVMe command的延遲,同時提高單CPU的IO處理能力IOPS,從而形成一套高性價比的解決方案,例如使用SPDK的vhost解決方案可以應(yīng)用于公有云中來加速虛擬機中的NVMe I/O。

          ?

          增強型DC2是滴滴云高性能解決方案中重要的組成部分,我們通過改進SPDK中的vhost框架來實現(xiàn)高性能IO,vhost架構(gòu)如下:




          SPDK vhost作為虛擬機存儲的后端,以進程的形式在宿主機上運行,通過輪詢的方式從共享的Ring Buffer中得到虛擬機中的IO請求,并進行處理,最后將處理完的數(shù)據(jù)同樣通過Ring Buffer的方式通知虛擬機。整個過程不需要鎖的保護,沒有中斷引入的開銷,效率極高。這里面主要涉及到下面幾個部分:


          • 虛擬機中的存儲前端驅(qū)動:根據(jù)具體使用的協(xié)議不同而不同,可能為virtio blk,virtio scsi,或直接使用原生的NVMe driver,主要負(fù)責(zé)接收IO請求,并將請求保存到Ring Buffer中,等待后端的處理。另一方面,前端驅(qū)動還需要處理后端的完成通知。

          • 共享的Ring Buffer:虛擬機中的前端驅(qū)動與宿主中的存儲后端共享的內(nèi)存,用來在兩者之間傳輸數(shù)據(jù),命令和執(zhí)行結(jié)果。

          • SPDK vhost后端:虛擬機存儲的后端實現(xiàn),真正處理IO請求的核心邏輯,通過用戶態(tài)的存儲驅(qū)動實現(xiàn)高效的IO操作。



          傳統(tǒng)方案下,虛擬機里面IO的處理路徑如下:

          可以看到,虛擬機中的IO請求需要經(jīng)過非常長的調(diào)用棧才能最終得到處理,并且虛擬機和宿主機中的調(diào)用棧有很多重復(fù)的部分,這大大地增加了IO處理延時和吞吐量,最終對業(yè)務(wù)的性能造成很大的影響。通過使用SPDK+vhost解決方案,我們可以大大的縮短虛擬機中的IO處理路徑,從而達(dá)到低延時,高IOPS的目的。使用SPDK+vhost方案之后,IO處理調(diào)用路徑如下:

          可以看到,在宿主機這端,IO請求通過SPDK用戶態(tài)驅(qū)動就直接交給硬件處理,大大降低了IO處理延時和提高了IOPS。下面對該方案中各個重要模塊進行介紹。



          虛擬機存儲前端驅(qū)動


          我們可以使用virtio-blk作為虛擬機內(nèi)部的存儲驅(qū)動,也可以直接使用原生態(tài)的NVMe驅(qū)動。Virtio-blk可以實現(xiàn)虛擬機與物理機之間快速的數(shù)據(jù)傳輸。Virtio是一套標(biāo)準(zhǔn)的半虛擬化協(xié)議,專門為虛擬化場景進行設(shè)計和優(yōu)化,能極大的提高虛擬機內(nèi)部IO的處理性能。Virtio blk是在virtio協(xié)議之上實現(xiàn)的塊設(shè)備半虛擬化接口,能夠像其他接口一樣,對設(shè)備進行格式化,創(chuàng)建文件系統(tǒng)等操作,另外Virtio blk在存儲協(xié)議層進行了極大了優(yōu)化,從而減少了協(xié)議層的開銷。如果在虛擬機內(nèi)部直接使用原生NVMe驅(qū)動,該驅(qū)動能直接與SPDK vhost的后端交互,避免了任何協(xié)議轉(zhuǎn)換的開銷,從而能達(dá)到更高的IO性能。



          SPDK+vhost



          SPDK的全稱是Storage Performance Development Kit,它是Intel發(fā)起的一組用來編寫高性能,高擴展性的用戶態(tài)存儲應(yīng)用的工具集。官方網(wǎng)址:https://spdk.io/。


          SPDK重用了很多DPDK中的一些公共組件,比如內(nèi)存管理,輪詢方式的實現(xiàn)等,SPDK的核心是通過無鎖,輪詢的方式實現(xiàn)高效的用戶態(tài)驅(qū)動集合:

          ?

          ?-? ?SPDK將NVMe協(xié)議的實現(xiàn)放在用戶態(tài),存儲應(yīng)用程序直接通過SPDK提供的API訪問設(shè)備,不需要Linux內(nèi)核提供的驅(qū)動支持。


          ? -? ?SPDK一個重要的設(shè)計理念是無鎖化,這樣避免了多線程由于對鎖的爭搶而引入的性能開銷。

          ? -? ?輪詢模式,SPDK使用輪詢方式處理數(shù)據(jù),這樣避免了傳統(tǒng)中斷方式由于上下文切換而引入的性能開銷。



          NVMe SSD



          在增強型DC2中,我們使用了Intel的高性能NVMe SSD,從協(xié)議和物理介質(zhì)上也保證了快速的IO處理。NVMe協(xié)議比傳統(tǒng)的SCSI帶寬更高,延時更低,適合高性能的使用場景。

          ?

          為了使SPDK技術(shù)真正產(chǎn)品化,在使用SPDK本地存儲的情況下,我們加入了vhost熱升級和QEMU熱升級的支持,同時還支持vhost意外退出的自動恢復(fù)機制。這樣我們可以在虛擬機完全無感知的情況下,在線熱修復(fù)SPDK和QEMU的問題,升級過程中,我們會確保對虛擬機內(nèi)部運行程序的影響控制在一定的范圍內(nèi)。

          ?

          通過對SPDK+vhost整體方案的改造和產(chǎn)品化,我們使用fio工具對虛擬機中的IO操作進行性能測試,IO調(diào)度器設(shè)置為noop,fio進行IOPS測試的參數(shù)為:


          --bs=4k?

          --rw=randread/randwrite?

          --direct=1?

          -numjobs=4?

          -iodepth=128


          在隨機讀方面,增強型DC2本地存儲的IOPS能達(dá)到73w左右,隨機寫能達(dá)到47w左右。


          fio進行延時測試的參數(shù)為:


          --ioengine=psync?

          --bs=4k?

          --rw=randread/randwrite?

          --direct=1?

          -numjobs=1?

          -iodepth=1


          在隨機讀方面,強型DC2本地存儲的延時為96us,隨機寫為23us。

          滴滴云增強型DC2除了能夠提供高性能的IO能力,在計算,網(wǎng)絡(luò)等方面也提供強大的性能支持。計算方面,使用Intel最新的2.1GHz Intel(R) Xeon(R) Platinum 8160處理器,并配有全新的 Intel Advanced Vector Extension (AXV-512) 指令集,網(wǎng)絡(luò)方面,使用先進的DPDK網(wǎng)絡(luò)技術(shù),能滿足高帶寬和低延時的需求。




          轉(zhuǎn)載申明:轉(zhuǎn)載本號文章請注明作者來源,本號發(fā)布文章若存在版權(quán)等問題,請留言聯(lián)系處理,謝謝。


          推薦閱讀

          更多架構(gòu)相關(guān)技術(shù)知識總結(jié)請參考“架構(gòu)師全店鋪技術(shù)資料打包”相關(guān)電子書(37本技術(shù)資料打包匯總詳情可通過“閱讀原文”獲取)。

          全店內(nèi)容持續(xù)更新,現(xiàn)下單“全店鋪技術(shù)資料打包(全)”,后續(xù)可享全店內(nèi)容更新“免費”贈閱,價格僅收198元(原總價350元)。



          溫馨提示:

          掃描二維碼關(guān)注公眾號,點擊閱讀原文鏈接獲取架構(gòu)師技術(shù)全店資料打包匯總(全)電子書資料詳情


          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  特级欧美AAAAAA片免费观看 | 3344在线观看免费视频 | 国产视频情 | 欧美成人一级视频 | 国内自拍小视频 |