自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SCSI軟件層如何對性能造成影響

存儲 存儲軟件
在閃存存儲領(lǐng)域,我們可以看到無論在市場、客戶還是在研發(fā),大家都在支持NVMe標(biāo)準(zhǔn),其很重要的一個(gè)原因是傳統(tǒng)的SCSI已經(jīng)不能滿足性能需求,其變成了存儲系統(tǒng)的一個(gè)重要性能瓶頸點(diǎn)。從軟件層、傳輸協(xié)議效率、軟件接口標(biāo)準(zhǔn)、芯片接口、傳輸鏈路,傳統(tǒng)的SAS/SATA都存在很多不足的地方。

對于閃存存儲而言,一切都發(fā)生了變化,SSD的性能無論是帶寬還是IOPS都非常高,因此,存儲的性能瓶頸點(diǎn)從Disk端轉(zhuǎn)移到了CPU、OS以及網(wǎng)絡(luò)端。

在閃存存儲領(lǐng)域,我們可以看到無論在市場、客戶還是在研發(fā),大家都在支持NVMe標(biāo)準(zhǔn),其很重要的一個(gè)原因是傳統(tǒng)的SCSI已經(jīng)不能滿足性能需求,其變成了存儲系統(tǒng)的一個(gè)重要性能瓶頸點(diǎn)。從軟件層、傳輸協(xié)議效率、軟件接口標(biāo)準(zhǔn)、芯片接口、傳輸鏈路,傳統(tǒng)的SAS/SATA都存在很多不足的地方。今天存儲老吳和大家一起分享一下SAS/SATA接口在軟件層面的重要性能瓶頸點(diǎn),從研發(fā)的角度來解釋為什么SCSI軟件層是一個(gè)重要的性能瓶頸點(diǎn)。

[[209373]]

大家都比較清楚SCSI軟件層的組織結(jié)構(gòu),其主要由三大部分組成:

1, SCSI上層驅(qū)動層。這層驅(qū)動主要完成SCSI設(shè)備的功能,例如磁盤的驅(qū)動、Tape的驅(qū)動,CD-ROM的驅(qū)動都在這層實(shí)現(xiàn)。對于磁盤驅(qū)動,通常也被稱之為SD驅(qū)動,實(shí)現(xiàn)了一個(gè)塊設(shè)備功能。對上接入塊設(shè)備驅(qū)動層;對下和SCSI中間層對接。

2, SCSI中間層。中間層軟件主要完成SCSI命令的處理、出錯(cuò)處理、超時(shí)處理等。中間層的上面是各個(gè)SCSI的功能驅(qū)動;下面是SCSI的底層驅(qū)動。

3, SCSI底層驅(qū)動。底層驅(qū)動實(shí)現(xiàn)了SCSI的數(shù)據(jù)傳輸和HBA的驅(qū)動。在底層可以實(shí)現(xiàn)ISCSI的發(fā)送器;可以模擬一個(gè)SCSI的HBA;當(dāng)然也可以實(shí)現(xiàn)LSI的HBA驅(qū)動程序,并通過DMA的方式將數(shù)據(jù)提交給實(shí)際的硬件板卡。

在傳統(tǒng)磁盤存儲中,性能瓶頸點(diǎn)在磁盤端。CPU處理器、NUMA體系架構(gòu)、軟件的并發(fā)性對存儲的性能影響幾乎為零。存儲老吳在07年研發(fā)Thin Provisioning邏輯卷系統(tǒng)的時(shí)候,試圖通過優(yōu)化鎖資源競爭來提升IO性能,結(jié)果是預(yù)料之中的徒勞。對于磁盤存儲來說,CPU性能一直是搓搓有余的。一個(gè)磁盤的IOPS最多只能跑到200,所以中斷對CPU來說也毫無壓力,在這種情況下,SCSI軟件層無論如何實(shí)現(xiàn)對性能基本是沒有影響的。所以,磁盤存儲是一個(gè)實(shí)實(shí)在在的IO Intensive應(yīng)用。

但是,對于閃存存儲而言,一切都發(fā)生了變化,SSD的性能無論是帶寬還是IOPS都非常高,因此,存儲的性能瓶頸點(diǎn)從Disk端轉(zhuǎn)移到了CPU、OS以及網(wǎng)絡(luò)端。在這種情況下,我們再來看一看SCSI的軟件棧。如下圖所示,每個(gè)SCSI設(shè)備只提供了一個(gè)請求隊(duì)列(request queue),那么無論系統(tǒng)中存在多少個(gè)處理線程,無論系統(tǒng)中存在多少個(gè)CPU核,所有的請求都會以競爭的方式入隊(duì)列。SCSI設(shè)備的請求隊(duì)列是系統(tǒng)的一個(gè)競爭資源。

對于SMP系統(tǒng)而言,競爭資源的處理都需要通過加鎖的方式來實(shí)現(xiàn)訪問。在Linux的實(shí)現(xiàn)中通過Spinlock的方式對請求隊(duì)列進(jìn)行互斥保護(hù)。由于SSD性能非常高,所以系統(tǒng)中的CPU都在忙于請求的處理,這些忙碌的CPU最終都需要去競爭請求隊(duì)列鎖,將請求放入隊(duì)列。這種大量的競爭導(dǎo)致每個(gè)CPU的處理效率大為降低,大量時(shí)間處于自旋狀態(tài),等待獲取請求隊(duì)列鎖。從而使得整體IO處理的效率降低,存儲性能由于軟件上的限制而得不到提升。

針對這個(gè)問題,我們做過實(shí)際的測試,發(fā)現(xiàn)當(dāng)IO壓力上來之后,系統(tǒng)中的CPU絕大部分時(shí)間都處于自旋狀態(tài),都在競爭請求隊(duì)列的自旋鎖。所以,SCSI層的單請求隊(duì)列是一個(gè)嚴(yán)重的性能瓶頸點(diǎn)。

為了解決這個(gè)問題,Linux對SCSI的單隊(duì)列做了改進(jìn),引入了Multi-queue的方式。通過多隊(duì)列的方式可以減少、避免線程/CPU之間的競爭,可以充分發(fā)揮單個(gè)CPU處理IO的效率,從而整體提升IO處理的性能。SCSI引入多隊(duì)列之后的示意圖如下圖所示:

需要注意的是,在軟件上為每個(gè)SCSI設(shè)備引入多隊(duì)列之后,同樣需要在HBA端為軟件訪問提供多隊(duì)列支持,否則性能將會局限在HBA卡上。閃存存儲軟件的設(shè)計(jì)與實(shí)現(xiàn)和傳統(tǒng)存儲相比,不僅數(shù)據(jù)分布、數(shù)據(jù)的組織形式發(fā)生了變化;而且軟件的實(shí)現(xiàn)效率、CPU并發(fā)潛能的挖掘、計(jì)算機(jī)體系結(jié)構(gòu)的考慮都會變得尤其重要。所以,我一直認(rèn)為,閃存存儲不僅玩的是存儲技術(shù),而是高性能計(jì)算技術(shù)。

責(zé)任編輯:武曉燕 來源: 51CTO博客
相關(guān)推薦

2021-07-19 10:33:57

數(shù)據(jù)泄露漏洞黑客

2022-11-17 08:00:18

JavaScript錯(cuò)誤性能

2022-12-15 08:00:38

JavaScript錯(cuò)誤性能

2011-08-23 12:20:47

筆記本評測

2012-05-07 08:18:42

程序日志性能

2022-06-30 08:48:20

Web軟件行業(yè)區(qū)塊鏈

2024-07-05 15:52:34

2015-02-12 09:14:41

2010-05-24 13:22:37

Swap空間

2009-02-24 20:55:19

軟件系統(tǒng)構(gòu)測試影響分析

2022-06-07 08:18:49

懶加載Web前端

2023-07-06 15:43:26

2021-10-17 15:52:52

勒索軟件惡意軟件安全

2009-06-30 15:02:41

磁盤排序Oracle數(shù)據(jù)庫性能

2011-05-25 14:42:37

Oracle空間管理系統(tǒng)性能

2010-05-10 17:07:54

Oracle SQL條

2022-04-28 08:52:40

懶加載Web

2019-08-20 10:57:26

MySQL 網(wǎng)絡(luò)性能

2019-02-22 09:05:04

SwapNVMe設(shè)備

2023-10-19 12:13:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號