天天看點

關于IO的一些概念

以下内容來自《大話存儲》

IO可以分為讀/寫IO、大/小塊IO、連續/随機IO、順序/并發IO、穩定/突發IO、持續/間斷IO和虛實IO

【連續/随機IO】連續和随機是指本次IO給出的初始扇區和上一次IO的結束扇區是不是完全連續的或者相隔不多。如果是,則本次IO為連續IO;如果相差太大則為随機IO。

【順序/并發IO】宏觀上的概念是指磁盤控制器同時對一個RAID系統中的多塊磁盤同時發送IO指令,這裡的同時是指向一塊磁盤發送一條指令後不必等待它回應,接着向另一塊磁盤發送IO指令,并且最底層的IO資料包含了檔案系統下發的多個IO的資料,則為并發IO

如果這些直接發向磁盤的IO隻包含了檔案系統下發的一個IO的資料,則此時為順序IO,則控制器緩存中的檔案系統下發的IO隊列,隻能一個一個來。

【穩定/突發IO】某儲存設備或某應用程式再一段時間被接收或者發送的IOPS以及Throughput(吞吐量)保持相對穩定和恒定,則為穩定IO;如果機關時間的IOPS或者Throughput突然猛增,則為突發IO

【實/虛IO】某IO請求中包含對應實際資料位址的,比如磁盤LBA位址,或者檔案偏移量,請求讀或者寫實際檔案獲證磁盤扇區資料的,成為實IO;而應用程式針對檔案中繼資料操作的(再檔案系統層以上沒有檔案主體資料操作),或者針對磁盤發送的非實體資料IO請求,比如Report LUN、SCSI Sense Request等控制性IO,成為虛IO

檔案系統的IO包括同步IO、異步IO、阻塞/非阻塞IO和Direct IO

【同步IO】程式的某一個程序或線程,如果某時刻調用了同步IO接口,則IO請求發出後,這個程序或線程必須等待IO路徑上的下位程式傳回信号,不繼續執行後面的代碼,被作業系統挂起,作業系統繼續執行其他的程序或者線程

【異步IO】作業系統會繼續執行本線程或程序中後續的代碼,直到時間片到時或者因其他原因被挂起。

【Direct IO】有些應用程式,eg.資料庫程式,有自己的緩存,IO再發出之前已經經過自己的緩存算法優化過了,如果請求IO到達檔案系統之後,又被緩存起來進行額外的優化,就是多此一舉了。是以檔案系統提供了另外一種接口,即Direct IO接口,其IO請求、資料請求以及回送的資料都不被檔案系統緩存,而是直接進入應用程式的緩存。

IO的性能名額

【IOPS】每秒能進行多少次IO

【傳輸帶寬】磁盤或裝置再傳輸資料的時候資料流的速度

具有高帶寬規格的硬碟在傳輸大塊連續資料時具有優勢

具有高IOPS的硬碟在傳輸小塊不連續的資料時具有優勢

io

繼續閱讀