日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈存储软件的无锁设计

發布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈存储软件的无锁设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面向磁盤設計的存儲軟件不需要考慮競爭鎖帶來的性能影響。磁盤存儲軟件的性能瓶頸點在于磁盤,磁盤抖動會引入極大的性能損耗。因此,傳統存儲軟件的設計不會特別在意處理器的使用效率。曾經對一個存儲虛擬化軟件進行性能調優,在鎖競爭方面做了大量優化,最后也沒有達到性能提升的效果,原因就在于存儲虛擬化的性能瓶頸點在于磁盤,而不在于處理器的使用效率。正因為如此,在面向磁盤設計的軟件中,很多都采用單線程、單隊列處理的方式,一定程度上還可以避免由于并發所引入的磁盤抖動問題。

?

在面向NVMe SSD設計的存儲軟件中,這一切正發生著變化。和傳統磁盤相比,NVMe SSD具有極高的IO讀寫性能,不存在傳統磁盤所具有的訪問尋道、抖動問題。為了發揮NVMe SSD的性能,無論在軟件還是在硬件上都需要采用多隊列技術,通過多隊列方式充分發揮NVMe SSD的性能。通常NVMe SSD控制器可以提供128IO提交和結束隊列,NVMe驅動會根據處理器的核數利用SSD控制器提供的硬件能力,實現IO的并發處理。在驅動層面,可以綁定處理器與IO隊列,達到IO并發處理的效果。在這種情況下,業務線程一定要多線程并發利用處理器,才可以將NVMe SSD的多隊列真正用起來。在很多情況下,業務的軟件模型往往會分為計算單元和存儲單元兩部分。計算單元往往是多線程并發處理的模式;存儲單元在傳統磁盤上是單線程模式,在NVMe SSD上會變成多線程并發處理的方式。這種軟件處理模型可以描述如下:



在上述軟件模型中,如果ComputeIO單元通過合理的資源切分劃分在一起,ComputeIO單元在同一個執行上下文中,那么整個軟件的效率將會變得非常高。但是在很多情況下,計算和存儲可以是兩個軟件模塊,或者計算和存儲資源無法有效的進行劃分,那么在這種情況下,計算和存儲線程之間需要通過消息隊列進行通信。這種消息通信可以抽象成生產者-消費者模型。Compute單元是生產者;IO單元是消費者。

?

生產者-消費者在實現過程中需要進行同步操作。如果采用傳統的鎖機制實現“生產者-消費者”隊列,那么存儲系統的性能瓶頸將會轉移到鎖競爭點。鎖競爭一方面使得處理器處于長時間等待或者睡眠調度的狀態;另一方面由于大量的緩存無效操作使得CPU的訪存效率大大降低??偟膩碚f,鎖競爭將會導致CPU使用效率的降低,從而可以看到處理器的IPC指標變得很低。

?

那么在上述軟件模型中,如何提升處理器效率,充分發揮NVMe SSD的性能呢?這就需要考慮采用無鎖設計。在多線程并發處理的場景下,難免需要在線程之間進行數據交互,為了提高CPU的效率,這種大量的線程交互可以采用無鎖的方式進行同步。無鎖設計需要采用特殊的算法與處理器提供的特殊指令,常用的無鎖算法有采用CAS指令實現的無鎖隊列,該種類型的算法需要一個Dummy節點,因此存在動態分配內存的問題。為了避免動態內存分配,可以采用固定長度的無鎖隊列Lock-free Ring,但是會存在隊列深度固定的問題。在存儲系統設計中,關鍵路徑上最好需要避免內存資源的頻繁分配,另外還需要實現隊列深度的可變與IO數量的流控。因此,需要根據存儲系統的特征,需要設計符合自身特點的無鎖算法。在最近一個存儲項目中,我們創造了一種無鎖生產者-消費者及無鎖流控算法,采用這種算法之后,我們可以發現IO的性能可以隨著CPU核數線性變化。當CPU核數越多,IO性能越高。下圖是實際測試的性能與IO線程數量之間的關系圖:




上圖我們可以看出當IO線程數量增加到28之后,隨機讀性能變化不明顯,并且出現了一定的性能下降。在該測試平臺上,一共具備28CPU硬核,通過超線程的方式,達到56CPU核。從上面的實驗結果來看,超線程對IO性能貢獻不大。隨機讀性能在IO Thread數量達到8個之后,性能達到峰值。這是由于后端NVMe SSD盤性能達到了峰值。

?

NVMe存儲系統設計面臨CPU性能瓶頸的問題,如何提高CPUIO處理效率是高性能存儲系統設計必須要考慮的問題。無鎖設計是提高CPU效率的一種有效手段,一個好的無鎖設計需要與系統軟件的設計整體考慮。

?


《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的谈谈存储软件的无锁设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。