---
# System prepended metadata

title: Deadline Group And Pool Setting
tags: [Deadline, Rules]

---


# Deadline Group And Pool Setting
###### tags: `Deadline` `Rules`
[TOC]

## 壹.Group 和 Pool定義
- Group: 是根據電腦是否擁有這套軟體的授權而去做設定。簡單來說**設定group的電腦決定<font color="#f00">會或不會</font>被抓去算圖**。  
    :::info
    *.公司某幾台電腦有安裝AE單機版授權的Reduce Noise plugin，就根據這些做group設定。
    *.很多電腦都有floating render license，也可以根據性能高和中的電腦做group設定。並搭配Resource Limit做license的數量控制。  
    :::
- Pool: 會根據電腦pool排序設定決定哪個job先算，不管是設定那些group。設定方式會依照緊急狀況，專案，電腦效能來做優先排序。**設定pool的電腦決定<font color="#f00">優先順序</font>被抓去算圖**。  
    :::info
    *.如果同時有3個專案正在執行，就要決定這3個案子的優先順序。例如：某電腦pool設定順序是sjia,ach,fotw，就代表這台電腦優先算圖順序sjia > ach > fotw。

    :::
## 貳.Group和Pool算圖的流程跟舉例
- 一個job submit之後，Deadline第一件事情是根據Group設定去做哪些電腦能算，哪些電腦不可以算。  
- 接著Deadline會調配job會先先被那些機器接去算圖。下圖為公司設定的優先順序的大項比較。  
![](https://i.imgur.com/RB5znGN.png)  
    - 排序大項**第一個根據pool排序**做優先分配。如果有海量的job等待算圖，會根據pool的細部排序設定做優先分配。例如上述的專案sjia,ach,fotw。  
    - 排序大項**第二個根據priority排序**做優先分配。當海量的job設定同樣的pool時，deadline就會依照priority的數字大小比較。例如很多job都設定ach pool，接著就會根據submit指定的priority數字高低做分配。  
    - 排序大項**第三個根據first-in first-out排序**做優先分配。當海量的job設定同樣的pool和priority時，就會依照submit的時間做優先分配，越早submit的job越優先被算。
- 結論簡單一句，當海量的job在線上時，會先分配group電腦，再決定算圖優先順序。就很像便當來時，會先分葷跟素的group，再分配要先吃菜，飯，湯的吃的順序。  

## 叁.智崴目前的group設定
- 目前有ae，ai，houdini_FX，houdini_mantra，maya_vray，nuke，vr的group(之後會再有動態的調整)。
    - ae： 日後會在分割出ae單機版的plugin的group。  
    - ai： AI放大的機器group(5台)。(Topaz Video Enhance AI)  
    - houdini_FX： floating render(2個)  
    - houdini_mantra： floating render(40個)
    - maya_vray： floating render(10個)，小寶欽點算圖機10台和些許工作機。  
    - nuke： floating render(16個)，多多精選算圖機10台和些許工作機。  
    - vr: 調查中...  


## 肆.智崴目前的pool設定
- 目前的規劃是三種性質做設定，依照緊急程度，依照專案優先度，依照電腦等級。
    - **緊急程度：** pool的最前面為\_\_emergency__，其次，效能強的算圖機10台emerg和工作機數台emerg_bullpen，pool的最後面為research。<font color="#f00">**選擇emerg的時機為排除萬難就是急著要交檔的救護車緊急通道，或是圖算很快不太會影響其他人的情況。**</font>**選擇research的時機為測試或研究使用，優先讓給其他專案pool先算**，博愛座的概念(沒人坐，你可以坐)。  
    - **專案優先：** 會跟PM們溝通並做確認哪個專案比較需要先算出來，決定先後順序。目前順序就是**sjia,ach,fotw**。  
    - **電腦等級：** 目前有10台神等級的算圖機器大家搶著要用，其餘user工作機的算圖大家興致缺缺，**所以算圖機最前面有個XXX pool**，**user工作機最前面有個XXX_bullpen pool(牛棚)**，例如:如果算圖急到牛棚也要跟著下海，submit job就可以pool指定emerg，second pool指定emerg_bullpen。如下圖所示。  
![](https://i.imgur.com/K3TRkjP.png)  
或是指定專案時，優先算10台算圖機，算圖機搶完的話就撿剩下的工作機算圖。  
![](https://i.imgur.com/YdZocQ6.png)

- 目前pool設定列表
    - 算圖機： emerg，aot，focn，fotw，reserch
    - 工作機： emerg_bullpen，aot_bullpen，ach_bullpen，fotw_bullpen，reserch
- 
    :::info
    課後小練習:
    算圖機的pool順序公式:  <font color="#f00">\_\_emergency__，emerg，眾多專案排序，reserch。</font>
    工作機的pool順序公式:  <font color="#f00">\_\_emergency__，emerg_bullpen，眾多專案排序_bullpen，reserch。</font>
    ```graphviz
    digraph hierarchy {

                    nodesep=1.0 // increases the separation between nodes
                    rankdir=LR
                    node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour
                    edge [color=Blue, style=dashed] //All the lines look like this

                    __emergency__->{emerg emerg_bullpen}
                    emerg->{眾多專案排序}
                    眾多專案排序->{reserch}
                    emerg_bullpen->{眾多專案排序_bullpen}
                    眾多專案排序_bullpen->reserch_bullpen
    }
    ```
    :::

- 以上submit 設定怎樣的pool，請摸著良心submit job，公道自在人心。  

## 伍.未來彈性的調整
- 

## 陸.一些後續碎碎念...
- 送算圖 **"FFmpeg"**、**"FFmpegImgMultiRender"**、**"ImageMagic"** 時，**Group**可以選擇**None**。  
    - Group的**None**是匡列所有deadline worker上線的電腦，無須設定。  
    - 因為上述3套軟體都是放在NAS(server)，是免安裝，所以任何deadline上線和可以連線NAS的電腦接可加入算圖。  
- 送算圖時**Pool一定要選擇指定內容**，**不能選None**。Second Pool選None是可以的。(選pool 選none會壞了遊戲規則)  
    - pool None是預設最後一個順位的，是看不見的。(下表用刪除線代表)  
    - 想像一個狀況，同事A和B各丟了一個Job，同事A的算圖很急要，同事B算圖不急。  
    - 同事A送算團第一個Pool設定了emerg，依下表的設定就會先搶**所有的效能強的算圖機**，Second Pool選擇了emerg_bullpen，也意思就是搶光了算圖機，再撿剩下的效能普通的工作機；同事B送算團Pool跟Second Pool都設定了None，目的是撿剩下的。  
    - 依上面情況，當兩個job同時在跑會造成一個悲劇...同事A拿到的全部都是算團機器，工作機全部都被同事B拿走。並非預想的同事A算圖機全拿，工作機也拿到滿，工作機剩餘的才給同事B。  
    - job在搶機器的流程是，同事A和B的job pool先比較完並分完機器，再去比較job的second pool去分機器。依照上面狀況deadline的流程就會這樣跑：  
        1. 同事A的job因為pool設定emerg，所以優先搶走算圖機。  
        2. 同事B的job因為pool設定none，因為算圖機搶光了，所以只能抓工作機的最後順位none。  
        3. 同事A的job因為second pool設定emerg_bullpen，但第2步驟已經先被強佔走了，所以沒有機器可以抓。  
        4. 同事B的job因為second pool設定none，因為沒機器，也就只能再排隊。  
        
    
    | Machine  | Assigned Pools | 
    | -------- | -------- |
    | 算圖機    | \_\_emergency__，emerg，aot，focn，kls，reserch，~~*None*~~     |
    | 工作機    | \_\_emergency__，emerg_bullpen，aot_bullpen，focn_bullpen，kls_bullpen，reserch，~~*None*~~     |

- License Limit要設定正確。  
    - 假如有20台算團機，maya_vray license數量上限是10台。同事A先丟了nuke Job，並設定錯了成maya_vray limit，搶了7台算圖機；同事B後丟了maya_vray Job，並設定正確的maya_vray limit。這樣會導致一個結果，同事A占了7台電腦算nuke，dealine maya_vray license limits的數量也同時增加為數量7(不管你是丟什麼類型job，只認你指定的limit)，這樣就會導致後來同事B只能拿到3台機器算圖而已(10-7=3)。  
    - 呈上面案例，如果同事A設定對的nuke limit，一樣可以先搶到7台機器，後面同事B丟的nuke job就可以正常的拿到10台機器算圖。  
    - 如果你丟的job類型是沒有License的限制，就請勿指定License Limits。影響到其他正在使用的license數量統計。  