
140
|
第四章
此外,目錄
/sys/block/[device]/queue/iosched
中所包含的檔案,讓管理者得以取得以及設
定與 I/O 排班器有關的可調整值。至於要操作哪些選項,取決於當前所使用的 I/O 排班
器。欲變更任何設定值,必須具備 root 的特權。
一個好的程式設計者,並不需要瞭解底層的 I/O 子系統。儘管如此,對這個子系統有所
認識,將有利於程式的優化。
優化 I/O 效能
因為相對於系統中其他元件而言,磁碟 I/O 的速度是如此緩慢,然而 I/O 卻是現代電腦
技術一個重要的面向,所以 I/O 效能的最大化至關重要。
儘量減少 I/O 操作(將許多規模較小的操作,凝聚成少數規模較大的操作)、進行對齊
區塊大小的 I/O 或是採取用戶緩衝機制(見第 3 章)是系統程式設計者之工具箱中重要
的工具。同樣的,進階 I/O 技術,例如向量式 I/O、特定位置的 I/O(見第 2 章)、非同
步 I/O,也是進行系統程式設計時,必須加以考量的重要模式。
然而,I/O 密集的關鍵應用程式,則可以利用額外的技巧來最大化效能。儘管 Linux 核
心,正如先前所提到的,會利用進階的 I/O 排班器來儘量減少可怕的磁碟查找操作,不
過用戶空間應用程式也可以朝向相同的目標,使用類似的方式,以進一步改善效能。
用戶空間中的 I/O 排班
I/O 密集應用程式會發出大量的 I/O 要求,而且需要花時間排序及合併其未決之 I/O 要
求,進行跟 Linux I/O 排班器一樣的工作。
8
如果你知道 I/O ...