IO-Polling的程式碼分析

來源:互聯網
上載者:User

IO-Polling的程式碼分析

在前一篇文章《IO-Polling實現分析與效能評測》中提到了IO-Polling與中斷的原理區別,並通過兩種模式下NVMe SSD的效能測試對兩者進行了對比。這篇文章將深入到IO-Polling的代碼層面,對這一IO處理模式進行一個解讀。

IO-Polling模式已經加入了linux 4.4的核心,並已有多個成員組在測試IO-Polling對快速裝置的效能影響。目前的IO-Polling僅支援direct-IO的sync模式讀寫操作,後期將加入對libaio的IO-Polling的支援,詳細見git log資訊。


IO-Polling的程式碼分析

本文基於linux核心4.4版本,簡單分析支援IO-Polling模式核心塊裝置層,檔案系統以及底層NVMe驅動所修改修改的大致內容。4.4版linux核心的IO-Polling共修改33個檔案,詳細修改列表見:<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20160331/20160331090346290.png" alt="\">

在block/blk-core.c中主要新增blk-poll函數,用以支援polling模式。在blk-poll函數中,如果底層驅動不支援mq或者mq中不支援polling模式,則會返回上層,採用中斷模式。如果底層驅動支援mq的polling模式,則調用底層驅動的poll函數進行IO處理,詳細函數內容見。

在block/blk-mq-sysfs.c以及block/blk-sysfs.c檔案中,增加了sys檔案系統對io-poll參數的支援


在block/blk-mq.c檔案中,修改各個函數增加對poll邏輯的處理。



除以上對通用塊裝置層的修改,各個IO裝置要支援polling模式,還需要對各自的裝置進行部分修改。以NVMe 裝置為例,NVMe 驅動源碼中增加nvme_poll函數,在註冊是掛載到block層,當上層以polling模式訪問NVMe 裝置時,驅動將調用nvme_poll函數,而不再走中斷模式。NVMe 驅動代碼修改大致如下:


而在檔案系統層fs/direct-io.c中,direct-io的有關函數的已修改支援polling,實際測試中polling只有在direct_io中才起作用,buffer_io模式下,IO模式依然採用中斷方式。前一篇文章中僅提供了裸裝置polling模式效能資料,對於檔案系統的polling模式將在後期對此做詳細分析。

結語

上層應用業務雖然大部分是非同步模式的,但對於基於同步IO,並且對延遲非常敏感小部分關鍵業務而言,IO-Polling所帶來的延遲收益也是有巨大協助的。同時,linux核心也在不斷進化過程中,非同步模式Polling也將加入。隨著高速存放裝置的發展,IO-Polling的工作模式對延遲敏感型業務將發揮更大的作用。

本文作者Luna是Memblaze產品工程師,主要的研究方向包括KVM、Virtio等虛擬化技術,最擅長的是PCIe SSD在KVM的虛擬化情境中的最佳化。Luna之前的一篇文章《QEMU-KVM I/O效能最佳化之Virtio-blk-data-plane》詳細分析了Virtio-blk-data-plane技術原理,並通過測試展示了其效能優勢。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.