linux調度演算法RHCA

來源:互聯網
上載者:User

linux調度演算法RHCA UNIT 6 Compensating for Physical Disk Characteristics   www.2cto.com  學習目標:    A. 瞭解影響磁碟IO的物理因素    B. 應用隊列技術調整IO調度 6.1 Physical factors affect disk IO 影響磁碟IO的物理因素A. 儲存密度:       地區恒定角速度(ZCAV)原理:現代硬碟都採用的是等密度儲存,因此每個磁 道上的扇區數外圈要比內圈多,從內圈到外圈分為若干地區,每個地區內角速度保持一定,也就是ZCAV方式   a. 外圈磁軌比內圈有更多的線性儲存地區   b.在轉速一定的情況下,每秒鐘讀取的資料外圈磁軌要比內圈磁軌多。   c. 外圈的分區號比內圈要低(因為分區是從外圈開始的,0磁軌0扇區)B.匯流排串連   a. Linux 核心的處理頻寬為10Gib/sC. 電子-機械定位   a. 轉速延時   b. 尋道時間 PS:  www.2cto.com  硬碟結構                                                                                                                           A. 磁碟物理組成: 通常由一個或多個圓形碟片組成,每個碟片都是兩面儲存的,通過機械臂上的磁頭進行資料讀寫操作,主要由碟片、機械手臂、磁頭與主軸馬達所組成。B. 磁碟邏輯組成:磁頭(header)柱面(cylinder)磁軌(track)扇區(sector)磁頭 : 磁頭固定在可移動的機械臂上,用於讀寫資料。現代硬碟都是雙面可讀寫,因此磁頭數量等於碟片數的 2 倍。磁頭數最大值為 255 (8 個二進位位)。磁軌 : 每個盤面都有 n 個同心圓組成,每個同心圓稱之為一個磁軌。由外向內分為 0 磁軌到 n 磁軌。柱面 : n 個盤面的相同磁軌 (位置相同) 共同組成一個柱面。柱面數最大為 1023 (10 個二進位位)。扇區 : 從磁碟中心向外畫直線,可以將磁軌劃分為若干個弧段。每個磁軌上一個弧段被稱之為一個扇區。扇區是硬碟的最小組成單元,通常是 512 位元組。磁軌上的扇區數最大為 63 (6 個二進位位)。硬碟的儲存容量公式:儲存容量 = 磁頭數 × 磁軌(柱面)數 × 每道扇區數 × 每扇區位元組數3D 定址參數:×× 磁軌(柱面),×× 磁頭,×× 扇區Track=sector*nLinux 的分區是按柱面來劃分的。引導區資訊: 硬碟的第一個扇區被稱之為 Boot Sector。由 MBR (MasterBoot Record)、DPT (Disk Partition Table) 和 Boot Record ID 三部分組成。•MBR 又稱作主引導記錄,佔用 Boot Sector 的前 446 個位元組(0 ~ 0x1BD)。存放系統主引導程式,負責從使用中的磁碟分割中裝載並運行系統引導程式。•DPT 即主要磁碟分割表,佔用 64 個位元組 (0x1BE ~ 0x1FD),記錄了磁碟的基本分區資訊。主要磁碟分割表分為四個分區項,每項 16 位元組,分別記錄了每個主要磁碟分割的資訊 (因此最多可以有 4 個主要磁碟分割)。通常分完三個主要磁碟分割後,剩下的磁碟空間全部分給擴充分區,然後在擴充分區裡再分區(IDE:5~59分區,SATA:5~15分區);如果不這樣的話,分完4個分區後剩下的空間不能再使用。•Boot Record ID 即引導區標記,佔用兩個位元組 (0x1FE ~ 0x1FF)。對於合法引導區,它等於 0xAA55,這是判別引導區是否合法的標誌。    6.2    Disk storage density 磁碟的儲存密度    A 使用bonnie++測試磁碟及檔案系統的效能             yum –y install bonnie++             rpm –qd bonnie++             useradd zcav; usermod –aG disk zcav             for drive in sdb sdc sdd sde;                 do                      su –c “zcav –c1 /dev/$drive” zcav >> /tmp/zcavdata.$drive                 done            Gnuplot 指令:             set term png size 600,300 notransparent 1w 2             set output ‘/tmp/rh442_zcav.png’             set xlabel ‘Block’;set xrange [0:]             set ylabel ‘Disk thronghput (KiB/s)’; set yrange [0:]             set border 3; set xtics nomirror; set ytics nomirror             set label ‘ZCAV steppings’ at 5000,50000            plot ‘/tmp/zcav.sdd’ u 1:2 t ’80 GB HDD’ with lines , \                   ‘/tmp/zcav.sdb’ u 1:2 t ’16 GiB SSD’ with lines , \                   ‘/tmp/zcav.sde’ u 1:2 t   ’64 GB USB flash’ with lines , \                   ‘/tmp/zcav.sdc’ u 1:2 t ‘8 GiB SD card’ with lines      B. bonnie++工具介紹         a、簡介          Bonnie++是一個硬碟和檔案系統的基準效能測試工具,它通過一系列的簡單測試來產生硬碟和檔案系統的績效參數。其主程式提供兩種風格的測試:針對單個檔案的資料庫風格的訪問測試和針對大量小檔案的建立和刪除來類比諸如Squid,INN,或者Maildir格式的Email這一類風格的訪問測試。在選擇RAID設定方法、檔案系統的建立參數和NFS訪問方式時,此工具可以提供有用的協助資訊。 Bonnie++對三個方面做基準測試:資料讀、寫速度,每秒可以完成的磁碟尋道次數和每秒可以完成的檔案中繼資料操作次數。 中繼資料的效能表現跟運行著squid或為Maildir格式郵件伺服器儲存郵件時有很大關係,因為它們都是中繼資料操作密集型的應用。Bonnie++目前的最新版本是1.03e,項目地址:http://www.coker.com.au/bonnie++/。 b、安裝安裝完成以後會在/usr/local/sbin/目錄中產生兩個可執行檔,bonnie++(主測試程式)和zcav(裸盤輸送量測試程式);同時也會在/usr/local/bin目錄下產生兩個可執行檔,用於產生可讀性強的測試報告,它們是bon_csv2html和bon_csv2txt。  c.、bonnie++的常用選項說明-d DIR 用於測試的目錄,即測試目標位置;-s SIZE(MiB) 用於測試IO效能的檔案的大小;如果指定的檔案大小大於1G,bonnie++會將其分為多個大小為1G的檔案;-m 測試目標主機的主機名稱,僅用於顯示測試結果時的主機標識;-r 指定測試程度使用的記憶體大小;bonnie++一般要求指定的測試檔案的大小至少為實體記憶體的2倍;如果測試時指定的檔案過小,則可以通過指定所使用的實體記憶體大小來滯此條件;-x 用於指定同時啟動並執行測試數目;-u 測試程式運行時關聯的uid,如果以root使用者的身份做測試,則此項必須明確指定。-g選項則用於指定gid;-q 靜默模式;-f 快速模式,此種模式不進行IO測試;-D 直接IO測試,用於測試大規模IO請求時的效能;使用樣本:# bonnie++ -d /data -u root -s 4096 -m mail   說明:1、測試結果中顯示形如的“++++”的符號表示此項測試時間小於500ms,所以被視作不準確結果不予顯示;2、每項測試都會顯示兩個結果,其中的%CP表示此項測試的CPU佔用率;  d. 、zcav使用簡介ZCAV是“Zoned Constant Angular Velocity”的簡寫,用於測試裸盤的吞吐率。常用選項如下: -b 讀/寫操作的資料區塊的大小,單位為MB:預設為100M;-c 讀/寫整個磁碟的次數;-f 讀入資料時所用的檔案;-u 測試時使用的uid;-g 為使用的gid;-w 通過向磁碟填充“0”的方式測試,會破壞原有檔案。使用樣本:# zcav -b 2048 /dev/sda3  6.3    Choosing a peripheral interconnect 選擇外部串連    A. 資源和系統的瓶頸在於匯流排嗎?    B. 常用匯流排介面        Bus Type   Bus Width      Clock speed     Burst bandwidth     Sustainable bandwith      匯流排類型    匯流排大小      時鐘頻率         頻寬峰值          支撐頻寬                 PCI          32bits         33 MHz        133 MiB/s             115 MB/s                 PCI          32bits         66 MHz        266 MiB/s             230 MB/s                 PCI          64bits         33 MHz        266 MiB/s             230 MB/s                 PCI          64bits         66 MHz        533 MiB/s             490 MB/s                  PCI-X        64bits        133 MHz       1066 MiB/s             980 MB/s                 PCIe x1       1 bits         2.5 GHz        250 MiB/s             200 MB/s  6.4    SCSI bus considerations 使用SCSI匯流排介面要注意的事項      A. 物理上要注意的因素          a.  在同一匯流排上使用不同速度的混合裝置(寬型和窄型裝置)時要特別小心,因為在匯流排上窄型終結髮生的位置可能與寬型裝置不同。          b. 主動終結VS被動終結          c.  Differential signaling 差分訊號: 用一個數值來表示兩個物理量之間的差異      B. sg3_utils 工具包,查看SCSI介面相關資訊及設定參數,相關命令:                  for DRIVE in $(sginfo -r) ; do                      sginfo –a $DRIVE;                  done  6.5   Electro-mechanical positioning 電子機械定位    A.  突發傳輸率與實際輸送量是沒有關係的    B.  內部傳輸速率非常重要         a. 內部傳輸速率是磁碟每次讀或寫多少個位元         b.旋轉速度     C.   通過隊列技術減少平均尋道時間          a. 使用電梯演算法重排序請求隊列          b. 系統的中繼資料通常存放在buffer cache裡面          c.  檔案資料通常存放在page cache裡面          d  大部份裝置都有自己的內部緩衝           e. 可以饒過核心緩衝直接讀寫IO 裝置(比如訪問裸裝置)                      File=1 inode + N blocks                      File = metadata + data                      Data rate =(sectors_per_track * 512 * rpm)/60                      Disk speed =((Average sectors_per_track * rpm *512)/60)/1000000 6.6    Block IO requests and cache effect(略) 6.7    Tuning sequential read access 順序讀訪問      A. 核心會自動按順序的向前讀寫。            blockdev   - getra /dev/sda     查看            blockdev –setra 512 /dev/sda 設定一次讀寫多少kb        a.  可以在/sys/block/sda/queue/read_ahead_kb查看        b.  可調整最大視窗大小        c.  讀寫視窗的初始值是可調值的一半        d.  設定可寫入/etc/rc.local      B. 小結          a. 減少了尋道時間,但增加了每次讀寫的服務時間          b. 減少了要讀寫資料時通知磁碟控制卡的操作次數          c. 不適合隨機檔案的讀寫。           應用:適用於大檔案讀寫(Web Server)  6.8    Tuning the disk queue調整磁碟隊列      A.調整隊列長度           /sys/block/sda/queue/nr_requests           增加隊列長度,可以提高磁碟輸送量,但消耗記憶體。      B. 調度演算法             /sys/block/sda/queue/scheduler      C. 加長隊列…         a. 多個讀請求合并一次寫入         b. 允許更多有效讀請求合并但會增加延時。               核心預設的IO調度演算法是cfq: 相關查看命令                  Grep –I cfq /boot/config-*            調度演算法相關協助文檔:/usr/share/doc/kernel-doc-*/Documentation/block/*  6.9    Tuning the deadline scheduler 期限調度   A. 調整目標:優休等待時間(W)          echo deadline > /sys/block/sda/queue/scheduler   B. 主要調整在/sys/block/sda/queue/iosched/        a. Max queue time 最大隊列時間            參數 :              read_ expire: 每個IO讀請求多少豪秒後到期             write_expire:每個IO寫請求多少豪秒後到期       b.合并連續請求          參數:          front_merges:通常在請求隊列的隊尾合并IO請求,這個參數的值可以控制是否  在請求隊列的隊首合并IO請求,這樣可以處理更多的請求,0代表禁止,1代表啟用。  應用:保證響應速度,適合於小檔案讀寫   6.10 Tuning the anticipatory scheduler 猜想調度     A. 目標:最佳化讀資料的完成率          echo anticipatory > /sys/block/sda/queue/scheduler 預設值6秒,猜想下一個資料會不會在附近出現,避免磁頭頻繁來回移動。      B.主要調整在/sys/block/sda/queue/iosched/         a. 在執行下一個讀/寫請求時等待多長時間              參數:antic_expire         b. Max queue time (W)               read_expire               write_expire           批量讀請求比批量寫請求允許更長的時間               相關協助文檔:/usr/share/doc/kernel-doc-*/Documentation/block/as-iosched.txt            應用:適用於批量順序讀寫,適用於大檔案(如,web server) 6.10   Tuning the noop scheduler 不作為調度         A..目標:節省CPU時鐘頻率              echo noop > /sys/block/sda/queue/scheduler           a. 不需要調整設定           b.  使用CPU時鐘頻率開銷昂貴。           c.  主機CPU時鐘頻率通常比SAN CPU時鐘頻率便宜        B. 有些磁碟控制卡執行的是電梯演算法            a.  標識命令隊列            b.  在SCSI和一些SATA磁碟上有效         C. 對於iSCSI和GNBD來說排序非常有用。 6.11  Tuning the (default) cfq scheduler 公平調度演算法(預設)       A.目標:為每個應用提供不同的IO服務                echo cfq > /sys/block/sda/queue/scheduler           a. 基於IO的優先順序           b.  使用64位的內部隊列           c.  使用輪循的方式填充內部隊列           d.  從非空隊列裡調出請求           e.   派遣隊列可以進行排序      B.主要調整在/sys/block/sda/queue/iosched/           a.每個內部隊列最大請求數               queued           b.每次派發請求的數量。               Quantum                                                      應用:適用於隨機離散的讀寫。  6.12 Fine-tuning the cfq scheduler   cfq 調度演算法進階調整     A. 基於優先順序隊列        a.類1(real-time)即時隊列:最優先訪問磁碟,調成這種即時隊列可能會餓死其它 類             優先順序0(最重要)~7(最不重要)         b.類2(best-effor)儘力而為:輪循訪問,預設。              優先順序0(最重要)~7(最不重要)         c.類3(idle)空閑:隊列空閑時才處理 磁碟IO      Example:             ionice –p1             ionice –p1 –n7 –c2     進程號為1,輪循訪問2,等級為7最不重要             ionice –p1       針對進程對IO進行調整:             -p pid 進程號                -n 優先順序             -c 優先類別   www.2cto.com   6.12   Physical block devce interfaces 物理塊裝置介面類型       A.      IDE:       133MB/s以上       B.      SATA:    300MB/s       C.      SCSI:      320 MB/s       D.     USB:        480Mbps(60MB/s)       E.      iSCSI+GigE:    1Gb/s(125MB/s)       F.      FC:         4.25Gb/s(531 MB/s) 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.