關於系統程序和io的優先順序,我們這麼玩

2021-08-13 14:28:55 字數 2863 閱讀 2537

首先,如果不是特別老的核心,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,分...