ทีมนักวิจัยจาก University of Waterloo ในแคนาดา ค้นพบการปรับแต่งโค้ดเคอร์เนลลินุกซ์ 30 บรรทัด สามารถช่วยลดการใช้พลังงานในศูนย์ข้อมูลลงได้สูงสุด 30%
โค้ดส่วนนี้เกี่ยวกับวิธีการประมวลผลแพ็คเก็ตของระบบเครือข่าย ซึ่งทีมนักวิจัยพบว่าเดิมทีเคอร์เนลลินุกซ์ประมวลผลได้ไม่มีประสิทธิภาพมากนัก มีปัญหาเรื่อง interruption หรือการถูกขัดจังหวะการทำงานของซีพียู จึงปรับแก้โค้ดเพียงเล็กน้อย (ทีมวิจัยบอกว่าไม่ได้เพิ่มอะไรเลย แค่สลับตำแหน่ง) ช่วยให้ใช้แคชของซีพียูอย่างมีประสิทธิภาพมากขึ้น
งานวิจัยนี้ถูกตีพิมพ์ และนำเสนอในงาน ACM SIGMETRICS 2024 ส่วนแพตช์ตัวนี้ถูกรวมเข้ากับเคอร์เนลเวอร์ชัน 6.13 ที่เพิ่งออกไป
ที่มา - University of Waterloo, Data Center Dynamics
Martin Karsten ศาสตราจารย์ด้าน Systems and Networking ของ University of Waterloo หัวหน้าทีมวิจัยนี้
Comments
เอาจริงๆเรื่องพวกนี้มีอยู่เยอะมาก บริษัททั่วๆไปก็เป็น ใน Software ทำวนลูปซ้ำซอน หรือเขียน CODE แบบไม่ Optimize ส่วนใน Database ก็ไม่ได้ทำ Index บ้าง หรือมี Strategy ในการวางฐานข้อมูลไว้ไม่ดี ที่เคย Optimize code ก็เคยลดพวก Process หนักๆที่เป็นการ Process ข้อมูลทั้งระบบได้จาก 3 ชั่วโมง เหลือ 1 ชั่วโมง แก้ CODE 5 บรรทัดเหมือนกัน
ควรมีทีมไล่ Optimize process ต่างๆ น่าจะรีดประสิทธิภาพได้มากขึ้น
มันเป็น technical dept ที่มีหมดทุกที่แหละ ส่วนใหญ่ก็โดนจำกัดด้วยเวลา ไม่ก็งบประมาณ
พอผ่านไป ของมันทำงานได้อยู่แล้ว ก็ไม่มีใครอยากจะแก้ให้มันพัง
อันนี้น่าจะเป็น point หลักเลยครับ บางทีแก้ไขไป จากใช้งานได้ปกติเป็นทำให้พัง ยิ่งระบบที่มีความสำคัญระดับ Critical ด้วย
แสดงว่าไม่ได้เขียน test เอาไว้
ใช่เลยครับมันแพงคนก็ไม่พอด้วย งานนั้นเสร็จถ้ามันอยู่ในระดับที่รับได้ก็ไปทำอย่างอื่นใครจะอยากไปลงทุนยิ่งอะไรที่ไม่ใช่ของเอาไปใช้ซ้ำๆหลายที่ด้วย
ไม่จำเป็นครับ เพราะมันเป็นหน้าที่ของคนเขียนครับ
จะให้ code มันดีขึ้น ก็ต้องหาทางปรับปรุงคนเขียนครับ
คนเขียนหลายๆคนก็ไม่ได้ว่างมานั่งเทสมานั่งปรับ มีคิวงานอย่างอื่นล้น หรืออาจจะไม่ได้เก่งด้านนี้
งานมันไม่ได้จำเป็นตายตัวต้องเป็นหน้าที่คนเขียนอย่างเดียวหรอก ไม่งั้นจะทำงานกันเป็นทีมทำไมไม่เขียนไปคนเดียวเลย
ถ้าเลือกที่จะเขียน code แล้ว
- เขียนให้มีคุณภาพ
- manage เวลา
- หาความรู้เพิ่มเติม
ก็ถือเป็นหน้าที่/จรรยาบรรณ ที่ต้องทำ เพราะเราเลือกเอง
เพราะถ้าเราไม่ทำ ภาระงานเราจะตกไปอยู่กับผู้อื่น คนที่รับภาระเราไปก็ไม่ได้เงินเพิ่ม กลายเป็นเราเอาเปรียบผู้อื่นอีก
และมันก็จะกลายเป็นต้นตอของปัญหาการเมืองต่างๆ ในองค์กร
ระดับเขียน Kernel ใช้กันเกือบทั่วโลกแล้วคุณบอกว่าไม่ดีนี่ไม่น่าจะใช่นะครับ แบบนั้นโปรแกรมเมอร์ทั่วไปจะต้องอยู่ระบบไหนเนีย😆😆😆
จากประสบการณ์ทำงาน การ Optimize ตั่งแต่แรกไม่ wokr ผู้ใช้ด่าใช้เวลาในการพัฒนานาน และ คนให้ทำไม่เห็นค่าเพราะมันเร็วเกินไป แปลกพออีกทีมมาทำปัญหาเยอะเยะแต่พัฒนาออกได้เร็วแล้วค่อย Optimize ตามหลังด้วย MA กับ Work กว่ามาก
เห็นมา 3 โครงการล่าสุด ผมดูแล้วมันก็ work จริงๆ เพราะในเวลาจริงมีแต่การแข่งขัน ในส่วนที่ไม่สำคัญมากไม่มีใครเค้ามานั่งรอให้เรา Optimize ให้ครบทุกส่วนหรอก แล้วยิ่งใช้เวลาพัฒนานาน requirement ก็จะเปลี่ยนเรื่อยๆ ท้ายสุด คนจ้างที่หัวหมอก็จะบอกว่าทำแค่นี้เอง
คือถ้าเขียน code ให้เป็นมาตฐาน แยกส่วนให้ชัดเจน ถ้ามีการปรับหรือแก้ไขตามหลังมันทำได้ไม่ยาก แต่แค่ต้องใช้แรงทำส่วน Optimize เพิ่ม อย่างในข่าวก็เพียงแค่สลับตำแหน่ง code แต่คิดดูว่าจะออกมาสูตรนี้ได้ ใช้เวลาหลังจากออก code มาตั่งเท่าไหร่
คิดว่า context ของ reply คุณ
มันไม่ตรงกับ reply ของผมนะครับ
ตอบผิดที่หรือเปล่าครับ
ศูนย์ใหญ่ๆ Code 30 บรรทัดชุดนี้ น่าจะช่วยลดค่าใช้จ่าย ได้มากๆเลยนะครับ
สมมุติว่าโดยเฉลี่ยแล้วลดการใช้พลังงานลงมาได้ราวๆ 10% ก็ช่วยลดค่าใช้จ่ายได้มากแล้วนะ เพราะศูนย์ข้อมูลนี่ค่าไฟน่าจะมหาศาลกันทั้งนั้น
..: เรื่อยไป
น่าจะแก้โค้ดสัก 50 บรรทัด
ลดได้ 50% หยอกๆ ครับ
ลดการใช้พลังงานในศูนย์ข้อมูลลงได้สูงสุด 30%
อยากรู้ค่าเฉลี่ยด้วย
นั่นก็คือใช้ CPU ในการประมวลผลน้อยลง
เคยเขียนโค้ดนึงทำงาน 11 วิ Optimize ใหม่จนเหลือ 4 วิ แต่พอเป็นงาน robotics ลด latency ให้ต่ำมากๆไม่ได้เนื่องด้วยกลไกของมันและ Back-EMF
จากประสบการณ์ โค้ดต่างๆต้องเน้นทำถูกไว้ก่อน ถ้ามันผิดแล้วเรื่องยาว ส่วนความเร็วมาทีหลัง ไปเน้นเร็วก็ไม่ได้อะไรมาก ตราบใดที่เครื่องยังรับไหวก็ถือว่าใช้ได้