成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

調整Linux I/O調度器優化系統性能

系統 Linux
Linux I/O 調度器是Linux內核中的一個組成部分,用戶可以通過調整這個調度器來優化系統性能。本文首先介紹Linux I/O 調度器的結構,然后介紹如何根據不同的存儲器來設置Linux I/O 調度器從而達到優化系統性能。

前言

Linux I/O 調度器是Linux內核中的一個組成部分,用戶可以通過調整這個調度器來優化系統性能。本文首先介紹Linux I/O 調度器的結構,然后介紹如何根據不同的存儲器來設置Linux I/O 調度器從而達到優化系統性能。

調整Linux I/O調度器優化系統性能

Linux I/O 系統簡介

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

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

調整Linux I/O調度器優化系統性能

當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 I/O調度器優化系統性能

調整Linux I/O調度器優化系統性能

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 I/O調度器優化系統性能

調整Linux I/O調度器優化系統性能

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效率***。

查看Linux系統的 I/O調度器

查看Linux系統的I/O調度器一般分成兩個部分,一個是查看Linux系統整體使用的I/O調度器,另一個是查看某磁盤使用的I/O調度器。

查看當前系統支持的I/O調度器,使用如下命令:

清單 1. 查看當前系統支持的I/O調度器

 

  1. # dmesg | grep -i scheduler 
  2. [    1.508820] io scheduler noop registered 
  3. [    1.508827] io scheduler deadline registered 
  4. [    1.508850] io scheduler cfq registered (default

清單1的代碼顯示cfq是目前的I/O調度器。

查看某塊硬盤的IO調度算法I/O調度器,使用如下命令:

清單2. 查看一個硬盤使用的I/O調度器

 

  1. # cat /sys/block/sda/queue/scheduler 
  2. noop deadline [cfq] 

清單2顯示當前使用的調度器是cfq,就是括號括起來的那一個。

修改Linux系統的 I/O調度器

修改Linux系統的 I/O調度器有三種方法,分別是使用shell命令、使用grubby命令或者修改grub配置文件。下面依次介紹:

使用shell命令

Linux下更改的I/O調度器很簡單。不需要更新內核,可以使用shell命令修改:

清單3. 查使用shell命令

  1. #echo noop > /sys/block/sdb/queue/scheduler 

清單3的命令把noop設置為一個磁盤的I/O調度器,你可以隨時更改而無需重啟計算機。

***修改默認的I/O調度器

使用shell命令修改I/O調度器,只是臨時修改,系統重啟后,修改的調度器就會失效,要想修改默認的調度器,有兩種方法使用grubby命令或者直接編輯grub配置文件。

使用grubby命令

例如需要把I/O調度器從cfq調整成 DeadLine ,命令如下:

清單4.使用grubby命令

  1. # grubby --grub --update-kernel=ALL --args="elevator=deadline" 

清單4的命令,通過設置內核加載參數, 這樣當機器重啟的時候,系統自動把所有設備的 I/O調度器變成 DeadLine 。

使用編輯器修改配置文件

也可以直接編輯grub的配置文件 ,通過修改grub配置文件,系統自動把所有設備的 I/O調度器變成cfq。操作過程如下:

清單5 使用vi編輯器修改grub配置文件

 

  1. #vi cat /etc/default/grub 
  2. #修改第五行,在行尾添加# 
  3. elevator= cfq  
  4. 然后保存文件,重新編譯配置文件, 
  5. #grub2-mkconfig -o /boot/grub2/grub.cfg 

重新啟動計算機系統即可。

總結

Linux I/O調度器是 Linux 內核中的一個組成部分,用戶可以通過根據不同的存儲器來設置 Linux I/O 調度器從而達到優化系統性能。 一般來說 NOOP 調度器最適合于固態硬盤,DeadLine 調度器適用于寫入較多的文件服務器,比如Web服務器,數據庫應用等,而CFQ 調度器適合于桌面多任務及媒體應用。

責任編輯:未麗燕 來源: IBM developerWorks中國
相關推薦

2019-12-02 09:45:45

Linux IO系統

2017-02-09 09:00:14

Linux IO調度器

2010-04-23 11:44:34

Aix系統

2017-03-25 21:33:33

Linux調度器

2009-09-29 10:39:04

Linuxlinux系統性能檢測

2010-04-09 13:26:44

2019-02-25 08:40:28

Linux磁盤IO

2022-04-23 16:30:22

Linux磁盤性能

2011-05-25 13:55:02

Oracle

2022-07-26 10:28:00

Linux監控命令

2011-01-05 13:48:55

Linux提高性能

2013-03-20 17:18:07

Linux系統性能調優

2021-08-10 08:44:13

系統性能優化

2009-10-10 10:10:29

服務器IO

2014-07-28 16:47:41

linux性能

2010-04-25 23:39:42

2015-12-17 14:32:46

NmonLinux性能

2013-03-12 17:33:17

Linux系統性能調優

2017-08-11 19:13:01

LinuxNmon系統監控工具

2019-01-04 13:30:58

系統 優化 數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看av网站 | 欧美日韩在线一区二区三区 | 国产精品日韩欧美一区二区三区 | 国产午夜久久久 | 91在线看网站 | 亚洲国产成人精品女人 | 色综合九九 | 热99| 偷拍亚洲色图 | 欧美三级三级三级爽爽爽 | 国产成人精品网站 | 中文字幕精品一区二区三区精品 | 老外黄色一级片 | 色综合久久久 | 久久精点视频 | 国产成人精品久久二区二区91 | 99精品国产一区二区三区 | 中国一级特黄真人毛片 | a免费视频 | 精品一区二区av | 欧美成人不卡 | 99久久精品国产一区二区三区 | 美国黄色一级片 | 精品欧美乱码久久久久久 | 久草福利 | 国产中文字幕在线 | 91视频在线看 | 一区二区三区四区免费在线观看 | 古典武侠第一页久久777 | 成年人网站在线观看视频 | 91人人澡人人爽 | 精品一区二区三区在线观看国产 | 国产在线观看 | 欧美精品在欧美一区二区 | 毛片免费观看 | 久久久网| 成人在线视频网站 | 亚洲精品观看 | 国产精品视频网 | 成人视屏在线观看 | 伊人伊人 |