Linux ionice 命令

haoge0205發表於2020-08-19

命令功能:

ionice 獲取或設定程式的IO排程與優先順序。

命令格式:

ionice [[-c class] [-n classdata] [-t]] -p PID [PID]…

 

ionice [-c class] [-n classdata] [-t] COMMAND [ARG]…

IO排程策略分為三類:

1、idle:空閒磁碟排程;該排程策略是在當前系統沒有其他程式需要進行磁碟IO時,才能進行磁碟;因此該策略對當前系統的影響基本為0;當然,該排程策略不能帶有任何優先順序引數;

2、Best effort:是預設的磁碟IO排程策略;

  (1)該排程策略可以指定優先順序引數(範圍是0~7,數值越小,優先順序越高);

  (2)針對處於同一優先順序的程式將採round-robin方式;

  (3)對於best effort排程策略,8個優先順序等級可以說明在給定的一個排程視窗中時間片的大小;

  (4)目前,普呼叫戶(非root使用者)是可以使用該排程策略;

  (5)在核心2.6.26之前,沒有設定IO優先順序的程式會使用“none”作為排程策略,但是這種策略使得程式看起來像是採用了best effort排程策略,因為其優先順序是透過關於cpu nice有關的公式計算得到的:io_priority = (cpu_nice + 20) /5

  (6)在核心2.6.26之後,如果當前系統使用的是CFQ排程器,那麼如果程式沒有設定IO優先順序級別,將採用與核心2.6.26之前版本同樣的方式,推到出io優先順序級別;

3、Real time:實時排程策略,如果設定了該磁碟IO排程策略,則立即訪問磁碟,不管系統中其他程式是否有IO。因此使用實時排程策略,需要注意的是,該訪問策略可能會使得其他程式處於等待狀態;

引數說明:

-c class :class表示排程策略,其中0 for none, 1 for real time, 2 for best-effort, 3 for idle。

-n classdata:classdata表示IO優先順序級別,對於best effort和real time,classdata可以設定為0~7。

-p pid:指定要檢視或設定的程式號或者執行緒號,如果沒有指定pid引數,ionice will run the listed program with the given parameters。

-t :忽視設定優先順序時產生的錯誤。

COMMAND:表示命令名

[root@hankyoon ]# ionice -c 3 -p 89   設定程式號89的程式的排程為idle

[root@hankyoon ]# ionice -c 2 -n 0 bash  執行bash,排程策略為best-effort,最高優先順序

[root@hankyoon ]# ionice -p 89 91   列印程式89和91的程式的排程策略和優先順序

[root@hankyoon ]# ionice -c3 -p$$  將當前的程式(就是shell)磁碟IO排程策略設定為idle型別

[root@hankyoon ]# ionice -c 2 -n 6 rm xxx.ibd  刪除xxx.ibd檔案,排程策略為best-effort,優先順序低


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2712871/,如需轉載,請註明出處,否則將追究法律責任。

相關文章