Windows Server 2025 ทำงานได้ดีกว่าบน ARM
(jasoneckert.github.io)- จากการเปรียบเทียบ Windows Server 2025 แบบเวอร์ชวลไลซ์ พบว่าการตั้งค่า guest แบบ ARM64 บน host แบบ ARM64 ทำงานได้เสถียร และยังตอบสนองได้ไวกว่าอย่างรู้สึกได้ทั้งในการเริ่มบริการ การเปิดคอนโซลจัดการ และการประมวลผลงานทดลอง
- VM ทั้งสองเครื่องถูกตั้งค่าให้มี หน่วยความจำ·โปรเซสเซอร์เสมือน·บทบาทที่ติดตั้ง เหมือนกัน และในการวัดผลพบว่าระบบ Snapdragon มีความผันผวนของการใช้ CPU ต่ำกว่า รักษา
Processor Queue Lengthไว้ที่ 0 และบันทึกค่า CPU Wait Time Per Dispatch ได้อย่างสม่ำเสมอ - ในการวัดซ้ำกับ IIS, DNS, การค้นหา Active Directory, การยืนยันตัวตนโดเมน และการทำซ้ำไฟล์ I/O ก็พบว่า Snapdragon X Elite ให้ค่าระยะเวลาที่ทำซ้ำได้ใกล้เคียงเดิมแทบทุกครั้ง ขณะที่ Intel บางรอบเร็วกว่าแต่โดยรวมมีความแปรปรวนมากกว่า
- ผู้เขียนไม่ได้สรุปว่าความต่างเกิดจากสถาปัตยกรรม CPU เพียงอย่างเดียว แต่ชี้ว่าพร้อมกับสตอเรจ หน่วยความจำ การจัดการพลังงาน และคุณลักษณะด้านความร้อนแล้ว ความสม่ำเสมอของ latency และการจัดตารางที่คาดเดาได้มีผลสำคัญกว่าในโหลดเซิร์ฟเวอร์แบบเวอร์ชวลไลซ์
- แม้ x64 จะยังได้เปรียบในเวิร์กโหลดที่เน้นปริมาณงานสูงสุด แต่ในการใช้งาน Windows Server ทั่วไปที่มี งานขนาดเล็กจำนวนมากและไวต่อความหน่วง ความน่าสนใจของ ARM64 เพิ่มขึ้น อย่างไรก็ตามแพลตฟอร์มมาตรฐานสำหรับการสอนยังคงใช้ x64 เนื่องจาก ARM64 ยังไม่รองรับ nested virtualization
สภาพแวดล้อมการทดสอบและเกณฑ์การเปรียบเทียบ
- มีการสร้างสภาพแวดล้อมเสมือนของ Windows Server 2025 บนสองระบบเพื่อเปรียบเทียบ
- ระบบ Intel Core i9 รุ่นที่ 14 บน Windows 11 ที่รันเครื่องเสมือน Hyper-V หลายเครื่อง
- ระบบ Snapdragon X Elite บน Windows 11 on ARM ที่ตั้งค่า Windows Server 2025 แบบเดียวกัน
- เนื่องจาก Microsoft ยังไม่มี ISO ติดตั้งอย่างเป็นทางการของ Windows Server 2025 ARM บนเว็บไซต์ จึงใช้ UUP dump เพื่อสร้างอิมเมจจากเซิร์ฟเวอร์อัปเดตของ Microsoft แล้วติดตั้ง
- Hyper-V VM ทั้งสองเครื่องถูกตั้งค่าให้มี หน่วยความจำ, โปรเซสเซอร์เสมือน, บทบาทที่ติดตั้ง เหมือนกัน
- Snapdragon X Elite คือ ARM64 guest on ARM64 host
- Intel Core i9 คือ x64 guest on x64 host
ข้อสังเกตเบื้องต้นและขอบเขตการตีความ
- สภาพแวดล้อม Windows Server 2025 บนระบบ ARM มีความ เสถียร และ ทำงานได้ปกติ โดยให้ความรู้สึกว่าเร็วกว่าโดยรวมจนอยู่ในระดับ ใช้งานจริงได้
- เริ่มบริการได้เร็วขึ้น
- เปิดคอนโซลจัดการได้เร็วขึ้น
- ใช้เวลาทำงานทดลองสำหรับการเขียนตำราลดลง
- อย่างไรก็ตาม ผู้เขียนไม่ได้สรุปว่าความต่างด้านประสิทธิภาพเกิดจาก สถาปัตยกรรม CPU เพียงอย่างเดียว
- สตอเรจ หน่วยความจำ การจัดการพลังงาน และลักษณะด้านความร้อนก็อาจมีผลต่อผลลัพธ์
- แทนที่จะสรุปว่า “ARM เร็วกว่า” จึงควรตีความบนพื้นฐานของ คุณลักษณะของระบบโดยรวม
- โหลดบริการทั่วไปของ Windows Server มีลักษณะเป็น เธรดจำนวนมาก และเน้น งาน CPU และ I/O ขนาดเล็กแต่เกิดบ่อย
- รวมถึง Active Directory, DNS, DHCP, IIS, บริการไฟล์ SMB/NFS/DFS, Print Services, Certificate Services, Remote Desktop Services, Routing and Remote Access, NPS เป็นต้น
- งานประเภทนี้ไวต่อ latency และ การสลับบริบท และได้ประโยชน์จากประสิทธิภาพที่สม่ำเสมออย่างต่อเนื่อง
ข้อสังเกตเกี่ยวกับความแตกต่างด้านประสิทธิภาพ
- ระบบ ARM ตระกูล Snapdragon มีแนวโน้มให้ ประสิทธิภาพที่ต่อเนื่องและเสถียร มากกว่าการไล่ตามบูสต์คล็อกสูง
- CPU Intel รุ่นใหม่สามารถให้ประสิทธิภาพสูงสุดได้มากกว่าด้วยคุณลักษณะ การเร่งความถี่และการ throttle แบบไดนามิก
- แต่ในโหลดต่อเนื่องหรือโหลดผสม ก็อาจทำให้ความแปรปรวนของการจัดตารางและ latency เพิ่มขึ้น
- ในสภาพแวดล้อมเวอร์ชวลไลซ์ ความแปรปรวนนี้ยิ่งสำคัญมากขึ้น
- ไฮเปอร์ไวเซอร์อย่าง Hyper-V ทำหน้าที่เสมือนตัวจัดตารางฮาร์ดแวร์
- ยิ่งช่วงเวลาการทำงานของฮาร์ดแวร์คาดเดาได้มากเท่าไร การจัดตารางของไฮเปอร์ไวเซอร์ก็ยิ่งให้ผลลัพธ์ที่สม่ำเสมอมากขึ้นเท่านั้น
- ผลดังกล่าวสะท้อนออกมาใน VM และการตอบสนองของบริการภายใน VM
- ยังมีการกล่าวถึงความเป็นไปได้ของความต่างที่ตัว Windows Server ARM64 build เอง
- จาก release note หลายฉบับที่ตรวจสอบทางออนไลน์ เวอร์ชัน ARM64 อาจหลีกเลี่ยง legacy compatibility layer บางส่วน และใช้ไบนารีที่ทันสมัยและปรับแต่งมาแล้วมากกว่า
- จึงอาจเป็น build ที่สะอาดกว่า เวอร์ชัน x64
- อย่างไรก็ตามไม่ได้มีการนำเสนอหลักฐานเชิงลึกของการติดตั้งภายในเพิ่มเติม
การวัดด้วย Performance Monitor
- มีการเพิ่มตัวนับของ Performance Monitor บนโฮสต์ Windows 11 ทั้งสองเครื่องเพื่อวัดผล
\\Processor(_Total)\\% Processor Time- อัตราการใช้ CPU ของทุกคอร์รวมกัน
\\System\\Processor Queue Length- จำนวนเธรดที่กำลังรอเวลา CPU
- หากเหมาะสมที่สุดควร คงไว้ที่ 0
\\Hyper-V Hypervisor Virtual Processor(*)\\CPU Wait Time Per Dispatch- เวลารอเฉลี่ยก่อนที่โปรเซสเซอร์เสมือนจะถูกจัดตารางลง CPU
- หลังจากสร้างโหลดจาก PowerShell ภายในแต่ละ VM แล้วจึงสังเกตผลลัพธ์
- รันลูปไม่สิ้นสุด 8 ชุด ที่เรียก
Get-Processซ้ำ ๆ โดยจัดเรียงผลตามการใช้ CPU และดึง 5 อันดับแรก
- รันลูปไม่สิ้นสุด 8 ชุด ที่เรียก
- จากผลการวัด Snapdragon แสดงรูปแบบประสิทธิภาพที่ ต่อเนื่องและเสถียร
- ความผันผวนของ
% Processor Timeต่ำกว่ามาก Processor Queue Lengthคงอยู่ที่ 0CPU Wait Time Per Dispatchก็เรียบและคงที่เช่นกัน
- ความผันผวนของ
- ระบบ Intel แสดงให้เห็นผลของความแปรปรวนจาก การบูสต์/การ throttle ในตัวชี้วัด
- ความผันผวนของ
% Processor Timeมากกว่า Processor Queue Lengthพุ่งสูงเป็นช่วง ๆCPU Wait Time Per Dispatchก็มีความผันผวนอย่างมีนัยสำคัญ
- ความผันผวนของ
การวัดการตอบสนองของบริการ
- ใช้ Measure-Command ใน PowerShell ของแต่ละ VM เพื่อวัดเวลาของงานบริการทั่วไป
- มีการทดสอบกับเว็บเซิร์ฟเวอร์ IIS
- ทำซ้ำ
Invoke-WebRequest http://localhost -UseBasicParsing | Out-Nullจำนวน 1000 ครั้ง
- ทำซ้ำ
- วัดซ้ำบริการอื่นด้วยวิธีเดียวกัน
- DNS
Resolve-DnsName "domainX.com" -Server 127.0.0.1 | Out-Null
- การค้นหา Active Directory
Get-ADUser -Filter * -ResultSetSize 1 | Out-Null
- latency ของการยืนยันตัวตนโดเมน
Test-ComputerSecureChannel -Verbose:$false
- ไฟล์ I/O
- สร้างไดเรกทอรี
C:\TestFiles - ทำซ้ำ 2000 รอบ โดยสร้างไฟล์ เขียนข้อมูล อ่าน และลบไฟล์
- สร้างไดเรกทอรี
- DNS
- จากการรันซ้ำหลายครั้ง ระบบ Snapdragon ให้ ค่าระยะเวลาที่สม่ำเสมอและทำซ้ำได้ แทบทุกครั้ง
- ระบบ Intel มีความแปรปรวนของผลลัพธ์มากกว่า
- บางรอบก็เร็วกว่าระบบ Snapdragon
- แต่ในกรณีส่วนใหญ่ตามหลัง
- โดยรวมจึงสรุปว่า Snapdragon เหนือกว่าในทุกการทดสอบ
ข้อสรุปสำคัญ
- องค์ประกอบร่วมที่เห็นได้จากทุกผลลัพธ์คือ ความสม่ำเสมอของ latency
- โหลด Windows Server แบบเวอร์ชวลไลซ์ให้ความสำคัญมากกับ การตอบสนองที่รวดเร็วต่อคำสั่งขนาดเล็กที่เกิดบ่อย และ การจัดตารางที่คาดเดาได้
- ในเวิร์กโหลดที่ ปริมาณงานสูงสุด สำคัญ ระบบ x64 ยังมีข้อได้เปรียบที่ชัดเจน
- ในทางกลับกัน หากเป็นสภาพแวดล้อมแบบ Windows Server ทั่วไปที่มี งานขนาดเล็กจำนวนมากและไวต่อความหน่วง ทำงานร่วมกันภายใต้การเวอร์ชวลไลซ์ ความสม่ำเสมอ จะสำคัญกว่าความเร็วสูงสุดล้วน ๆ
- ในบริบทนี้ ARM64 จึงน่าสนใจมากขึ้น
- ARM64 ถูกใช้อย่างแพร่หลายในคลาวด์อยู่แล้ว และยังมีการกล่าวว่ามี อัตราส่วนประสิทธิภาพต่อราคาที่ดีกว่า x64
- ผู้เขียนตั้งคำถามว่า Microsoft ควรพิจารณาเพิ่มสัดส่วนของ ARM64 ในอนาคตของ Windows Server
- ปัจจุบัน Microsoft ยังไม่รองรับ Windows Server on ARM64 อย่างสมบูรณ์
- อย่างไรก็ตามมีการยกตัวเลขว่าในปีที่ผ่านมา 33% ของ Microsoft Azure VM อินสแตนซ์ใหม่ เป็น ARM64 และ Amazon AWS มี 50% เป็น ARM64
การเลือกแพลตฟอร์มมาตรฐานสำหรับการสอน
- สภาพแวดล้อมทดลองสำหรับตำรายังคงใช้มาตรฐาน x64 ต่อไป
- เหตุผลคือการตั้งค่าการทดลองมี nested virtualization อยู่ด้วย
- เนื่องจาก Hyper-V บน ARM64 ยังไม่รองรับ nested virtualization จึงยังไม่สามารถนำ ARM64 มาใช้เป็นสภาพแวดล้อมหลักสำหรับการสอนได้ในตอนนี้
- แม้นักศึกษาจะสามารถปรับวิธีทำการทดลองเพื่อหลีกเลี่ยงข้อจำกัดได้ แต่หนึ่งในเป้าหมายของตำราคือ ความสามารถในการทำซ้ำได้ จึงให้ความสำคัญกับสภาพแวดล้อมที่ทำงานเหมือนกันได้ทุกขั้นตอน
- ณ เวลานี้ สำหรับวัตถุประสงค์ทางการศึกษา x64 ยังเป็นตัวเลือกที่ใช้งานได้จริง
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
FrontEndHeapDebugOptionsแบบ DWORD เป็น 8 ใต้HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\.exeได้ และถ้าจะตั้งค่าแบบทั้งระบบ ให้กำหนดEnabledแบบ DWORD เป็น 3 ใต้HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Segment Heapบนเครื่องพัฒนาของฉันเอง หลังเปิดใช้ทั้งระบบก็ยังไม่เจอปัญหา และการใช้หน่วยความจำลดลงประมาณ 15% ตามการทดสอบheapTypeเป็นSegmentHeapใน application manifest ของ executable ตัวเอง มีคำอธิบายในเอกสาร