国产做床爱无遮挡免费视频-国产做爰一区二区-国第一产在线无码精品区-国精产品999国精产品视频-国精产品一二二区视频-国精电影99

為什么硬盤讀寫會消耗大量CPU?硬raid陣列是否會消耗CPU?

  2021-08-13   jiajufan     12   0  


硬盤讀寫會消耗大量CPU?什么硬盤,什么樣的讀寫情景,什么CPU,大量有多大?CPU性能對讀寫性能影響很大有多大?題目加了NAS和RAID關鍵字,那么是硬RAID還是軟RAID?哪個級別的RAID?如果是軟RAID,是主板驅動的軟RAID還是操作系統/文件系統的軟RAID?


分幾個情況簡述一下吧:

普通機械硬盤讀寫:

早期的硬盤讀寫都是通過CPU指令執行,這種讀寫方式叫PIO,(Programmed input/output,可編程輸入輸出),大概流程是程序發起讀取指令,CPU找到硬盤映射的地址D1,然后發出指令,說需要從地址D1讀取若干字節寫入目標地址D2;硬盤控制器根據這個指令從硬盤讀取若干數據,并寫入內存地址D2后,告知CPU指令執行完畢;然后CPU從內存D1讀取若干字節數據——期間CPU一直在等待硬盤控制器的返回,并不能執行其它指令,除非有更高優先級的中斷。很顯然,這種讀寫模式非常占用CPU資源。在老式電腦上,PIO方式的硬盤讀寫往往會消耗30%甚至更多的CPU資源。


之后為了解決這個問題,硬盤讀寫使用了DMA模式。和PIO模式相比,只要硬盤控制器向CPU確認收到讀寫指令了,CPU就可以執行其它指令,直到硬盤控制器完成從硬盤讀取數據到內存D2后發起中斷,CPU再去處理D2里面的數據,這個過程對CPU資源的消耗很小——很顯然,和PIO相比,這就是I/O方面的硬件加速:大部分的讀寫操作由硬盤控制器實現。當然,文件系統是軟件層面的,假設我們要讀取十個1MB大小的文件,不考慮目錄結構的讀取和文件碎片的情況下,會比讀取一個10MB的文件消耗將近10倍的CPU資源——因為CPU需要發起10次讀取指令。通常情況下,DMA方式讀寫數據消耗的CPU資源在3%以下甚至更低。


新一代的NVMe SSD,因為通常使用4x PCI-E通道,新一代的NVMe SSD是要求PCI-E 3.0(1x帶寬8GT/s, 4x帶寬32GT/s,除掉檢驗位是4*985MB/s=3940MB/s);而舊平臺(Intel六代之前)只支持PCI-E 2.0(1x帶寬5GT/s,4x帶寬20GT/s,除掉校驗位是4*500MB/s=2000MB/s),對于部分高端NVMe SSD來說已經形成帶寬瓶頸了,自然會導致硬盤讀寫性能下降。另外,更高速的讀寫速度自然也會消耗更多的CPU性能——一秒鐘時間就能向CPU提供3GB+的數據等待CPU進行處理,顯然和機械硬盤一秒鐘才能讀取到200+MB數據消耗的CPU資源不同。


然后是軟RAID的情況:

這個要分不同的RAID級別來說。最簡單的是RAID 1,CPU需要把一份寫入指令復制成兩份同時寫入兩個硬盤,顯然對CPU資源的消耗起碼要多一倍的。


然后復雜一點的是RAID 0,CPU需要按照RAID設置的條帶寬度,把一份數據截成若干段,D1、D4、D7寫入磁盤1,D2、D5、D8寫入磁盤2,D3、D6、D9寫入磁盤3(假設這是一個三個硬盤組成的RAID 0)。根據不同的RAID驅動或者緩存設置,不算截短數據所需的計算量,可能需要3倍到9倍的CPU資源消耗。組成RAID 0的磁盤越多,消耗的CPU資源也越多。


再復雜一點的是RAID 5,CPU需要根據D1、D2、D3的內容做XOR算出一個P1, D4、D5、D6算出一個P2,D7、D8、D9算出一個P3,然后D1、D4、D7寫入磁盤1,D2、D5、P3寫入磁盤2,D3、P2,D8寫入磁盤3,P1、D6、D9寫入磁盤4。這個過程中,P1、P2、P3的計算會消耗大量的CPU資源,和RAID 0類似,組成RAID 5的硬盤越多,消耗的CPU資源也越多。


更復雜的是RAID 6,除了P1、P2、P3外,CPU還要用另外一種算法計算出來另外三個校驗數據Q1、Q2、Q3,并且和D1-D9、P1-P3打散寫入到不同的磁盤上,CPU資源進一步被消耗——這就是為什么軟RAID 5還算常見,但軟RAID 6很少見的原因。當然,現在四核甚至更多的核心的CPU也很常見,很多面向存儲的操作系統/文件系統都開始支持RAID 6或者類似的RAID級別:ZFS的RAIDZ2,Linux的mdadm,Windows的雙校驗存儲池。但很顯然,和單個硬盤存儲相比,讀寫同樣的數據,會消耗數十倍甚至上百倍的CPU資源。如果CPU性能太差,例如使用了老式的CPU,或者使用低功耗平臺(例如ATOM),并且往往在NAS中,CPU還要同時提供其他服務,這個時候讀寫性能是非常可能會受到CPU性能影響的。


最后,上面所提到的幾個RAID級別,都可以通過購買硬件RAID卡實現硬件加速——所有提到的這些需要增加CPU負擔的工作都由RAID卡上的主控芯片完成,對于CPU來說,整個RAID陣列和一個普通硬盤并沒有任何區別——除了需要加載RAID卡驅動而不是加載硬盤控制器驅動,自然也不會消耗額外的CPU性能


作者:木頭龍

鏈接:https://www.zhihu.com/question/31594580/answer/328981325
來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


客服微信:18025338165點擊復制并跳轉微信

主站蜘蛛池模板: 亚洲综合电影小说图片区 | 99这里有精品视频 | 麻婆豆传媒一区二区三区 | 日韩精品国产一区二区三区 | 午夜国产福利在线直播 | 国产在线观看91精品不卡 | 国产一级一片免费播放放 | 日本www视频男人的天堂 | 中文日产| 国产精品tv在线观看 | 亚洲综合偷拍一区二区三 | 国产亚洲精品福利在线 | 日日噜噜夜夜狠狠视频无 | 欧美日韩视频在线观看网址 | 大地影院mv在线观看视频免费 | 欧美精品成人一区二区三区影院 | 日韩欧美视频 | 欧美日韩国产一中文字不卡 | 欧美性色黄大片www喷水 | 欧美巨大巨粗黑人性aaaaaa | 精品精品国产自 | 91探花国产 | 欧美日韩一区二区三区在线播放 | 欧美一级a人与 | 成全免费观看高清电影 | 国产亚州视频在线中文字幕 | 深夜爽爽动态图无遮无挡 | 日本一区二区三区精品视频 | 香蕉在线亚洲欧美专区 | 国产女人体一区二区三区 | 免费人成视在线观看不卡 | 欧美交换配乱吟粗大免费看 | 国产香蕉人在线播放视频网站 | 国产美女视频国产视视频 | 日本一线二线三卡四卡区别 | 中文字幕视频区 | 欧美一线二线在 | 亚洲美女视频网 | 欧美亚洲日本中文字幕在线 | 97国产 | 亚洲高清|