在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux IO系統簡介和調度器的工作流程詳細概述

C語言專家集中營 ? 來源:未知 ? 作者:易水寒 ? 2018-05-27 10:41 ? 次閱讀

Linux I/O 系統簡介

Linux I/O調度器(Linux I/O Scheduler)是LinuxI/O體系的一個組件,它介于通用塊層和塊設備驅動程序之間。如圖 1 所示。

圖1 Linux I/O調度器介于通用塊層和塊設備驅動程序之間

Linux IO系統簡介和調度器的工作流程詳細概述

當Linux內核組件要讀寫一些數據時,并不是請求一發出,內核便立即執行該請求,而是將其推遲執行。當傳輸一個新數據塊時,內核需要檢查它能否通過。Linux IO調度程序是介于通用塊層和塊設備驅動程序之間,所以它接收來自通用塊層的請求,試圖合并請求,并找到最合適的請求下發到塊設備驅動程序中。之后塊設備驅動程序會調用一個函數來響應這個請求。

Linux整體I/O體系可以分為七層,它們分別是:

1. VFS虛擬文件系統:內核要跟多種文件系統打交道,內核抽象了這VFS,專門用來適配各種文件系統,并對外提供統一操作接口

2. 磁盤緩存:磁盤緩存是一種將磁盤上的一些數據保留著RAM中的軟件機制,這使得對這部分數據的訪問可以得到更快的響應。磁盤緩存在Linux中有三種類型:Dentry cache ,Page cache , Buffer cache。

3. 映射層:內核從塊設備上讀取數據,這樣內核就必須確定數據在物理設備上的位置,這由映射層(Mapping Layer)來完成。

4. 通用塊層:由于絕大多數情況的I/O操作是跟塊設備打交道,所以Linux在此提供了一個類似vfs層的塊設備操作抽象層。下層對接各種不同屬性的塊設備,對上提供統一的Block IO請求標準。

5. I/O調度層:大多數的塊設備都是磁盤設備,所以有必要根據這類設備的特點以及應用特點來設置一些不同的調度器。

6. 塊設備驅動:塊設備驅動對外提供高級的設備操作接口。

7. 物理硬盤:這層就是具體的物理設備。

5種類型的Linux I/O調度器

Linux 從2.4內核開始支持I/O調度器,到目前為止有5種類型:Linux 2.4內核的 Linus Elevator、Linux 2.6內核的 Deadline、 Anticipatory、 CFQ、 Noop,其中Anticipatory從Linux 2.6.33版本后被刪除了。目前主流的Linux發行版本使用Deadline、 CFQ、 Noop三種I/O調度器。下面依次簡單介紹:

1 Linus Elevator

在2.4 內核中它是第一種I/O調度器。它的主要作用是為每個設備維護一個查詢請求,當內核收到一個新請求時,如果能合并就合并。如果不能合并,就會嘗試排序。如果既不能合并,也沒有合適的位置插入,就放到請求隊列的最后。

2 Anticipatory

Anticipatory的中文含義是"預料的,預想的",顧名思義有個I/O發生的時候,如果又有進程請求I/O操作,則將產生一個默認的6毫秒猜測時間,猜測下一個進程請求I/O是要干什么的。這個I/O調度器對讀操作優化服務時間,在提供一個I/O的時候進行短時間等待,使進程能夠提交到另外的I/O。Anticipatory算法從Linux 2.6.33版本后被刪除了,因為使用CFQ通過配置也能達到Anticipatory的效果。

3 DeadLine

Deadline翻譯成中文是截止時間調度器,是對Linus Elevator的一種改進,它避免有些請求太長時間不能被處理。另外可以區分對待讀操作和寫操作。DEADLINE額外分別為讀I/O和寫I/O提供了FIFO隊列。Deadline的工作流程如圖 2 所示。

圖2 Deadline的工作流程

Linux IO系統簡介和調度器的工作流程詳細概述

4 CFQ

CFQ全稱Completely Fair Scheduler ,中文名稱完全公平調度器,它是現在許多 Linux 發行版的默認調度器,CFQ是內核默認選擇的I/O調度器。它將由進程提交的同步請求放到多個進程隊列中,然后為每個隊列分配時間片以訪問磁盤。對于通用的服務器是最好的選擇,CFQ均勻地分布對I/O帶寬的訪問。CFQ為每個進程和線程,單獨創建一個隊列來管理該進程所產生的請求,以此來保證每個進程都能被很好的分配到I/O帶寬,I/O調度器每次執行一個進程的4次請求。該算法的特點是按照I/O請求的地址進行排序,而不是按照先來后到的順序來進行響應。簡單來說就是給所有同步進程分配時間片,然后才排隊訪問磁盤,CFQ的工作流程如圖 3 所示 。

圖3 CFQ的工作流程

Linux IO系統簡介和調度器的工作流程詳細概述

5 NOOP

NOOP全稱No Operation,中文名稱電梯式調度器,該算法實現了最簡單的FIFO隊列,所有I/O請求大致按照先來后到的順序進行操作。NOOP實現了一個簡單的FIFO隊列,它像電梯的工作主法一樣對I/O請求進行組織。它是基于先入先出(FIFO)隊列概念的 Linux 內核里最簡單的I/O 調度器。此調度程序最適合于固態硬盤。NOOP的工作流程如圖4 所示。

圖4 NOOP的工作流程

I/O調度器的選擇

目前主流Linux發行版本使用三種I/O調度器:DeadLine、CFQ、NOOP,通常來說Deadline適用于大多數環境,特別是寫入較多的文件服務器,從原理上看,DeadLine是一種以提高機械硬盤吞吐量為思考出發點的調度算法,盡量保證在有I/O請求達到最終期限的時候進行調度,非常適合業務比較單一并且I/O壓力比較重的業務,比如Web服務器,數據庫應用等。CFQ 為所有進程分配等量的帶寬,適用于有大量進程的多用戶系統,CFQ是一種比較通用的調度算法,它是一種以進程為出發點考慮的調度算法,保證大家盡量公平,為所有進程分配等量的帶寬,適合于桌面多任務及多媒體應用。NOOP 對于閃存設備和嵌入式系統是最好的選擇。對于固態硬盤來說使用NOOP是最好的,DeadLine次之,而CFQ效率最低。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • IO
    IO
    +關注

    關注

    0

    文章

    488

    瀏覽量

    40305
  • Linux系統
    +關注

    關注

    4

    文章

    604

    瀏覽量

    28391
  • 調度器
    +關注

    關注

    0

    文章

    98

    瀏覽量

    5471

原文標題:調整 Linux I/O 調度器優化系統性能

文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    深入探討Linux的進程調度

    ,以及其運行的順序。這篇文章將詳細探討Linux進程調度工作原理、主要算法、調度策略以及其在
    的頭像 發表于 08-13 13:36 ?1222次閱讀
    深入探討<b class='flag-5'>Linux</b>的進程<b class='flag-5'>調度</b><b class='flag-5'>器</b>

    AndroidWifi工作流程

    AndroidWifi工作流程
    發表于 11-02 10:52

    Linux系統調度簡介

    系統資源的使用,提高系統使用效率。  Linux內核中實現了Scheduler Classes,來實現多個調度類(Scheduler class)的協同
    發表于 01-18 14:12

    AndroidWifi工作流程

    AndroidWifi工作流程
    發表于 09-25 11:17

    AndroidWifi工作流程

    AndroidWifi工作流程
    發表于 11-08 09:07

    數字式雷達信號處理系統工作原理是什么?基本工作流程有哪些?

    數字式雷達信號處理系統組成及工作原理是什么?數字式雷達信號處理的基本工作流程有哪些?
    發表于 04-21 06:36

    保存FLASH工作流程寫數據流程

    STM32F407HAL用FLASH寫掉點保存FLASH工作流程寫數據流程:Flash解鎖——擦除扇區——寫數據到指定空間——上鎖寫保護;讀數據流程:從指定地址讀出指定長度數據。源文件flash.c
    發表于 08-23 07:02

    Linux 2.6進程調度

    分析了與Linux 2.6 進程調度密切相關的一些重要數據結構,詳細描述了進程調度的時機、調度的策略和調
    發表于 06-13 10:13 ?11次下載

    SIwave 3.0 工作流程簡介

    SIwave 3.0 工作流程簡介  一、PCB 文件調入 SIwave 3.0(兩種方式) :     Allegro版本為 15.2。   1.運行 allegro 的 AnsoftLaunch SIwave 菜單,如
    發表于 04-05 06:43 ?47次下載

    測試工程師工作流程有哪些

    測試工程師的工作流程,與公司的整體工作流程,項目的測試要求等因素相關。本文主要討論測試工程師的一般工作流程
    的頭像 發表于 10-03 16:56 ?8032次閱讀

    英創信息技術Linux系統調度簡介

    系統資源的使用,提高系統使用效率。 Linux內核中實現了Scheduler Classes,來實現多個調度類(Scheduler class)的協同
    的頭像 發表于 02-05 10:31 ?1434次閱讀
    英創信息技術<b class='flag-5'>Linux</b><b class='flag-5'>系統</b><b class='flag-5'>調度</b><b class='flag-5'>簡介</b>

    工作流程圖怎么用?有哪些繪制工作流程圖的軟件

    工作流程圖是清晰地展示工作中各個環節的流程圖圖示,主要用于工作活動和效率的管理。工作流程圖這種圖示方法具有直觀描述性、簡潔性、可操作性和指導
    的頭像 發表于 07-28 14:22 ?3861次閱讀

    機器視覺系統的組成及工作流程

    機器視覺系統的組成及工作流程介紹。
    發表于 04-19 15:24 ?16次下載

    一套完整的機器視覺系統工作流程有哪些?

    機器視覺系統工作流程
    的頭像 發表于 06-06 15:17 ?3816次閱讀
    一套完整的機器視覺<b class='flag-5'>系統</b>的<b class='flag-5'>工作流程</b>有哪些?

    NX CAD軟件:數字化工作流程解決方案(CAD工作流程)

    NXCAD——數字化工作流程解決方案(CAD工作流程)使用西門子領先的產品設計軟件NXCAD加速執行基于工作流程的解決方案。我們在了解行業需求方面累積了多年的經驗,并據此針對各個行業的具體需求提供
    的頭像 發表于 02-06 18:15 ?360次閱讀
    NX CAD軟件:數字化<b class='flag-5'>工作流程</b>解決方案(CAD<b class='flag-5'>工作流程</b>)
    主站蜘蛛池模板: 国产农村妇女毛片精品久久久 | 狠狠色丁香婷婷久久 | 窝窝午夜看片 | 欧美成人午夜影院 | 经典三级一区二区三区视频 | 日本乱妇| 日日噜噜夜夜狠狠久久丁香 | 久久福利网 | 东京加勒比 | 一级毛片不收费 | 狠狠狠色丁香婷婷综合激情 | 资源在线www天堂 | 欧美性xxxxbbbb| 久久久久女人精品毛片 | 日韩一卡2卡三卡4卡无卡网站 | 俺去啦最新网址 | 深爱综合网 | 亚洲视频三区 | 五月激情丁香 | 亚洲欧美日韩另类精品一区二区三区 | 亚洲精品视频区 | 一级片免费观看视频 | 97天天摸天天碰天天爽 | 黄色的视频在线免费观看 | 欧美黄色高清 | 天天做人人爱夜夜爽2020毛片 | 欧美一级特黄aaaaaa在线看片 | 色女孩网站 | 黄色美女网站免费 | 欧美综合国产精品日韩一 | 欧美美女一区二区三区 | 天天干天天日天天射天天操毛片 | 欧美午夜片 | 啪啪中文字幕 | 亚洲第七页 | 国产精品久久精品福利网站 | 免费视频在线播放 | 四虎在线观看免费视频 | 夜夜春宵翁熄性放纵古代 | 国产理论 | 日日操狠狠操 |