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

Linux優(yōu)化之IO子系統(tǒng)監(jiān)控與調(diào)優(yōu)

系統(tǒng) Linux
在內(nèi)存調(diào)優(yōu)中,一直在講到為了加速性能,linux內(nèi)核一般情況下都會(huì)嘗試將磁盤上的慢速設(shè)備上的文件緩存至內(nèi)存中,從而達(dá)到加速效果;

Linux優(yōu)化之IO子系統(tǒng)

作為服務(wù)器主機(jī)來講,***的兩個(gè)IO類型 :

1.磁盤IO

2.網(wǎng)絡(luò)IO

這是我們調(diào)整最多的兩個(gè)部分所在

磁盤IO是如何實(shí)現(xiàn)的

在內(nèi)存調(diào)優(yōu)中,一直在講到為了加速性能,linux內(nèi)核一般情況下都會(huì)嘗試將磁盤上的慢速設(shè)備上的文件緩存至內(nèi)存中,從而達(dá)到加速效果;

虛擬內(nèi)存的概念:

讀寫都在內(nèi)存中完成,當(dāng)某一進(jìn)程在cpu運(yùn)行的時(shí)候,進(jìn)程要訪問自己地址空間中的某一內(nèi)存頁,當(dāng)進(jìn)程需要訪問頁面中的數(shù)據(jù),而這個(gè)頁面最終是要對應(yīng)在物理內(nèi)存中的某個(gè)物理頁面,而進(jìn)程只能看到自己的線性地址空間,而這個(gè)地址并不存在,一旦訪問這個(gè)地址,那么會(huì)通過MMU(內(nèi)存管理單元)機(jī)制中的存儲(chǔ)當(dāng)前進(jìn)程的線性地址到物理地址的映射表

由此通過MMU實(shí)現(xiàn)對應(yīng)的地址查詢于是得到了其映射的地址,最終進(jìn)程雖然訪問的數(shù)據(jù)是來自于映射過的地址,這種訪問訪問我們被稱為虛擬地址或虛擬內(nèi)存

如果由于我們使用交換內(nèi)存或其他方式有可能這個(gè)進(jìn)程所打開的文件長時(shí)間沒有被訪問,這個(gè)文件所對應(yīng)的內(nèi)存已經(jīng)被清出去了,所以使用mmu地址轉(zhuǎn)換后的地址對應(yīng)的數(shù)據(jù)在內(nèi)存中不存在了,這時(shí)候會(huì)產(chǎn)生頁錯(cuò)誤,我們也被稱為缺頁異常

缺頁異常

缺頁異常分為大異常和小異常:

如果數(shù)據(jù)不存在使得不得不在磁盤中載入頁面文件,這時(shí)CPU就會(huì)進(jìn)入內(nèi)核模式,訪問磁盤,每次CPU訪問內(nèi)存就要3個(gè)周期,訪問磁盤需要N個(gè)周期,首先需要定位數(shù)據(jù)的準(zhǔn)確位置,而后定位物理內(nèi)存中開辟數(shù)據(jù)空間,***將數(shù)據(jù)總線貫通,從而將數(shù)據(jù)從磁盤轉(zhuǎn)入到內(nèi)存--blockin

當(dāng)我們找一個(gè)空閑空間,而事實(shí)上當(dāng)進(jìn)程訪問這段數(shù)據(jù)就需要訪問新位置的數(shù)據(jù),所以我們要更新這個(gè)映射表,明確說明所要訪問的邏輯地址所要對應(yīng)的空間的轉(zhuǎn)換的位置,并且讓進(jìn)程重新發(fā)起一次訪問,這時(shí)需要先查找TLB(緩存緩沖器),再次進(jìn)行查表

而將磁盤裝入內(nèi)存的過程就會(huì)發(fā)生IO,如果進(jìn)程修改了數(shù)據(jù),最終數(shù)據(jù)還需要寫到磁盤中去,而寫到磁盤中去,過程使得數(shù)據(jù)比原來的文件更大了

具體是由文件系統(tǒng)模塊根據(jù)進(jìn)程發(fā)起的請求,內(nèi)核指揮文件系統(tǒng)模塊開辟更多的存儲(chǔ)塊而后將數(shù)據(jù)存儲(chǔ),這種過程被稱為 block out

#緩沖器負(fù)責(zé)將之前緩沖過的緩存下來,那么如果N個(gè)條目,而緩沖器只能緩存有限的幾個(gè),那么命中率可能會(huì)很低,如果我們使用大頁面的話,那么命中率可以大大提高。

機(jī)械硬盤的特性

同一方向的操作是合并起來完成的,而后在這個(gè)方向結(jié)束之后則是另外一方向的

對硬盤來講,讀寫是不同類型的操作,讀寫是不能同時(shí)進(jìn)行的

 

磁盤是如何操作的

將一個(gè)或多個(gè)進(jìn)程的讀操作合并到一起讀

將一個(gè)或多個(gè)進(jìn)程的寫操作合并到一起寫

所以讀寫操作是兩類不同的操作而且是同一方向合并的

如果是讀文件,這個(gè)文件一定是來自于磁盤的

如果是寫文件,那么寫入到內(nèi)存中,對于進(jìn)程來講是已經(jīng)完成的,那么用戶對計(jì)算機(jī)性能感知是來自于讀,因?yàn)樽x一定是與IO相交互

1.讀是在同方向合并的

2.寫也是需要合并的,而且兩者是不同方向的操作

因?yàn)樵谕环较蚩梢怨?jié)省很多資源

讀必須優(yōu)先滿足,而寫也不能等太久,因此必須有一種良好的算法讓其盡可能都得到滿足,而又不能讓用戶感到性能下降

因此在IO系統(tǒng)上有個(gè)非常重要的模塊---IO調(diào)度器

IO調(diào)度器

用來實(shí)現(xiàn)合并同一方向的讀寫操作并且將讀寫操作盡可能理想的這種狀況,IO調(diào)度器本身的完成,最終用戶實(shí)現(xiàn)寫的時(shí)候進(jìn)程級(jí)別所看到的數(shù)據(jù)是文件接口,那么文件接口輸出的時(shí)候就意味著將磁盤空間以文件接口的方式輸出,其需要文件系統(tǒng),也就意味著進(jìn)程與磁盤上的數(shù)據(jù)打交道是依賴文件系統(tǒng)的,所以用戶的請求先到文件系統(tǒng),而文件系統(tǒng)通過內(nèi)核輸出是虛擬文件接口(VFS) 通過VFS找到各特定文件系統(tǒng)相關(guān)模塊,當(dāng)然對應(yīng)的文件是哪個(gè)那么則通過vfs轉(zhuǎn)換成什么即可,文件系統(tǒng)將數(shù)據(jù)接下來之后,最終存儲(chǔ)為磁盤塊的方式保存在磁盤上,因此這些文件系統(tǒng)最終還要轉(zhuǎn)換數(shù)據(jù)為磁盤塊,所以接下來還要有塊層

塊層主要是將數(shù)據(jù)轉(zhuǎn)換為磁盤塊格式,而后再由磁盤塊格式轉(zhuǎn)換成調(diào)度以后存儲(chǔ)在磁盤上

如下圖所示:

wKiom1QdhnPy6EQQAAH_P6Mmz0A257.jpg

  • (1)用戶進(jìn)程實(shí)現(xiàn)寫操作 實(shí)現(xiàn)系統(tǒng)調(diào)用
  • (2)用戶的寫操作一定是跟VFS進(jìn)行交互的
  • (3)VFS需要將其換換為特定的文件系統(tǒng)
  • (4)單個(gè)文件在虛擬文件系統(tǒng)存放都會(huì)轉(zhuǎn)換成頁面方式(page cache)
  • (5)寫完之后通過block buffer快緩沖(知所以進(jìn)行緩沖是因?yàn)榇疟P太慢了,所以寫的時(shí)候需要緩沖下來)
  • (6)然后由bio將每個(gè)page cache轉(zhuǎn)換成塊,并且在塊緩沖這個(gè)層次上緩存下來

#p#

這就是緩沖隊(duì)列,而在塊層實(shí)現(xiàn)緩沖之后每個(gè)塊最終都要交給塊層來處理,塊層中最重要的一個(gè)組件就是IO調(diào)度器,IO調(diào)度器接收blockbuffer中所發(fā)送過來的多個(gè)請求塊,這多個(gè)請求塊需要排序的:同方向合并,圖中都是寫操作的

至于如何排序,一定是最靠近寫請求的***先滿足

而IO調(diào)度器主要功能就是將隨機(jī)IO盡可能合并為順序IO 本文來自http://yijiu.blog.51cto.com 轉(zhuǎn)載請說明,翻版可恥

但是我們有說過,盡可能同一方向合并盡可能會(huì)隨機(jī)變?yōu)轫樞颍俏覀冇植坏貌蛔x饑餓也不能寫?zhàn)囸I,所以要交替進(jìn)行的

所以:

(10)由IO調(diào)度器調(diào)度完成之后,提交給Device Driver ,由Device Driver控制磁盤控制器,由控制器將電器信號(hào)轉(zhuǎn)換為磁信號(hào)寫入到磁盤中去

為何隨機(jī)讀寫比順序讀寫要慢:

·隨機(jī)讀寫:

我們可能寫任意一個(gè)磁道的任意一個(gè)扇區(qū),那么硬盤磁頭可能來回晃動(dòng)才能完成一次寫

·順序讀寫:

在一個(gè)方向轉(zhuǎn)動(dòng)即可完成,不用再去移動(dòng)磁臂的

磁頭操作是電磁運(yùn)動(dòng),而磁臂操作是機(jī)械運(yùn)動(dòng),所以任何時(shí)候隨機(jī)讀寫性能都比順序讀寫都要差的很多

調(diào)度算法

IO調(diào)度器事實(shí)上是用程序完成的調(diào)度算法,對linux來講,2.6的內(nèi)核一共有4個(gè)

1、CFQ

完全公平隊(duì)列,比較適合于交互式場景

2、Deadline

***期限,任何一個(gè)讀寫請求,都有自己的滿足期限,當(dāng)期限到來時(shí)之前,必須達(dá)到需求的滿足(一般建議在數(shù)據(jù)庫服務(wù)器上使用此調(diào)度算法)

3、anticpatory

預(yù)期的,任何一個(gè)數(shù)據(jù)讀完之后,有可能與其相鄰的數(shù)據(jù)也可能被讀到,所以它大致所實(shí)現(xiàn)的方法就是,讀完之后先不滿足,則不處理,需等一段時(shí)間后查看是否有相近數(shù)據(jù)訪問過,如果有馬上先滿足,所以這只能在行為預(yù)估的場景下可用

4、Noop

不排隊(duì)不合并,先到先得

#像固態(tài)硬盤,因?yàn)樗皇菣C(jī)械硬盤,它的讀寫就算是隨機(jī)IO那么它的性能跟順序IO差別也不是很大,反而如果想讓調(diào)度器去調(diào)取它的算法,那么調(diào)度器本身運(yùn)行會(huì)占用很高的CPU的時(shí)鐘周期,有可能會(huì)得不償失,所以noop在這種場景下是***的算法

#有些RAID設(shè)備控制器在硬件設(shè)備上自己就有讀寫操作排序的,也就意味著在硬件級(jí)別排好序之后在操作系統(tǒng)級(jí)別會(huì)將其打散重新排序,得不償失,所以RAID設(shè)備有自己的調(diào)度器的話,***也使用noop

一般來講,默認(rèn)是CFQ的

本文來自http://yijiu.blog.51cto.com 轉(zhuǎn)載請說明,翻版可恥

有時(shí)候在不同場景下,他們所***所適用的算法可能不一樣,比如:

如果是web服務(wù)器,這里只是訪問放web上的分區(qū)的頁面數(shù)據(jù)

如果是db數(shù)據(jù)庫,訪問的是db數(shù)據(jù)庫的文件,他們最適用的算法未必會(huì)一樣,因?yàn)樗麄兊脑L問風(fēng)格不同,所以這時(shí)候我們就需要修改他們的調(diào)度器算法

CFQ比較適合于交互式場景,于是在很多時(shí)候會(huì)將服務(wù)器設(shè)置為Deadline,當(dāng)然只是一種假定,具體需要自己測試然后做決定

觀測當(dāng)前磁盤IO活動(dòng)

一般 ethstatus iotio pt-ioprofile sar等查工具看哪些進(jìn)程引起的io比較高等

這里我們使用sar來觀察其狀態(tài)信息 本文 來自http://yijiu.blog.51cto.com 轉(zhuǎn)載 請說明,翻版 可恥

例:

  1. [root@node3 ~]# sar -d 1 5  
  2. Linux2.6.32-431.20.3.el6.x86_64 (node3.test.com) 09/20/2014 _x86_64_(4 CPU)  
  3. 09:16:00 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util  
  4. 09:16:01 PM dev252-0 46.46 0.00 46795.96 1007.13 2.65 580.00 2.26 10.51  
  5. 09:16:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util  
  6. 09:16:02 PM dev252-0 3.00 0.00 144.00 48.00 0.00 1.33 1.00 0.30  
  7. 09:16:02 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util  
  8. 09:16:03 PM dev252-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00  
  9. 09:16:03 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util  
  10. 09:16:04 PM dev252-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00  
  11. 09:16:04 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util  
  12. 09:16:05 PM dev252-0 72.73 0.00 59967.68 824.56 2.61 35.88 1.21 8.79 

用參數(shù)-p可以打印出sda,hdc等磁盤設(shè)備名稱,如果不用參數(shù)-p,設(shè)備節(jié)點(diǎn)則有可能是dev8-0,dev22-0

參數(shù)解釋:

tps:每秒從物理磁盤I/O的次數(shù).多個(gè)邏輯請求會(huì)被合并為一個(gè)I/O磁盤請求,一次傳輸?shù)拇笮∈遣淮_定的

rd_sec/s:每秒讀扇區(qū)的次數(shù).

avgrq-sz:平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū)).

avgqu-sz:磁盤請求隊(duì)列的平均長度.

await:從請求磁盤操作到系統(tǒng)完成處理,每次請求的平均消耗時(shí)間,包括請求隊(duì)列等待時(shí)間,單位是毫秒(1秒=1000毫秒).(一次完成的任務(wù),它的IO完成的平均耗時(shí))

svctm:系統(tǒng)處理每次請求的平均時(shí)間,不包括在請求隊(duì)列中消耗的時(shí)間,

%util:I/O請求占CPU的百分比,比率越大,說明越飽

我們通常經(jīng)驗(yàn)值是:

svctm不超過0.5;

await不超過5;

主要看當(dāng)前設(shè)備

核心要點(diǎn):

1、tps(iops)越高,但%util越低,說明io能力容量越大

2、await、svctm越低越好,說明io響應(yīng)延遲很低,iops能力很高

調(diào)整buffer,提高性能

無非就是調(diào)整隊(duì)列數(shù),以及增加預(yù)讀數(shù),下面我們來手動(dòng)做一下

·增加隊(duì)列長度

#p#

格式:

/sys/block/vda(特定某設(shè)備)/queue/nr_requests

由于我這里跑的是kvm虛機(jī),所以設(shè)備號(hào)默認(rèn)都以vdx開頭

默認(rèn)隊(duì)列為128個(gè)長度

[root@node3 ~]# cat /sys/block/vda/queue/nr_requests

128

這個(gè)值是可以調(diào)大一點(diǎn)的

2.增加預(yù)讀數(shù)

/sys/block/vda(特定某設(shè)備)/queue/read_ahead_kb

表示事先預(yù)讀數(shù)據(jù)的kb數(shù),默認(rèn)也是128

[root@node3 ~]# cat /sys/block/vda/queue/read_ahead_kb

128

這個(gè)值也是可以調(diào)大的,具體多少自行而定

本文 來自http://yijiu.blog.51cto.com 轉(zhuǎn)載 請說明,翻版 可恥

CFQ完全公平隊(duì)列

IO調(diào)度是在各進(jìn)程之間平均分配的,主要是根據(jù)進(jìn)程的IO需求來講IO能力平均分配調(diào)度

所以在交互式環(huán)境中,這種方式是比較實(shí)用的

但是在RHEL6.4上 它又提供了三個(gè)不同的調(diào)度等級(jí):

1.實(shí)時(shí) RT

2.***效果 BE

3.閑置

我們可以使用ionice命令手動(dòng)分配調(diào)度等級(jí),或者使用iopro_set系統(tǒng)調(diào)用編程分配,當(dāng)然涉及到開發(fā)層面了

在實(shí)時(shí)調(diào)度等級(jí)和***效果兩個(gè)級(jí)別都有8個(gè)IO等級(jí),

數(shù)字越小優(yōu)先級(jí)越高,***效果是默認(rèn)調(diào)度等級(jí) 也就是4,不用更改

修改CFQ,以調(diào)節(jié)其性能

涉及參數(shù)文件:/sys/block/vda/queue/iosched/

修改默認(rèn)調(diào)度器算法:

  1. [root@node3 ~]# cd /sys/block/vda/queue/  
  2. [root@node3 queue]# ls  
  3. add_random hw_sector_size max_hw_sectors_kb minimum_io_size physical_block_size scheduler  
  4. discard_granularity iosched max_sectors_kb nomerges read_ahead_kb unpriv_sgio  
  5. discard_max_bytes iostats max_segments nr_requests rotational  
  6. discard_zeroes_data logical_block_size max_segment_size optimal_io_size rq_affinity 

而在其上層目錄里,有一scheduler文件

查看scheduler文件

  1. [root@node3 queue]# cat scheduler   
  2. noop anticipatory deadline [cfq] 

因此更改磁盤IO調(diào)度器則去找這個(gè)目錄下所對應(yīng)的scheduler,注意的是,它只是針對每個(gè)磁盤進(jìn)行調(diào)整的,如果有多塊磁盤的話則需要對應(yīng)每個(gè)磁盤進(jìn)行修改

它沒有辦法使用sysctl進(jìn)行控制,如果想開機(jī)生效,只能寫到rc.local 或init腳本中

一旦更改調(diào)度算法之后,再來查看目錄中的文件

  1. [root@node3 queue]# ls /sys/block/vda/queue/iosched/  
  2. back_seek_max fifo_expire_async group_idle low_latency slice_async slice_idle  
  3. back_seek_penalty fifo_expire_sync group_isolation quantum slice_async_rq slice_sync 

修改算法

  1. [root@node3 queue]# echo deadline > scheduler   
  2. [root@node3 queue]# cat scheduler   
  3. noop anticipatory [deadline] cfq 

再次觀察iosched目錄,并查看其是否有變化

  1. [root@node3 queue]# ls/sys/block/vda/queue/iosched/  
  2. fifo_batch front_merges read_expire write_expire writes_starved 

所以我們更改調(diào)度算法后,每個(gè)調(diào)度算法在此目錄都有很多可調(diào)整參數(shù),每個(gè)參數(shù)都有值,只不過都表現(xiàn)為其文件內(nèi)容而已,而每個(gè)調(diào)度器的值通過修改是可以優(yōu)化調(diào)度器的工作特性的

比如對CFQ來講,有以下幾個(gè)值可以調(diào)整:

back_seek_max

反向?qū)さ揽赡苡胸?fù)面影響,負(fù)載小的時(shí)候可以啟用,否則不要使用反向?qū)さ捞嘀?/p>

back_seek_penal

反向?qū)さ雷鰬土P,如果不得不使用反向?qū)さ赖脑挘敲幢仨殞ζ渥龀鲆欢☉土P,一旦做完懲罰之后,必須要正向?qū)さ栏啻螖?shù)

fifo_expire_async

用來控制異步請求等待時(shí)間長度,默認(rèn)是250毫秒,過期之后無法滿足的異步請求將會(huì)被移動(dòng)到調(diào)度隊(duì)列中,也就意味著要重新調(diào)度。通常這些值不需要調(diào)整

fifo_expire_sync

用于同步請求的,

嚴(yán)格來講寫操作都是在內(nèi)存中完成 過周期之后才會(huì)同步至硬盤中,站在計(jì)算機(jī)角度來說這種操作都被稱為異步,而同步則是為了盡可能保證數(shù)據(jù)會(huì)被***時(shí)間寫到磁盤上來,數(shù)據(jù)不會(huì)在內(nèi)存上逗留,直接寫入磁盤

low_latecy

低延遲,簡單來講,每個(gè)進(jìn)程都有可能發(fā)起讀寫請求,也就意味著最終滿足用戶讀寫請求是按進(jìn)程為單位劃分,在滿足這個(gè)前提下,需要考慮每個(gè)進(jìn)程都需要得到滿足,所以必須關(guān)注每個(gè)進(jìn)程發(fā)起IO請求之后最多等待多長時(shí)間,如果啟動(dòng)此值就意味著每個(gè)進(jìn)程只要發(fā)起讀寫請求都要盡可能快速得到滿足,默認(rèn)就啟用了低延遲

在桌面系統(tǒng)環(huán)境,低延遲是非常有必要的

quantum

CFQ一次可以發(fā)出的IO請求數(shù),一批***可以調(diào)度的IO數(shù),限制IO隊(duì)列深度的,簡單來說就是定義設(shè)備一次可以接收的IO請求的隊(duì)列長度,默認(rèn)為8

增加反而會(huì)有負(fù)面影響,因此謹(jǐn)慎調(diào)整

如果隨機(jī)IO請求數(shù)非常的多,這個(gè)值可以適當(dāng)調(diào)大,如果順序?qū)懛浅6啵敲床唤ㄗh調(diào)整

#p#

設(shè)置IO允許消耗的時(shí)間

一次IO請求的操作,一次執(zhí)行多久,應(yīng)該執(zhí)行多久,按理說硬盤只要是沒有損壞,能正常運(yùn)作,在正常范圍內(nèi),那么它就應(yīng)該寫完、讀完所以我們要定義好每次讀寫請求所***允許消耗的時(shí)間,那么就是以下幾個(gè)參數(shù)的意義了:

slice_async

定義異步寫入的超時(shí)值,每次異步寫操作最長時(shí)長是多少,默認(rèn)值為40秒

slice_idle

等待IO請求的閑置時(shí)長

slice_sync

定義同步寫入操作超時(shí)值,因?yàn)橥奖容^慢,所以其默認(rèn)值是100秒,因?yàn)槭菑倪M(jìn)程直接到磁盤的,所以超時(shí)時(shí)間會(huì)長一點(diǎn)

在桌面環(huán)境和在服務(wù)環(huán)境下,他們?nèi)绻际褂肅FQ調(diào)度器,他們工作特性不一定,也就意味著我們關(guān)注其背后工作機(jī)制參數(shù)也不一樣,所以要調(diào)整某些值做一些測試的評(píng)判

Deadline***期限調(diào)度

***期限

wKiom1Qdhp2A5fkHAACT0L3TiWU207.jpg

如圖所示,其分為了3個(gè)隊(duì)列,分別是:

  • ·讀隊(duì)列
  • ·寫對列
  • ·排序隊(duì)列

而后這些隊(duì)列都被整合到派發(fā)隊(duì)列中去而后由磁盤得到滿足,我們從中任何一隊(duì)列中選出一個(gè)操作得到滿足之前必須要保證這類操作不能超期

簡單來講deadline就是將每個(gè)讀寫操作放到隊(duì)列的時(shí)候都給他一個(gè)倒計(jì)時(shí)的計(jì)時(shí)器,將倒計(jì)時(shí)的計(jì)時(shí)器消耗完之前需要趕緊放到派發(fā)隊(duì)列中,而后再同步至硬盤

而對服務(wù)器來講,這種方式是比較理想的

常用可調(diào)參數(shù)

fifo_batch

單批發(fā)出的讀寫數(shù),在其***期限滿足之前將隊(duì)列中的數(shù)據(jù)拿出并滿足,但有寫操作是需要排序的;默認(rèn)為16,設(shè)置更多的值會(huì)獲得更好的流量,但是會(huì)增加延遲

比如一批讀為16個(gè),那么我們講其改為32個(gè),那意味著寫的時(shí)間會(huì)更高

當(dāng)然所有都取決于測試數(shù)據(jù),無論怎么調(diào)都不如換一塊SSD硬盤

front_merges

可以將多個(gè)請求合并在一起,但是有些請求壓根不連續(xù),不可能被合并在一起,那么我們可以禁止在滿足IO之前進(jìn)行合并的,禁止合并有可能會(huì)帶來隨機(jī)讀寫的特性的

但允許合并也有一定的副作用,就是必須花時(shí)間去排序

read_expire

每個(gè)讀操作必須在多少期限內(nèi)得到滿足,默認(rèn)為半秒鐘

write_expire

每個(gè)寫操作必須在多久內(nèi)得到滿足,默認(rèn)為5秒鐘

#寫操作是可以延遲滿足的

writes_starved

定義一批可以處理多少個(gè)讀取批,這個(gè)值越高,讀的效果就越好。默認(rèn)為2,意味著2批讀,一批寫。如果服務(wù)器讀多寫少,內(nèi)存緩沖足夠大,那么可以將其調(diào)大

Noop

如果系統(tǒng)與cpu綁定,且使用高速存儲(chǔ)(SSD),這就是***的IO調(diào)度程序

只要使用固態(tài)硬盤就要將其改為noop

如果調(diào)參數(shù)的話則需要直接去挑戰(zhàn)/sys/block/vda/queue下的參數(shù),而不是調(diào)度器的參數(shù)

add_random

其作用是否使用商池

max_sectors_kb

默認(rèn)發(fā)送到磁盤的***請求是多少,默認(rèn)為512kb。我們知道每個(gè)扇區(qū)是512字節(jié),那么每次發(fā)送512kb 意味著發(fā)送N個(gè)扇區(qū),我們可以調(diào)整或增大減小該值,對于固態(tài)硬盤來講不是所謂的扇區(qū)概念,由此可調(diào)。

在此類情況下建議將max_hw_sectors_kb降低刪除塊大小

我們可以使用壓力測試工具對其做測試,記錄大小從512kb到1MB不等,哪個(gè)值的效果好就設(shè)置為哪個(gè)值,當(dāng)然壓力測試跟實(shí)際場景有出入的,所以要充分考慮環(huán)境盡可能模擬真實(shí)場景,盡可能要模擬隨機(jī)讀寫

nr_request

請求的隊(duì)列的值,可以降低其值

rotational

如果是SSD硬盤要將此值設(shè)置為0,禁用輪轉(zhuǎn)模式

rq_affinity

在觸發(fā)IO不同的CPU中處理IO,一般來講在同CPU上處理同IO是***的

因?yàn)镃PU處理的僅僅是中斷而已

因此對于SSD環(huán)境中常用的調(diào)整參數(shù)有:

max_sectors_kb

nr_requests

optimal_io_size

rotational

調(diào)整后如何測試性能是否提高

比較常用的硬盤壓力測試工具

·aio-stress

·iozone

·fio

了解磁盤IO活動(dòng)狀況分析工具

blktrace

磁盤IO瓶頸分析工具

blkparse

gnuplot

本文 來自http://yijiu.blog.51cto.com 轉(zhuǎn)載 請說明,翻版 可恥

總結(jié):IO優(yōu)化大致思路

  • ·***換SSD
  • ·調(diào)整raid級(jí)別
  • ·選擇IO調(diào)度器
  • ·根據(jù)場景選擇合適的文件系統(tǒng)
  • ·配置選定調(diào)度器的參數(shù)
  • ·優(yōu)化結(jié)果是否理想,則使用工具進(jìn)行分析
  • ·寫在開機(jī)啟動(dòng)項(xiàng)里

博文地址:http://yijiu.blog.51cto.com/433846/1556382

責(zé)任編輯:牛小雨 來源: 51CTO
相關(guān)推薦

2015-11-10 16:55:00

性能IO子系統(tǒng)Linux

2023-11-28 08:43:48

2011-04-25 09:12:47

LinuxIO數(shù)據(jù)庫

2013-03-20 17:18:07

Linux系統(tǒng)性能調(diào)優(yōu)

2014-12-15 10:06:13

linux診斷工具系統(tǒng)監(jiān)控

2011-03-21 09:35:38

LAMP調(diào)優(yōu)網(wǎng)絡(luò)文件

2011-01-21 08:38:20

2017-07-21 08:55:13

TomcatJVM容器

2019-08-13 09:04:22

Linux性能調(diào)優(yōu)

2018-09-17 08:36:59

機(jī)房監(jiān)控配電

2009-10-12 12:46:55

Linux內(nèi)核SCSI IO

2023-11-23 09:26:50

Java調(diào)優(yōu)

2011-03-31 13:40:34

2013-03-20 17:30:18

2016-10-17 08:49:15

WindowsLinuxArch Linux

2021-07-15 08:00:47

系統(tǒng)性能調(diào)優(yōu)cpunuma架構(gòu)

2021-06-07 08:13:11

LinuxIDLE 子系統(tǒng)

2010-05-26 18:31:51

Linux性能監(jiān)控

2011-11-08 21:47:37

Linux 監(jiān)控 IO

2013-03-12 17:33:17

Linux系統(tǒng)性能調(diào)優(yōu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天堂一区二区三区四区 | 婷婷久久综合 | 毛片免费观看视频 | 久久精品视频网站 | 日韩亚洲视频在线 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 一区二区三区高清在线观看 | 中文字幕一区二区三区不卡 | 免费三级网站 | 精品av | 午夜视频精品 | 狠狠操你 | 91精品国产91综合久久蜜臀 | 大乳boobs巨大吃奶挤奶 | 亚洲欧美在线视频 | 国产免费播放视频 | 国产乱码精品一品二品 | 国产精品久久久久久高潮 | 中文字幕av一区 | 精品国产一区二区三区久久久蜜月 | 秋霞电影一区二区三区 | 精品久久成人 | 天天爽网站 | 色五月激情五月 | 亚洲午夜在线 | 日韩精品久久久久久 | 欧洲精品在线观看 | av一级久久 | 国产精品久久久久久久久图文区 | 久久视频免费看 | 成人国产精品 | 国产免费一区二区三区免费视频 | 日本久久网 | 99久久精品国产一区二区三区 | 久久久久国产一区二区三区 | 欧美国产日韩一区二区三区 | 欧美激情国产精品 | 亚洲一区二区三区四区五区午夜 | 国内精品视频 | 亚洲不卡av在线 | 在线亚洲一区 |