在 aix6.1 中,使用 ioo 命令可以檢視與 aio 相關的核心引數。
# ioo -f -a |grep -i aio
aio_maxreqs = 131072
aio_maxservers = 30
aio_minservers = 3
kproc 的最小值由系統引數 minservers 決定,最大值由系統引數 maxservers 決定。如果非同步 i/o 請求的數量很多,就需要將 maxservers 的數值增大。由於 aix 核心可以自動生成額外的 kproc,因此在大多數情況下,minservers 的數值不需要手動調整。需要注意的是,minservers 和 maxservers 兩個引數只對檔案系統有效,對於 aio 的裸裝置模式以及 cio 的模式是無效的,這兩種 i/o 由 fastpath 來處理,而不是 kproc。
在 aix6.1 中,aio_maxservers 和 aio_minservers 的預設數值分別為 30 和 3,一般認為這兩個數值是每個 cpu 的 aio server 數量設定。
aix6.1 中的 maxreqs 引數決定 aio 系統裡可以處理最多併發 i/o 請求的數量。這個引數對於 fast path 的 i/o 型別是不起作用的。我們在調整 minservers 和 maxservers 引數時,也需要監控 maxreqs 數值。
在 aix6.1 中,可以用如下命令檢視執行的 aio server 的數量:
# pstat -a |grep -c aios |wc -l
# ioo -f -a |grep -i aio_minservers
aio_minservers = 3
# pstat -a |grep -c kproc |wc -l
從上面結果可以看出,目前系統中的 aio 請求很少,只有乙個 aio server 在執行。而 aio server 的數量與 kproc 的數量,是一致的。
在系統中,如果 maxreqs 和 maxservers 設定的太低低,可能會造成資料庫報錯或者宕機,檢視 oracle 的 bdump 檔案可以發現如下報錯:
一般情況下,執行的 aio server 數量不會低於 aio_minservers 引數的設定,在上面的例子中,之所以出現 aio server 的數量低於 aio_minservers 引數設定的數值,是因為該系統是乙個空閒的系統,沒有任何負載和 aio 請求。aio_server_inactivity 在 aix6.1 中一般不需要設定。
aio_active 引數不需要設定,預設為 0。只有當 aio kernel extensors 被使用時,才會變成 1。
# ioo -a | grep active
aio_active = 0
posix_aio_active = 0
# ioo -o aio_active=1
ioo: 1485-114 static tunable aio_active cannot be changed
核心aio AIO 的主要核心引數
在 aix6.1 中,使用 ioo 命令可以檢視與 aio 相關的核心引數。ioo f a grep i aio aio maxreqs 131072 aio maxservers 30 aio minservers 3 kproc 的最小值由系統引數 minservers 決定,最大值由系統引數 ...
核心主要常數
1 系統最大程序數 系統最大程序 任務 數為64。2 程序的執行狀態 define task running 0 程序正在執行或已準備就緒。define task interruptible 1 程序處於可中斷等待狀態。define task uninterruptible 2 程序處於不可中斷等待...
linux核心的主要模組
linux系統從應用角度來分,分為核心空間和使用者空間兩部分。linux核心主要有5個子系統組成 程序排程 記憶體管理 虛擬檔案系統 網路介面 程序間通訊。1.程序排程sched 程序排程指的是系統對程序的多種狀態之間轉換的策略。linux下的程序排程有3種策略 sched other sched ...