Linux command – nice & ionice

程序的執行可以透過手動調整來提高或是降低其程序使用 CPU 與 I/O 的資源.

  • CPU 排程,請參考 – https://access.redhat.com/documentation/zh-tw/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-cpu-scheduler
  • I/O 使用 Completely Fair Queuing (CFQ) 排程,請參考 – https://access.redhat.com/documentation/zh-tw/red_hat_enterprise_linux/6/html/performance_tuning_guide/ch06s04

測試環境為 CentOS7 x86_64 (虛擬機)

nice

[root@localhost ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1739   1735  0  80   0 - 29179 do_wai pts/0    00:00:00 bash
0 R     0   1929   1739  0  80   0 - 37235 -      pts/0    00:00:00 ps

其中的 PRI (Priority) 與 NI(Nice) ,所代表是該程序使用 CPU 的優先順序,PRI 由核心動自行調整 (數值越小代表該程序可以使用更多的 CPU 資源),我們可以調整的只有 NI值,範圍從 -20 ~ 19 (數值越小代表該程序可以使用更多的 CPU 資源),設定調整方式有兩種.

  • #nice 指令可以在執行程式時就給予特定的 nice 值.
    # nice [-n, --adjustment=N (niceness ,default 10)] command
    
  • #renice 指令可以調整現行程序的 nice 值 (透過 PID- Process ID 來指定) .
    [root@localhost ~]# renice -1 1739
    1739 (process ID) old priority 0, new priority -1
    [root@localhost ~]# ps -l
    F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0   1739   1735  0  79  -1 - 29179 do_wai pts/0    00:00:00 bash
    0 R     0   2058   1739  0  79  -1 - 37235 -      pts/0    00:00:00 ps
    

ionice

#ionice 指令可以調整程序使用 I/O 的優先順序,可調整的部分為 class 與 priority .

  • -c class
    Class – 0 為 none, 1 為 real time, 2 為 best-effort, 3 為 idle.
  • -n classdata
    Real time 與 best-effort,設定可從 0-7 (數值越小代表該程序有較高的 I/O 優先順序) .
  • -p pid
    Process ID.
[root@localhost ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1739   1735  0  79  -1 - 29179 do_wai pts/0    00:00:00 bash
0 R     0   2059   1739  0  79  -1 - 37235 -      pts/0    00:00:00 ps
[root@localhost ~]# ionice -p 1739
unknown: prio 0
[root@localhost ~]# ionice -c 2 -n 0 -p 1739
[root@localhost ~]# ionice -p 1739
best-effort: prio 0

更多關於限制 CPU 資源使用,請參考.

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料