Technology

ทำไม M1 ใช้งานแล้วรู้สึกลื่นกว่า ? เพราะ QoS นั่นเอง

By Arnon Puitrakul - 17 ธันวาคม 2021 - 1 min read min(s)

ทำไม M1 ใช้งานแล้วรู้สึกลื่นกว่า ? เพราะ QoS นั่นเอง

เราว่าหลาย ๆ คนที่ได้ลองใช้งานตัว M1 มาก่อน น่าจะรู้สึกอะไรบางอย่างแน่ ๆ ว่ามันลื่นกว่าการใช้งานบน Intel Mac หรือแม้แต่เครื่อง PC อื่น ๆ ที่เราใช้งานมา ทำไมโปรแกรมมันโหลดเร็วมาก ๆ ทำไมกดปุ๊ปมาปั๊บ ปั๊บ ๆ ปุ๊บ ๆ มาก ๆ ไม่เหมือนกับเครื่องก่อนหน้าของ Apple เองเลย ส่วนนึงเป็นเพราะ QoS เลย วันนี้เราจะมาลองดูกันว่า มันเข้ามาช่วยอะไร ทำไมมันถึงลื่นได้ขนาดนั้น

SMP vs AMP

SMP vs AMP Processor Types

โดยทั่วไปแล้ว เครื่องคอมพิวเตอร์ Desktop ส่วนใหญ่ที่เราใช้ทำงานกัน มันจะออกแบบ CPU มาแบบ SMP (Symmetric multiprocessing) หมายความว่า แต่ละ Core ของ CPU จะมีความสามารถ และ ความเร็วเท่า ๆ กันเลย ทำให้เวลา OS มันเอางานไปแจกให้ CPU แต่ละ Core มันไม่ต้องมานั่งคิดเลยว่า ใครทำอะไรได้เร็วหรือช้าอะไรยังไง เพราะทั้งหมดมันเท่ากันหมดเลย

แต่สิ่งที่ M1 ทั้งหลาย และ Intel Core Gen 12 เป็น เราเรียกมันว่า AMP (Asymmetric Multiprocessing) หมายความว่าในแต่ละ Core ของ CPU มันจะมีความไม่เหมือนกันอยู่ ตัวอย่างเช่น M1 เขาจะมี 4 Performance Cores และ 4 Efficiency Cores หรือที่ Apple เรียกว่า P-Core และ E-Core ตามลำดับ ส่งผลให้ เวลา OS มันแจกงานเข้าไป มันจะต้องสนใจด้วยว่า Core ที่มันมี ตัวไหนมันเป็น P หรือ E Core เพื่อให้มันได้ประสิทธิภาพสูงสุด ไม่ใช่การแจกแบบทุก Core เท่าเทียมกัน

CPU ที่แรงขึ้น ไม่ได้หมายความว่าจะลื่นกว่าเสมอไป

หลาย ๆ คนมีความเข้าใจที่ผิด ๆ ว่า ถ้าเครื่องเราแรงขึ้น เวลาเราใช้มันจะลื่นขึ้น โปรแกรมทำงานได้ไวขึ้นเสมอไป เรายกตัวอย่างง่าย ๆ เลย ฝั่งโทรศัพท์ที่เป็น Android มีพวก RAM มี Processor ที่แรงมาก ๆ โอเค CPU อาจจะไม่เท่าฝั่ง Apple แต่ทำไม ฝั่ง iOS และ iPad OS เวลาเราใช้งาน มันถึงรู้สึกว่า ลื่นกว่า เปิด App หรือทำงานอะไรก็ตามมันลื่นกว่าเยอะมาก ดังนั้น การที่ CPU มันแรงขึ้น ไม่ได้บอกว่า มันจะทำให้ประสบการณ์ใช้งานดีขึ้นเสมอไป นอกจากนั้น มันยังมีปัจจัยอื่น ๆ ด้วยนะ เช่นการออกแบบ Animation (ดูเหมือนแปลก ๆ แต่มันเกี่ยวนะ มันทำให้เรา รู้สึก ว่ามันลื่น หรือกระตุก ได้เพราะเรื่องนี้เหมือนกัน)

อีกหนึ่งตัวอย่างคือ Internet เราอาจจะเคยเจออาการที่ เมื่อเราใช้ Internet พร้อมกันทั้งบ้าน เยอะ ๆ เลย เช่นสักคนในบ้านโหลด Bittorrent หรือไฟล์ใหญ่ ๆ อยู่ แล้วคนข้างล่างนั่งดู Netflix อยู่ คนที่โหลดไฟล์ใหญ่ ๆ ก็ไม่ค่อยรู้สึกอะไรเท่าไหร่นะ แค่ความเร็วมันอาจจะมีแกว่งบ้างเล็กน้อย แต่คนที่ดู Netflix บางที อาจจะเจออาการกระตุกบ้างอะไรบ้าง เลยทำให้เขาไปเพิ่มความเร็ว Internet แต่ปรากฏว่า ปัญหานี้ก็ไม่ได้หมดไปเลย นั่นเป็นเพราะสุดท้ายเราเพิ่มแล้ว ฝั่งคนที่โหลดไฟล์ใหญ่ ๆ มันก็จะโหลดเร็วขึ้นแย่ง คนที่ดู Netflix อยู่ทำให้มันกระตุก

เราจะเห็นว่า ความต้องการของ 2 งานนี้ไม่เหมือนกันเลย คนที่โหลดไฟล์ใหญ่ ๆ เขาต้องการความเร็วที่เร็วที่สุดเท่าที่จะเป็นไปได้ เพื่อให้โหลดไฟล์ได้เร็วขึ้น แต่คนที่ดู Netflix ไม่ได้แคร์ว่าจะได้ความเร็วสูง ๆ แต่ต้องการความเร็วที่เสถียร เพื่อไม่ให้ไม่ต้องรอ Buffer ระหว่างที่เราดูนั่นเอง

ถ้าเรากลับไปดูที่ฝั่งของ CPU เอง เราก็มี Task ให้มันทำเยอะมาก ๆ ไม่ว่าจะเป็น Task ที่เรามองเห็น อย่างเราเปิดโปรแกรมนั่นนี่ มันก็ต้องมีการประมวลผล หรือ Task ที่เรามองไม่เห็นอย่างพวก Background Tasks เช่น Time Machine Backup อะไรพวกนั้นที่มันทำแบบไม่ได้แสดงขึ้นมาบนหน้าจอมาให้เราดู บางงาน มันก็กินทรัพยากรหนักมาก ๆ เหมือนกับคนที่โหลดไฟล์ใหญ่ ๆ บางคนบอกว่า ชั้นไม่ได้ใช้เยอะหรอก แต่ชั้นต้องการเดี๋ยวนี้ แล้วทำยังไงละ เราถึงจะใช้ทรัพยากรคือ CPU ที่เรามีอยู่อย่างจำกัด แต่ตอบสนองทุก Process เพื่อให้มันใช้เวลาน้อยที่สุดได้ละ

QoS (Quality of Service) คือตัวช่วยที่ดี

OS Job Scheduling Algorithms (FCFS, Round Robin)

ในเมื่องานมันมีมากกว่า CPU Core ของเราแน่นอน ถ้าเราลองเปิดใน Activity Monitor ดู เราจะเห็น Process เพียบเลย แน่นอนว่า มันมากกว่า CPU Core ของเราแน่นอน ดังนั้น เราจะต้องทำการ Schedule หรือจัดเวลา เพื่อให้แต่ละ Process ได้เข้ามาใช้งานแล้วก็ออกไป นั่นเป็นหน้าที่พื้นฐานของ Operating System (OS) อยู่แล้ว แต่การ Scheduling มันมีหลายรูปแบบมาก ๆ เช่น Round robin, Shortest next job (SNJ) และ First come first serve ต่าง ๆ มากมาย ซึ่งแต่ละ OS มันก็จะมีวิธีในการจัดการที่ไม่เหมือนกัน แต่ไม่ว่าจะเป็นวิธีไหนก็ตาม มันไม่ได้สนใจว่า งานมันจะสำคัญหรือไม่สำคัญอะไรยังไง มันแค่เป็นการจัดเรียงแบบปกติเท่านั้น ทำให้เราต้องการอะไรบางอย่างมาเพื่อการันตีว่า สิ่งที่เราให้ความสำคัญ มันจะต้องเสร็จก่อน หรือความสามารถในการ ลัดคิว และ เลือกงานที่จะลัดคิวนั่นเอง

เรื่องนี้ QoS (Quality of Service) เข้ามาช่วยเราเลือกว่า ใครควรจะไปทำก่อน ใครจะได้ไปก่อนซึ่งมันก็จะมีหลายวิธีให้ใช้อีก ขึ้นกับความต้องการของคนที่คิด OS เลยว่า เขาอยากจะทำมาในลักษณะแบบไหน ซึ่งใน macOS เอง มันจะใช้อยู่ 3 เรื่องใหญ่ ๆ ในการตัดสินใจว่ามันจะไปลง P-Core หรือ E-Core คือ ข้อมูลที่ App ให้มา (ไว้เดี๋ยวเรามาดูกัน), Workload ของ App นั้น ๆ ว่า มันใช้งานหนักแค่ไหน และสุดท้าย การทำงานของระบบในตอนนี้ว่ามันกำลังทำอะไรอยู่

เช่นเราบอกว่า App ไหน หรือ Process ไหนเน้นใช้งานบ่อย ๆ แต่ใช้งานเบา ๆ ไม่เยอะ มันก็อาจจะสลับไปไว้ใน E-Core เพื่อให้มันกินพลังงานน้อยลง นั่นทำให้ Battery ของเราอยู่ได้นานขึ้น หรือตรงข้ามกัน งานไหนที่มันใช้ Performance เยอะ ๆ เลย เช่น การทำรูปภาพ หรืองาน Render Video ต่าง ๆ มันก็จะเอามาใช้งานใน P-Core เพื่อให้งานมันเสร็จเร็วนั่นเอง

ที่เราค้างไว้บอกว่า App สามารถให้ข้อมูลได้อีกว่า ตัว Process ที่กำลังทำงาน มันเป็นงานแบบไหน เพื่อช่วยให้ QoS บน macOS สามารถตัดสินใจได้ดีขึ้น โดยมันจะแบ่งออกเป็น 4 ประเภทใหญ่ ๆ นั่นคือ User Interative, User Initiated, Unity และ Background เราขอไม่เล่าในลายละเอียดละกันว่า มันต่างกันอะไรยังไง ไม่งั้นมันจะยาวมาก

แต่สิ่งที่เรารู้จากตรงนี้คือตัว App ไม่ได้มีสิทธิ์ในการเลือกนะว่า มันจะได้ไปอยู่ใน Core ไหน หน้าที่ในการเลือกมันขึ้นกับตัว OS เองที่ทำการ Scheduling ให้เข้ากับการทำงานปัจจุบันของเครื่อง สุดท้าย เราก็จะได้การทำงานที่ลื่นที่สุด ในขณะที่เรายังคงใช้พลังงานน้อยที่สุดอยู่ผ่านการใช้ E-Core

M1 QoS Scheduling Core in Playing 4K HDR YouTube Video

ตัวอย่างเช่นการเปิด Video บน Safari ถ้าเราดูจากรูปด้านบน เราเปิด YouTube ที่เป็น 4K HDR หน้าต่างเดียวเลย น่าจะทำให้มันมีใช้ CPU แบบพอเห็นได้บ้าง เราจะเห็นเลยว่า CPU Utilisation ของ E-Core ทั้งสองของ M1 Max มันมี Utilisation หมดเลย ต่างจาก Core อื่นที่รันอยู่นิดหน่อย นั่นเป็นเพราะ ตัว Scheduler มันไปเลือกให้ YouTube รันอยู่บน E-Core เพราะงานพวกนี้ E-Core ก็อยู่ และเพื่อให้ประหยัดพลังงานนั่นเอง

สรุป

สาเหตุนึงที่ M1 และ macOS มันใช้งานแล้วลื่นมาก ๆ  ในขณะที่ใช้พลังงานน้อยมาก ๆ ส่วนหนึ่งนั่นเป็นเพราะการทำ Scheduling และ QoS ที่มีประสิทธิภาพ นั่นเป็นประโยชน์ของความที่ CPU และ OS ถูกสร้างโดยที่เดียวกัน ทำให้เราได้การ Integration ที่เนียน และทำงานไปด้วยกันได้อย่างมีประสิทธิภาพสูงสุด ในแบบที่เจ้าอื่น ๆ ทำไม่ได้นั่นเอง นี่แหละเราว่ามันเป็น Key ของความ Apple ที่ถึง Hardware มันจะสเปกต่ำ แต่ Apple เองก็รู้จัก Chip ของตัวเองดี ทำให้รีดประสิทธิภาพจากมันได้สูงที่สุดนั่นเอง