[PRMan Memo page 5: alfred Basic]
Render Farm
ในการ render สำหรับงานจริง ต้องการการจัดการที่ดีเกี่ยวกับการใช้ทรัพยากรที่มีอย ู่เพิ่อให้สามารถใช้งานเกิดประโยชน์สูงสุด เนื่องจากการ render งาน production มักใช้เวลา นานในการคำนวณ ในสตูดิโอส่วนใหญ ่มักจะสร้าง Network ขึ้นมาในบริษัท โดยใช้ระบบ LAN หรือ WAN (ขนาดใหญ่) อาจจะมีDomain หรือ ไม่มีDomain เราสามารถเขียน software ขึ้นมาเพื่อกระจายงานออกไปให้เครื่องต่างๆใน Network ช่วยกันคำนวณ เราเรียกระบบแบบนี้ว่า Render Farm
สำหรับ Maya โดยตัวเองแล้ว ไม่มีsoftware ที่ใช้ในการจัดการเกี่ยวกับ Network Rendering จึงมักจะเขียนขึ้นเอง หรือไม่ก็ใช้งาน software ที่เขียนขึ้นมาขายแยกต่างหาก แต ่สำหรับ RAT แล้วมีalfred ถือเป็น software ที่สามารถจัดการกับ Network Rendering ขนาดใหญ ่ได้ดีมาก
alfred Overview
alfred ออกแบบมาเพื่อจัดการกับการสั่ง render ของผู้ใช้จำนวนมากจึงมีการแบ่งงานออกเป็นหลายส่วน แต่ละส่วนก็รับหน้าที่แตกต่างกันออกไป และมีการติดต่อสอสารกันอย่างเป็น ระบบ

maitre_d
จากภาพประกอบเราจะเห็นเครื่อง server หนึ่งเครื่อง โดย server ตัวนี้มีservice (deamon) ที่ชื่อว่า maitre_d ทำงานอยู่บนเครื่อง maitre_d มีหน้าที่รับคำร้องขอใช้เครื่องจาก dispatcher และพิจารณาว่าเครื่องไหนว่างและมีpriority สูงสุด ก็จะส่งรายชื่อเครื่องเหล่านั้นกลับไปให dispatcher ใช้เครื่องเหล่านี้render maitre_d อาจจะมีหลายเครื่องได้แต ่ควรจะเปิดใช้งานเพียงเครื่องเดียวในการทำงาน เพื่อไม่ให้เกิดการซํ้าซ้อนกันของการเรียกใช้เครื่อง ในระบบที่มีขนาดไม่ใหญ่เช่นเครื่องไม่เกิน 10 เครื่องอาจจะไม่ต้องมีmaitre_d ก ็ได dispatcher สามารถจัดการหาเครื่องเองได ้แต่ถ้ามีdispatcher หรือผู้เรียกใช้งานหลายตัว จะทำให้การจัดการกับเครื่องที่มีอย ู่เพื่อแจกจ่ายไปใช้สำหรบ render ไม่มีประสทธิภาพเท่าที่ควร เรียกว่า Chaos Mode
dispatcher
รับ worklist จาก software หรือจากเราเขียนเอง ติดต่อกับ maitre_d เพื่อขอเครื่องที่จะใช้ในการ render และเรียกตัว render เพื่อ render ฉากนั้นๆ dispatcher สามารถเข้าคิว งานเพื่อ render ได ้เช่นเราต้องการ render5 pass ใน shot เดียว เราสามารถสั่ง render 5 ครั้งโดยแต่ละครั้งตั้งค่าไม่เหมือนกัน หลังจากสั่ง render แต่ละ pass ก็จะเข้าคิวกัน เพื่อรอ render ที่ละอันๆ โดยปกติdispatcher จะสามารถเปลี่ยนแปลงแก้ไขและดูการทำงานได้จาก monitor
monitor
เป็น UI (User Interface) สำหรับใช้จัดการหลายๆอย่างเช่นเรียงคิวของงาน ตั้งค่า Master Schedule ติดตามงานที่ส่งไป render จริงๆแล้วเราสามารถเขียน monitor ขึ้นมาใช ้งานเองก็ได้ครับถ้าคิดว่า monitor ที่RAT ให้มา (เขียนด้วยภาษา script tk) ทำงานได้ไม่ดีพอ ถ้าเป็นระบบ network ขนาดใหญ่และมีDomain เราอาจจะเขียน monitor ที่ทำงาน บน web broweser ก็ได ้แต่สำหรับงานทั่วไป ใช้งาน monitor ที่มีมาให้ก็ใช้งานได้ดีครับ
nimby
nimby (Not In My Back Yard) เป็นโหมดหนึ่งของ alfred ที่ใช้เพื่อบอกกับ maitre_d ว่าเครื่องนี้ไม่รับงาน หรือรับเฉพาะช่วงที่มีscreensaver ขึ้นเท่านั้น สำหรับเครื่องที่ปกติใช ้งานอื่นและไม่ต้องการถูกใช้เครื่องเพื่อ render ก็เปิดตัวนี้เอาไว้ครับ
Tiny Network Example
มาลองดูตัวอย่างง่ายๆกันครับ สมมติว่าผมมีเครื่องสองเครื่องต่อ LAN ด้วย protocal TCP/IP โดยมีชื่อเครื่องคือ xteapot และ xteapotlaptop (ต่อ LAN ระหว่างเครื่อง desktop และ laptop)
Start alfserver และ maitre_d
ก่อนอื่นเราต้อง start หรือเปิด service alfserver ของทั้งสองเครื่องซะก่อน และเปิด maitre_d เครื่องใดเครื่องหนึ่ง โดยไปที่Control Panel >>Performance and Maintainance >> Administrative Tools >> Services

หาหัวข้อ Pixar...

คลิกขวาแล้วก ็start ครับในกรณีนี้ผมให้เครื่อง xteapot เป็น maitre_d ก ็start maitre_d ด้วย แต่เครื่อง xteapotlaptop ไม่ต้องครับ

หลังจาก start แล้วก็ลองเปิด task manager ดูครับ (กด CTRL+ALT+DEL) จะมีalfserver.exe และ alfcmdline.exe ขึ้นมา
ตั้งค่า alfred.ini
ไปที่Start >> All Programs >> Pixar >> Renderman Artist Toold >> Configuration >> alfred.ini

alfred.ini เป็น file ที่เก็บการตั้งค่าต่างๆของ alfred เราต้องตั้งค่ากันนิดหน่อยครับ

บรรทัดล่างสุด ตั้งชื่อเครื่องที่เปิดใช้งาน maitre_d ครับ ในกรณีนี้คือ xteapot

หา บรรทัดที่ชื่อ set appPaths(prebuiltHostnameFile) และตั้งให้เป็นที่อยู่ของรายชื่อเครื่องใน network ของเราครับ ซึ่งตอนนี้ยังไม่มีก็ใส่ลงไปครับ ว่าอยากให้อยู่ที่ไหน ปกติควรจะอยู่ใน network drive ครับ เครื่องในระบบจะได้สามารถอ่าน file เดียวกันได้เหมือนกันหมด เช่นกรณีนี้คือ y:/xhost.txt อย ู่ใน drive y ชื่อ xhost.txt
สร้าง file xhost.txt
หลังจากตั้งค่าเสร็จแล้วก็ต้องสร้าง file ชื่อ xhost.txt ที่เราตั้งไว้ใน alfred.ini โดย file นี้เป็น text file ที่มีรายชื่อเครื่องในระบบ network ต่อ 1 บรรทัด

มีสองบรรทัดครับ เนื่องจากมี2 เครื่อง xteapot และ xteapotlaptop
ตั้งค่า Master Schedule
เปิด alfred ใน RAT ขึ้นมาและไปที่Scheduling >> Master Schedule ...

เป็นการแก้ไข file Master Schedule ที่maitre_d ใช้ในการจัดการกับเครื่องต่างๆที่มีใน network

กด Include เครื่องที่อยากใช้งาน render เข้าไปด้านซ้ายครับ

ตรงนี้เราสามารถตั้งค่า Slots (CPUs) คือจำนวน CPU ที่ต้องการใช้สำหรับเครื่องนี้เช่นกรณีที่เป็น Dual CPUs เราก็อาจจะตั้งเป็น2 ก็ได้ครับ หรือถ้า CPU เป็น Pentium 4 HyperTread ก็ลองตั้งค่าเป็น 2 ดูครับ อาจจะทำให render เร็วขึ้น ส่วนค่า Desirability (UDI) เป็นนํ้าหนักที่maitre_d ใช้ช่วย ในการตัดสินว่าจะใช render เครื่องไหน เครื่องที่มีUDI มากจะถูกใช้งานก่อน
กดปุ่ม Advanced ...

ตรงนี้เป็นการจัดการเกี่ยวกับ Group ต่างๆ ว่าใคร สามารถใช้เครื่องไหนได ้ก่อนใคร และเมื่อไหร ่ผมจะยังไม่พูดถึงรายละเอียดตรงนี้ครับ เนื่องจากเรามีแค 2 เครื่องเท่านั้นจึงไม่มีความจำเป็นตอนนี้
กดปุ่ม pings ...

ตรงนี้จะตั้งค่าย ping เปลี่ยนจาก 1.25 เป็น 2 ตัวเลบตรงนี้คือ ค่าที่ใช้ประเมินว่า เครื่องมีทรัพยากร (CPU, RAM, Network, Disk) ว่างมากพอที่จะใช ้งานได้รึเปล่า ตั้งแต 2 ขึ้นไปก็ถือว่าเครื่องไม่ว่าง มีการใช้งาน น้อยกว่า 2 ก็มีการใช้งานบ้าง แต่ไม่มาก ตรงนี้ตั้งเป็น 2 เนื่องจาก 1.25 จะน้อยเกินไป ถ้า เครื่องมีRAM หรือ HardDisk น้อย มักจะมีค่า ping มากกว่า 1.25 alfred ก็จะเตือนว่า "Server busy" หรือ "Server in use" และไม่มีการส่งงานไป render สำหรับเครื่องนั้นๆ
ทดลอง render
ก่อนจะ render ก็ต้องตั้งค่า render global ก่อนนิดนึงครับ

ในหัวข้อ Spool >> Job Setup เลือก renderer เป็น NetRender เท่านี้เองครับ แล้วก็กด render ได้เลย

monitor ก็จะแสดงขึ้นมาว่ามีงานอะไรที่รอ render อยู่บ้างในกรณีนี้ก็มีแค่อันเดียว เนื่องจากสั่ง render ไปแค่ครั้งเดียว แถบสีนํ้าเงินก็คือ progress bar หรือปริมาณงานที่สำเสร็จ ถ้าเรากดเครื่องหมาย สามเหลี่ยม สี้นํ้าเงินก็จะเห็นรายละเอียด

กล่องสี่เหลี่ยมเล่านี้ก็คืองานต่างๆที่ต้องทำในการ render เป็นสีเทาก็คือเสร็จแล้ว สีเขียวยังไม่เสร็จ และสีส้มคือ เกิด error ขึ้น
ใช้งาน nimby
nimby เป็น mode หนึ่งของ alfred ที่เป็นตัวบอก maitre_d ว่าเครื่องนี้ไม่ได้มีไว render

หลังจากเปิดขึ้นมาเราก็จะเห็น ตัวเลือก ว่าต้องการรับงานหรือไม ่หรือรับเฉพาะช่วงที่screensaver ทำงานเท่านั้น
ตั้งค่าให alfserver และ maitre_d start เมื่อ computer start
ปกติแล้วเราสามารถตั้งใน service ให automatic ได ้แต่บางครั้งถ้าเครื่องช้า License Server อาจจะเปิดช้าเกินไปทำให alfserver และ maitre_d เปิดไม่ได ้มีหลายวิธีครับที่สามารถแก้ปัญหานี้ได้เช่นเขียน คำสั่งเปิดโดยตรงใน autoexec.bat แต่ผมจะเขียน Batch File ตัวใหม่ให้ชื่อว่า alfredstart.bat

และเขียนคำสั่งเพื่อเปิด service

ในกรณีนี้เป็นเครื่อง xteapot ต้องมีการเปิด maitre_d ด้วย ก็จะเป็น
net start "Pixar License Server"
net start "Pixar Maitre-D Server 5.5.1"
net start "Pixar Alfred Server 2.5"
โดยเราสามารถดูชื่อได้จาก services หรือไม่ก็เปิด regedit ที่
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Pixar Alfred Server 2.5 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Pixar License Server HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Pixar Maitre-D Server 5.5.1
ดูที่DisplayName

แล้วก็ทำ shotcut นำ shotcut ไปวางไว้ที่startup ก็เรียบร้อยครับ

สำหรับเครื่อง xteapotlaptop ก็ทำเหมือนกัน แต่ไม่ต้อง start maitre_d
Small network setup
ลองมาดูการต่อ LAN กันนิดนึงครับ

สามารถใช้ระบบ LAN ที่ใช TCP/IP protocal อย่างง่ายในการสร้าง Network ขึ้นมาใช้งานได้ครับ
ตัว Server ซึ่งรับหน้าที่ในการรัน maitre_d และทำตัวเป็น File Server ไปในตัวควรมีความสามารถเป็น Server ที่ดีครับ เป็นต้นว่า สามารถรับโหลดคำร้องต่างๆได้พร้อมกันทีละ มากๆ มีhard drive ความเร็วสูง มีRAM เยอะ มีchache เยอะ ซึ่งก็เป็นคุณสมบัติที่Server ที่วางขายทั่วไปตามท้องตลาดมีครับ อาจจะแยกเป็น File Server อีกหนึ่งตัว หรือ หลายตัวก็แล้วแต่เพื่อลดความหนาแน่นของ ข้อมูลที่มาจาก และ ไปยัง Server แค่ตัวเดียวลง ถ้าไม่ได้ทำขนาดใหญ่มาก เช่นมีเครื่องในระบบแค่ไม่เกิน 14 เครื่อง ก็ใช้เครื่องธรรมดา และลง Windows XP Professional ไม่ต้องเป็น Server ก็ได้ครับ (XP Pro รับการ Connect พร้อมๆกันได้แค 14 เครื่อง) ถ้ามากกว่านี้ก็ควรใช Window 2000 หรือ 2003 Server ครับ อาจจะเป็นเครื่องแบบ Server Class หรือไม่ก็ได ้แต่ถ้าเป็น Server ได้ก็ดีครับ
ตัวเครื่องที่ใช้งานควรแบ่งเป็นกลุ่ม และ แบ่งวง LAN ให้ชัดเจน เช่นเครื่องที่ต้องการใช render อย่างเดียว อาจจะเป็นเครื่องที่เรียกว่า Render Node (เครื่องที่ออกแบบมา Render อย่างเดียว บางครั้งอาจเรียกว่า Render Rack เครื่องแบบนี้ปกติจะมีCPU ที่คำนวณเลขทศนิยมได้ดีมาก และมีcache จำนวนมาก เช่น P4 Zeon หรือ AthronXP มีRAM มากและความเร็วสูง HardDisk เท่าที่ใช้งานได้เร็วพอ และ Display Card ระดับตํ่า บางเครื่องอาจจะออกแบบมาเป็นแบบ Dual CPU หรือ Quad CPU) ควรจัดให้อยู่ในวง LAN ที่สัมพันธ์กัน เช่นถ้ามีซัก 1000 เครื่อง อาจจะแบ่งเป็น 5-10 วงและแจก IP Class C ให้แต่ละวง (เช่น 192.168.0.xxx หรือ 10.0.0.xxx เป็นต้น) ส่วนเครื่องที่ใช้งานก็อยู่อีก วง เครื่องที่ใช้งานอาจจะมีการเปิด alfserver ก็ได้ครับ โดยอาศัย NIMBY เป็นตัวบอกกับ maitre_d ว่าใช้งานได้เมื่อไหร ่
การตั้งระบบควรใช static IP ไม่ควรใช DHCP เนื่องจาก maitre_d และ โหมดอื่นๆของ alfred ต้องการ IP ที่แน่นอนเพื่อให้การทำงาน เป็นไปอย่างมีประสิทธิภาพ เมื่อระบบมีขนาดใหญ่ควรใช้ระบบ Domain Name เข้ามาช่วยเพื่อให้การค้นหาชื่อ และ IP Address เป็นไปอย่างมีระบบ หรืออาจจะใช ้ระบบ NIS (Yellow Page) ของ Unix ก็ได้ครับ ใน การหาชื่อเครื่องเพื่อใช้งาน alfred จะดูจาก file host ที่เราทำขึ้นมา แล้วก็ดูfile c:/windows/system32/drivers/etc/hosts จากนั้นจะใช้คำสั่งต่างๆของ NIS เพื่อค้นหาชื่อ สุด ท้ายก็จะใช ้คำสั่งที่เกี่ยวกับ Domain เช่น nslookup เพื่อค้นหาชื่อ เราเลือกใช้อันใดอันหนึ่งได้ครับ ขึ้นอยู่กับขนาดและการออกแบบ network ของเราเอง
ยังมีอีกหลายอย่างที่น่ารู้เกี่ยวกับ network rendering ครับ ไม่ว่าจะเป็นการเขียน alfred script เพื่อกระจายงานตามที่เราต้องการ การจัดกลุ่มเพื่อกำหนดขอบเขตการใช้งาน หรือ การเขียน software เพิ่มสำหรับ network ที่มีขนาดใหญ ่มีโอกาศจะเขียนถึงอีกครั้ง ถ้าสงสัยหรือติชมก ็mail มาคุยกันได้ครับ
<<Back |