首先,如果不是特別老的核心,io是可以設定優先順序的。
我們用fio工具來測試下
程序優先順序10,io優先順序7,排程類別為idle
fio -prioclass=3
-prio=7
-nice=10
-filename
=/dev/md1 -direct=1
-iodepth
10-thread
-rw=randrw -rwmixread
=100
-ioengine
=psync -bs
=16k -size
=2000g -numjobs=30
-number_ios
=100000
-runtime
=100
-group_reporting
-thinktime_spin
=2000
-name
=mytest1
程序優先順序-10,io優先順序0(high),排程類別為rt(實時)
fio -prioclass=1
-prio=0
-nice
=-10
-filename
=/dev/md1 -direct=1
-iodepth
10-thread
-rw=randrw -rwmixread
=100
-ioengine
=psync -bs
=16k -size
=2000g -numjobs=30
-number_ios
=100000
-group_reporting
-thinktime_spin
=2000
-name
=mytest1
如上2條命令或者自己調整下,能立馬看到io優先順序的效果
第二個實驗,我們來驗證下fio這個工具的thinktime thinktime_spin的用法。事先說下,thinktime是在向系統提交io請求之前,阻塞多長時間。thinktime_spine是阻塞的時間段內,有多少是通過cpu死迴圈的自旋來實現的。單位是microseconds1s
=103l
imis
econ
ds=10
6mic
rose
cond
s 命令入下
fio -prioclass=1
-prio=0
-nice
=-10
-filename
=/dev/sda -direct=1
-iodepth
10-thread
-rw=randrw -rwmixread
=100
-ioengine
=libaio -bs
=16k -size
=2g -numjobs=30
-group_reporting
-thinktime
=2000000
-thinktime_spin
=2000000
-name
=mytest1
第三個實驗,我們來測試程序的優先順序對程序獲取cpu的影響
fio -prioclass=1
-prio=0
-nice
=-19
-filename
=/dev/sda -direct=1
-iodepth
10-thread
-rw=randrw -rwmixread
=100
-ioengine
=libaio -bs
=16k -size
=2g -numjobs=30
-group_reporting
-thinktime
=2000000
-thinktime_spin
=2000000
-name
=mytest1 > /dev/null
2>&
1
fio -prioclass=1
-prio=0
-nice=19
-filename
=/dev/sda -direct=1
-iodepth
10-thread
-rw=randrw -rwmixread
=100
-ioengine
=libaio -bs
=16k -size
=2g -numjobs=30
-group_reporting
-thinktime
=2000000
-thinktime_spin
=2000000
-name
=mytest1 > /dev/null
2>&
1
解釋:為了使得系統cpu資源不足而是優先順序有意義(如果充足的話優先順序就沒用了,可以滿足所有程序的需求),我們把每乙個程序都啟動30個執行緒(16核心)。一組用最低優先順序,一組用最高優先順序。大家可以看到效果非常顯著。買個關子,看這第三個實現有沒有同學在2.6以上的核心做的出來,這裡有小坑乙個^_^
之所以有以上的實驗,是因為筆者在工作過程中,遇到過系統資源不足,但是需要有優先順序的去給各個事務去分配的情況,通過以上2中方式,我們可以把優先順序低但是總量大,持續時間長的任務從系統的高優先順序任務中排除。(一般高優先順序任務小而且有突發的特性)。
Linux程序優先順序和調整優先順序
linux 是乙個多使用者 多工的作業系統,系統中通常執行著非常多的程序。但是 cpu 在乙個時鐘週期內只能運算一條指令 現在的 cpu 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...
程序和執行緒的優先順序
程序 執行緒 的優先順序越高,那麼就可以分占越多的cpu時間片,每個程序都有相應的優先順序,優先順序決定它何時執行和占用cpu的時間。最終的優先順序共分 32 級,是從 0 到 31 的數值,稱為基本優先級別。執行緒32個優先順序,16 31是實時類別 1 15是動態類別 0是系統類別 kproce...
Linux程序優先順序系統 設定實時程序優先順序
最近研發的產品出了點小bug,最後查到根本原因是,其中乙個程序a使用基於fifo的實時程序優先順序,而另乙個程序b是使用普通排程的程序優先順序,而a和b兩個程序是互相通訊的,程序b會被餓死,而程序a也不能正常工作。分析問題過程中查詢了一些資料,以下記錄一些特別注意的點。1 sched other,分...