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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

干货:如何正确描述存储IO类型?

發布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 干货:如何正确描述存储IO类型? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“朱小廝的博客”,選擇“設為星標”

后臺回復"書",獲取

后臺回復“k8s”,可領取k8s資料

? ? ? 存儲系統作為數據的載體,為前端的服務器和應用程序提供讀寫服務。存儲陣列某種意義上來說,是對應用服務器提供數據服務的后端“服務器”。應用服務器對存儲系統發送數據的“讀”和“寫”的請求。然而,不同的應用程序對存儲的數據訪問類型有所不同。

本文描述典型的不同應用程序的存儲IO類型。幫助讀者了解不同應用程序存儲IO類型的同時,提供的數據也可以為存儲模擬和壓力測試的數據參考。

?

IO類型描述:

? ? ? 描述不同應用的存儲IO類型之前,先要描述存儲中的定義IO的幾個術語:

  • IO大小(IO Size):IO Size是應用程序發起,經過操作系統的磁盤子系統,向存儲系統發送的讀寫請求的單位大小。不同的應用程序所發送的IO大小都不相同,例如對于數據庫應用,它在數據讀寫的時候IO Size是8KB,而在事務日志的寫入的時候可能是512Bytes-64KB不等。所以,通常所說的IO Size都是一個平均的概念。即某一款應用在一段時間內的平均IO大小。

  • 讀寫比例(Read/Write):讀寫比例比較容易理解,就是應用程序讀數據和寫數據分布。這個在規劃存儲的時候也至關重要,因為存儲系統中的保護級別(RAID)的不同,對寫有損失。例如RAID-5單次寫入需要分別對數據位和校驗位進行2次讀和2次寫。所以說,如果用RAID-5作為寫入比例較高的應用,顯然會對性能有很大影響。

  • 順序與隨機讀寫比例(Random/Sequential):順序和隨機讀寫取決與應用的獲取數據的方式。通常情況下,如果數據的讀取和寫入是在連續的磁盤空間上,可以認為是順序讀寫。如果應用讀取的數據分布在不同磁盤空間,且無固定的順序,則視為隨機讀寫。由于傳統的機械磁盤(閃存盤不再討論之列)讀寫數據需要盤面的轉動和磁頭的移動,這使得隨機讀寫的效率在物理磁盤層面要遠小于順序讀寫。通常存儲系統都都會利用緩存來減少這部分的延遲,減緩因為磁頭的移動而帶來的性能損失。隨機讀寫的代表的是OLTP的數據庫文件,順序讀寫的代表則是數據的事務日志。

  • ?

    應用程序存儲IO類型:

    ???? 下面的表中描述的不同的應用程序對應的IO大小、讀寫比例、隨機和順序比例。表中的比例為一個通用的參考值,比例接近真實各種應用的IO類型。當然不能包含全部的應用類型因為根據不同生產環境,數值也會有很大的差異。這里的數據提供一個參考,可以用于使用壓力測試工具,例如IOMeter,模擬不同應用的IO負載。

    ? ? ??

    IOmeter是一款用于單系統和集群系統的I/O子系統度量(Measurement)和特征化(Characterization)工具,它是一個負載生成器(Workload Generator),也是一個度量工具(Measurement tool),可用于模擬任何程序或benchmark的磁盤或網絡I/O操作,在單個或多個(聯網)系統上生成并度量負載。

    ? ? ? IOmeter由兩個程序組成,Iometer和Dynamo。Iomter是控制程序/GUI,它告訴Dynamo需要做什么,收集數據結果并總結到一個輸出文件。一次只應該運行一個Iometer,通常運行在服務器上。

    ? ? ? Dynamo是一個負載生成器,它沒有GUI,在Iometer的命令下執行I/O操作并記錄性能信息,然后返回數據給Iometer。一次可以運行多個Dynamo,通常是一個副本運行在服務器上,另一個副本運行在每一臺客戶端上。Dynamo是多線程的,每一個副本可以模擬多個客戶端程序的工作(Workload),每一個正在運行的Dynamo副本被稱為是一個Manager,Dynamo中的每一個線程被稱為worker。

    ? ? ? 不同應用通常具有不同的I/O類型,了解應用的I/O類型是為其設計解決方案、排錯性能問題的首要工作。那I/O類型通常包括哪些需要考慮的因素?我們今天就來談一談I/O類型的幾個重要方面。

    ?

    讀?vs.?寫

    ???? 應用程序的讀寫請求必須量化,了解他們之間的比列,因為讀寫對存儲系統的資源消耗是不通的。了解讀寫比率直接關系到如何應用緩存、RAID類型等子系統的最佳實踐。寫通常需要比讀更多的資源,SSD的寫操作相對讀更是慢得多。

    ?

    順序?vs.?隨機

    ???? 傳統存儲系統通常都是機械硬盤,因此整個系統設計為盡可能順序化I/O,減少由于磁盤尋道所帶來的延遲。所以,順序I/O相對隨機I/O的性能會好很多。隨機小I/O消耗比順序大I/O更多的處理資源。隨機小I/O更在意系統處理I/O的數量,即IOPS;而順序大I/O則更在意帶寬,即MB/s。因此,如果系統承載了多種不同的應用,必須了解它們各自的需求,是對IOPS有要求,還是對帶寬有要求。這往往需要在兩種之間進行折衷考慮。閃盤是一個例外,它沒有機械尋道操作,因此對隨機小I/O的處理是非常迅速的,由此是讀操作。

    ?

    大I/O vs.?小I/O

    ???? 我們通常把<=16KB的I/O認為是小I/O,而>=32KB的I/O認為是大I/O。就單個I/O來講,大I/O從微觀的角度相比小I/O會需要更多處理資源,不過對于智能存儲系統來說,會盡可能把I/O整理為順序的,以單個操作執行,如此依賴,將多個小I/O整理成單個大I/O處理后,反而會更快。I/O的大小依然取決于應用程序本身,了解I/O的大小,影響到后期對緩存、RAID類型、LUN的一些屬性的調優。

    ?

    位置引用

    ???? 數據的位置分布影響到后期對二級緩存或存儲分層技術的應用,因為這些技術都會根據I/O的位置分布來判斷是否將I/O放置到緩存或快速的層級。位置引用是指那些被頻繁的存儲位置,我們通常認為最新創建的數據以及最近被訪問過的數據,它們周圍的數據也同時被訪問的可能性會比較大。因此,了解應用程序的I/O位置特性,有助于應用正確的性能優化技術。

    ?

    穩定?vs.?爆發

    ? ? ? ?I/O數量在一天中的不同時段會有不同的表現。例如,早高峰時段的I/O數量相比下班后的I/O會多出許多。如果能準確預測和估計應用的I/O在不同時間段的穩定性和爆發性,可以正確分配資源,提高資源利用率。在前期的設計階段,就應該考慮系統是否能夠處理I/O高峰期。

    多線程?vs.?單線程

    ???? 多線程是實現并發操作的一種方式,同時也意味著對存儲系統的資源消耗更多。這種高IOPS的請求方式,在有些情況下會造成磁盤繁忙,進而導致I/O排隊,增加了響應時間。因此,適度的調整線程數量,不僅可以實現并發,而且能在不拖累整個存儲系統的情況下,達到最優的響應時間。

    想知道更多?描下面的二維碼關注我

    后臺回復"技術",加入技術群

    后臺回復“k8s”,可領取k8s資料

    【精彩推薦】

    • 原創|OpenAPI標準規范

    • 中臺不是萬能藥,關于中臺的思考和嘗試

    • ClickHouse到底是什么?為什么如此牛逼!

    • 原來ElasticSearch還可以這么理解

    • 面試官:InnoDB中一棵B+樹可以存放多少行數據?

    • 微服務下如何解耦?對于已經緊耦合下如何重構?

    • 如何構建一套高性能、高可用、低成本的視頻處理系統?

    • 架構之道:分離業務邏輯和技術細節

    • 星巴克不使用兩階段提交

    點個贊+在看,少個 bug?????

    總結

    以上是生活随笔為你收集整理的干货:如何正确描述存储IO类型?的全部內容,希望文章能夠幫你解決所遇到的問題。

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