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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

存储基础:磁盘 IO 为什么总叫你对齐?

發(fā)布時間:2024/8/23 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 存储基础:磁盘 IO 为什么总叫你对齐? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

??

來源 |?奇伢云存儲

頭圖 | 下載于ICphoto

存儲 IO 重要的一個知識點

劃重點:存儲 IO 要對齊。

資深存儲人員為啥總叫你注意 IO 對齊的?機械磁盤?IO 為什么要 512 對齊呢,SSD 盤為啥要 4K 對齊?不對齊又會如何?

重要的知識點

  • 機械盤的 IO 要扇區(qū)對齊(絕大部分的扇區(qū)是 512 字節(jié)大小),磁盤的讀寫最小單元就是扇區(qū);

  • SSD 盤的 IO 要 4K 對齊,SSD 盤的讀寫單元是 page,一個 page 為 4K 大小;

  • 如果不對齊,會有問題問題?

  • 性能極差;

  • SSD 壽命縮短;

  • 那你就會想了,出現(xiàn)這個問題的原因又是啥?

    本質原因是內部 IO 流量和次數(shù)的放大。

    那你又會想了,怎么會這樣呢,我不就寫 1 個字節(jié)數(shù)據(jù)而已嘛,放大個啥?

    這個秘密就在于前面提到的,機械盤和 SSD 盤的 IO 都有最小單元的概念。機械盤是以扇區(qū)為最小的空間單位,SSD 盤則是 4k 的 page 作為 IO 的最小單元。所以當在機械盤上讀 1 個字節(jié)的數(shù)據(jù),本質上是至少讀一個扇區(qū),寫 1 個字節(jié)則更復雜,先要把這個扇區(qū)讀出來,然后在內存里 update,最后又把這個扇區(qū)寫回到磁盤。

    你可能又有疑問了:為啥機械盤和 SSD 盤都要按照一個單元來管理呢,為啥不 1 字節(jié) 1 字節(jié)管理呢?如果這樣的話,業(yè)務讀寫不就方便了嘛。

    答案是:開銷。 考慮以下兩個方面:

    • 第一個是存儲的開銷:數(shù)據(jù)存儲到磁盤上還有 SSD 盤上是會有校驗的(比如 ECC 校驗),如果每個字節(jié)都對應一個校驗,存 1T 的數(shù)據(jù)有 1T 的校驗?那這個存儲開銷無比的大。那如果是現(xiàn)在 512 字節(jié)對應一個 1 字節(jié)的校驗,則開銷完全可控;

    • 第二個是性能的開銷:物理硬件是跟真實世界的設計匹配的,對于機械磁盤的寫是利用磁化介質來存儲數(shù)據(jù),如果磁盤上是1 個字節(jié),甚至 1 個 bit 來獨立存儲,那磁盤磁頭的次數(shù)將無比龐大,性能也將無比的下降(每一次都是寫數(shù)據(jù)+校驗)。SSD 的寫則更復雜,因為 SSD 由于自身的存儲特點,是無法覆蓋寫的,每次寫都是寫新位置,舊的位置則是作為垃圾等待后臺 GC ,粒度太小則會導致擦寫的次數(shù)無比的多,性能和壽命都將不可接受;

    所以說,在綜合因素的權衡下,硬件對于空間管理會劃分固定單元,并對 IO 也提出單元對齊的要求。至于磁盤固定單元為 512 字節(jié),SSD 的 IO 單元為 4K 則是經(jīng)過綜合的科學測試和驗證的一個數(shù)值而已。

    舉個不嚴謹?shù)睦?/strong>:

    在京東上買東西,你買 1 塊錢的貨,京東要收費 7 塊的運費。對你來講是不是劃不來?因為對京東來講,如果真是單獨送你這 1 塊錢的東西也劃不來。所以京東要你買的東西滿 79 元才給你免運費。

    如果說真的有個愣頭青,每次都單獨買 1 塊錢的貨,買它 100 次,劃得來來不?

    當然劃不來,運費都要 700 了,加上貨本身,總費用 800 元(哈哈,可能京東被你折騰的更慘)。

    那如果是 1 次買 100 件這個貨呢?

    你只需要 100 塊。

    所以,你再思考下為什么磁盤本身一定有固定大小的存儲單元,通俗話叫做:量大從優(yōu),專業(yè)一點叫做:減少邊際效應。

    對齊有哪些方面

    對齊其實很簡單,只有兩個維度:

    • 偏移對齊

    • 長度對齊

    是不是很簡單呀。偏移和長度就是我們常說的 offset,length,對齊通常就是既要保證偏移對齊也要保證長度對齊。

    IO 讀寫的真實樣子

    下面以機械盤扇區(qū)對齊和非對齊的舉例。為了簡化,以下例子討論的的對齊都是偏移和長度雙重對齊的。

    ?1???扇區(qū)對齊場景

    場景:讀 512 個字節(jié)數(shù)據(jù)是怎么做的?

    步驟如下:

  • 磁頭擺到指定偏移;

  • 讀取一個扇區(qū)的數(shù)據(jù)到內存;



  • 開銷:只需要一次磁盤讀 IO。

    場景:寫 512 個字節(jié)數(shù)據(jù)是怎么做的?

    步驟如下:

  • 磁頭擺到指定偏移;

  • 覆蓋寫一個扇區(qū)的數(shù)據(jù)到磁盤;



  • 開銷:只需要一次磁盤寫 IO。

    ?2???扇區(qū)非對齊場景

    場景:讀 1 個字節(jié)數(shù)據(jù)是怎么做的?

    步驟如下:

  • 磁頭擺到這 1 個字節(jié)數(shù)據(jù)所在扇區(qū)位置,對齊到扇區(qū)開始的偏移;

  • 讀取 1 個完整扇區(qū)( 512 字節(jié))的數(shù)據(jù)到內存;

  • 從這 512 字節(jié)的內存中,copy 出用戶要用的 1 個字節(jié),給到用戶;



  • 開銷:讀放大。如果是讀 512 字節(jié)的數(shù)據(jù),但是偏移不對齊,那么可能導致 2 次 IO。

    場景:讀 512 個字節(jié),但是偏移不對齊?

    步驟如下:

  • 磁頭擺到這 512 個字節(jié)數(shù)據(jù)所在 2 個扇區(qū)位置,對齊到扇區(qū)開始的偏移;

  • 讀取 2 個完整扇區(qū)(1024 Bytes)的數(shù)據(jù)到內存;

  • 從這 1024 字節(jié)的內存中,copy 出用戶要用的 512 個字節(jié),給到用戶;



  • 開銷:讀放大。雖然讀的是 1 個扇區(qū)的數(shù)據(jù),但是偏移卻沒對齊,所以必須要讀 2 個扇區(qū),也放大了一倍的流量。

    場景:寫 1 個字節(jié)數(shù)據(jù)是怎么做的?

    寫是比較復雜的,用戶現(xiàn)在手握 1 個字節(jié)的數(shù)據(jù),想要寫到磁盤,但是磁盤的 IO 單元是扇區(qū),所以本質上是讀改寫的方式。步驟如下:

  • 先要把這要改動的 1 字節(jié)所在的扇區(qū)完整的讀到內存;

  • 磁頭擺動到扇區(qū)偏移;

  • 讀一個扇區(qū),讀到內存;

  • 然后在內存中,把這 1 個字節(jié)對應的位置的數(shù)據(jù)修改;

  • 然后重新寫回扇區(qū);

  • 磁盤尋道道扇區(qū)偏移;

  • 覆蓋寫著一個扇區(qū);



  • 開銷:一次磁盤讀 IO,內存合并,最后再一次磁盤寫 IO。明明是寫,卻必須要先讀,IO 即放大了流量,又放大了次數(shù)

    所以你看出來了嗎,非對齊的 IO 多了很多步驟。存在 IO 流量和次數(shù)的放大。這樣會極度拖累性能。

    本來只需要一次 IO 就能完成的操作,放大了一次,那么性能就至少下降一倍。就這么簡單。

    場景:寫 1 個扇區(qū)的數(shù)據(jù),但是偏移不對齊會怎么樣?

    操作步驟

  • 讀 2 個扇區(qū)的數(shù)據(jù)(1024 Bytes)上來;

  • 合并內存中的數(shù)據(jù);

  • 把這 2 個新的扇區(qū)數(shù)據(jù),寫到磁盤;



  • 開銷:所以,我們看到由于不對齊,讀的時候導致多讀了一個扇區(qū),寫的時候導致多寫了 1 個扇區(qū)。性能自然是極差的。

    經(jīng)常被忽略的事

    ?1???IO 的代價比你預期的要大

    機械盤來說,隨機 iops 就是幾百的樣子,帶寬也就幾百兆。一次尋道都是 10ms 級別的。所以磁盤讀寫數(shù)據(jù)的代價遠比你想象中的大。

    這個有多慢?cpu 執(zhí)行指令都是納秒和微秒級別的,一次 IO 性能和 cpu 或者內存的操作相差十萬百千里。所以,但凡你能省 1 次 IO 都是非常大的性能提升。

    而對于 SSD 來說,如果你 IO 不對齊,很有可能峰值能跑 5 萬 iops 的盤只能跑 2 萬甚至更低。大家一定要有個意識:IO 能節(jié)省就節(jié)省,多一次 IO 性能可能慢 1 倍。

    ?2???為什么我編程的時候從來不需要注意對齊?

    這個時候你可能反問了,我讀寫文件從沒考慮過對齊的問題呀?

    是的,你是沒考慮過,那是因為有一個苦逼幫你把這個活干了,誰呢?

    文件系統(tǒng)。這個世界并不簡單,只是有人替你負重前行。

    絕大部分的程序員都是基于文件系統(tǒng)之上操作磁盤。文件系統(tǒng)則會使用 buffer cache 自動幫用戶對齊 IO ,然后再下發(fā)磁盤。一旦你想要深入優(yōu)化 IO 的性能,IO 對齊一定是第一道要考量的坎。

    還有一點要特別注意,一個特別重要的環(huán)節(jié):文件系統(tǒng)格式化化的時候。

    格式化的時候,一定要注意對齊。 格式化文件系統(tǒng)的時候,一定要注意對齊的偏移,不要故意搞成非對齊的偏移,不然一旦文件系統(tǒng)格式化的時候都不對齊,后面誰也救不了,除非你重新格式化文件系統(tǒng)。

    舉個例子,本來文件系統(tǒng)從偏移磁盤 0 這個位置格式化,你偏不,你偏要從 3 字節(jié)偏移的位置開始格式化。那后面的所有的貌似對齊的 IO 偏移都將是不對齊的,性能也自然是下降的。

    總結

  • IO 對齊是做存儲必須要考量的一個因素;

  • IO 對齊的兩個核心是:偏移和長度;

  • 非 IO 對齊的請求會導致內部 IO 流量和次數(shù)的放到,從而性能下降(SSD 則會因為放到而導致擦寫次數(shù)過多,更會影響壽命);

  • 程序員一般很少要主動對齊,因為文件系統(tǒng)幫你 hold 住了一層。但是如果程序員自己不注意,還是會踩坑。比如明明是 SSD 盤,你偏要每次發(fā)送 512 字節(jié)的 IO 請求,那性能肯定慘不忍睹;

  • 對齊的 IO 簡簡單單,不對齊的 IO 千奇百怪。

  • 更多精彩推薦 ?5G、射頻、奧特曼,這仨有聯(lián)系嗎??再見 Nacos,我要玩 Service Mesh 了!?急!CPU 被挖礦,該怎么找進程??立即生效!帕特·基辛格卸任 VMware 所有職務?云原生除了K8S、微服務,還有...?點分享點收藏點點贊點在看

    總結

    以上是生活随笔為你收集整理的存储基础:磁盘 IO 为什么总叫你对齐?的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国产av人人夜夜澡人人爽麻豆 | 五月婷婷激情在线 | 九色91蝌蚪 | 免费看污黄网站在线观看 | 日韩精品一区二区视频 | 精品免费av | 色香蕉在线 | 日韩经典三级 | 色黄网站在线观看 | 国产精品久久久不卡 | 久久激情影院 | 欧美在线一区二区视频 | 一本色道综合久久欧美日韩精品 | 免费的av| 在线观看二区 | 国产69久久精品成人看 | 国产一区二区网站 | 日本熟伦人妇xxxx | 欧美一区三区二区在线观看 | 男女爽爽爽 | 蜜桃成人无码区免费视频网站 | a视频网站 | 最新亚洲精品 | 狠狠爱夜夜 | 综合激情av| 在线91av| 国产精品免费大片 | 久久97超碰| 超碰97观看 | 极品女神无套呻吟啪啪 | 天天5g天天爽免费观看 | 成人精品网址 | 性生交大全免费看 | 国产卡一卡二在线 | 影音先锋在线看片资源 | 亚洲色图欧美另类 | 顶级嫩模啪啪呻吟不断好爽 | 一本久久综合亚洲鲁鲁五月天 | 日韩午夜伦 | 色视频一区 | 一级成人免费视频 | 亚洲精品第三页 | 三级av| 久热久操| 91精品国产综合久久福利 | 天天综合永久 | 美女网站黄页 | 在线不卡日韩 | 午夜精品av | 色香蕉网站 | 久久精品无码一区 | 少妇高潮一区二区三区99欧美 | 国产你懂得| www.啪啪.com| 国产少妇一区二区 | 久久密桃| 青青草手机视频 | 国产精品视频网站 | 免费观看av网址 | 国产成人免费看一级大黄 | 成年男女免费视频网站 | 国产三级视频 | 奇米影视网 | av在线资源网站 | 我们好看的2018视频在线观看 | 日本一区二区久久 | 国产一级精品毛片 | 黑人精品xxx一区一二区 | 日韩中文字幕视频在线 | 国产精品亚洲AV色欲三区不卡 | www.久久伊人| 经典一区二区三区 | 加勒比综合网 | 午夜xx| 91在线日韩| xxx麻豆| 麻豆精品一区 | mm1313亚洲精品 | 牛牛精品一区 | 久久精品网| 国产区一区二 | 91美女啪啪| 精品96久久久久久中文字幕无 | 丝袜 亚洲 另类 国产 制服 | 亚洲特级黄色片 | 欧美亚洲色综久久精品国产 | 久91 | www.猫咪av.com | 一区二区三区日韩在线 | 一本色道无码道dvd在线观看 | 97成人资源 | 春意影院福利社 | 伊人av综合 | 意大利性荡欲xxxxxx | 国产精品免费一区二区区 | 国产一区不卡在线观看 | 国产精品探花一区二区在线观看 | 中国毛片网 | 肉丝肉足丝袜一区二区三区 |