เครื่องมือบีบอัดไฟล์ยอดนิยม 7-Zip ได้เอาชนะข้อจำกัดที่มีมานานของ Windows ที่ป้องกันไม่ให้ใช้งาน CPU มากกว่า 64 คอร์ได้ ความก้าวหน้านี้เกิดขึ้นในช่วงที่โปรเซสเซอร์ที่มีจำนวนคอร์สูงกำลังเป็นที่นิยมมากขึ้น โดยชิป Threadripper และ EPYC รุ่นล่าสุดของ AMD มีจำนวนคอร์ถึง 96 คอร์หรือมากกว่าในซ็อกเก็ตเดียว
ระบบที่มีจำนวนคอร์สูงที่ได้รับผลกระทบ:
- AMD Threadripper : มีคอร์สูงสุดถึง 96 คอร์ในซ็อกเก็ตเดียว
- AMD EPYC 9004 series : มีคอร์สูงสุดถึง 128 คอร์
- ระบบ Intel Xeon : การกำหนดค่าคอร์สูงแบบต่างๆ
- ต้องการการจัดการกลุ่มโปรเซสเซอร์แบบแมนนวลก่อนการอัปเดตนี้
Processor Groups ของ Windows: คอขวดที่ซ่อนอยู่
ข้อจำกัดนี้ไม่ได้อยู่ที่ตัว 7-Zip เอง แต่เป็นการตัดสินใจออกแบบที่แปลกประหลาดของ Windows ที่ย้อนกลับไปถึงปี 1993 Windows ใช้สิ่งที่เรียกว่า processor groups ซึ่งเป็นกลุ่มของ hardware threads สูงสุด 64 เธรดที่ระบบปฏิบัติการจัดการเป็นหน่วยการจัดตารางเวลาแยกต่างหาก การออกแบบนี้สมเหตุสมผลมากเมื่อคอมพิวเตอร์แทบจะไม่มีหลายคอร์ แต่กลับสร้างเพดานที่มองไม่เห็นสำหรับแอปพลิเคชันสมัยใหม่ที่พยายามใช้ประโยชน์จากโปรเซสเซอร์แบบหลายคอร์ในปัจจุบัน
รากเหง้าทางเทคนิคของปัญหานี้อยู่ที่การออกแบบเคอร์เนลของ Windows NT ซึ่งการดำเนินการซิงโครไนเซชันอาศัย register-width bitmasks เพื่อแสดงชุดของ CPU เนื่องจากการดำเนินการเหล่านี้ถูกใช้งานเป็น macros และ inline functions จึงกลายเป็นส่วนหนึ่งของ driver interface ทำให้การเปลี่ยนแปลงเป็นเรื่องยากโดยไม่ทำลายความเข้ากันได้
ข้อจำกัดของ Processor Group ใน Windows:
- สูงสุด 64 hardware threads ต่อ processor group
- แอปพลิเคชันต้องจัดการ threads ข้ามหลาย groups ด้วยตนเอง
- ข้อจำกัดนี้มีมาตั้งแต่การออกแบบ NT kernel ในปี 1993
- Windows 11/Server 2022 ได้ปรับปรุงการกระจาย threads อัตโนมัติให้ดีขึ้น
ความท้าทายของอัลกอริทึมการบีบอัด
การอัปเดต 7-Zip ให้ทำงานข้ามหลาย processor groups ไม่ใช่เพียงแค่การตรวจจับคอร์ให้มากขึ้น อัลกอริทึมการบีบอัดต้องเผชิญกับความท้าทายเฉพาะตัวเมื่อแบ่งงานไปยังหลายเธรด ไม่เหมือนกับงานที่สามารถแบ่งได้ง่าย การบีบอัดอาศัยการสร้าง dynamic dictionaries ที่ได้ประโยชน์จากการเห็นข้อมูลมากขึ้นในครั้งเดียว หากแบ่งงานละเอียดเกินไป จะสูญเสียประสิทธิภาพการบีบอัด
ชุมชนได้มีการหารือเรื่องสมดุลระหว่างความเร็วและคุณภาพการบีบอัดอย่างกระตือรือร้น ผู้ใช้บางคนรายงานว่าแม้การบีบอัดแบบขนานจะเร็วกว่า แต่อาจให้ผลลัพธ์ที่แตกต่างเล็กน้อยเมื่อเปรียบเทียบกับการบีบอัดแบบเธรดเดียว ขึ้นอยู่กับวิธีการแบ่งข้อมูลระหว่างเธรด
สงครามรูปแบบไฟล์และความกังวลเรื่องความเข้ากันได้
การหารือเกี่ยวกับการปรับปรุงของ 7-Zip ได้จุดประกายการถกเถียงในวงกว้างเกี่ยวกับรูปแบบการบีบอัด แม้ว่า 7-Zip จะรองรับอัลกอริทึมการบีบอัด Zstandard (zstd) ที่ใหม่กว่าผ่าน third-party builds แต่เวอร์ชันหลักยังขาดการรองรับแบบ native ผู้ใช้หลายคนแสดงความผิดหวังกับข้อจำกัดนี้ โดยเฉพาะเมื่อ zstd มีประสิทธิภาพที่ดีกว่าสำหรับไฟล์ขนาดใหญ่
อย่างไรก็ตาม ความเข้ากันได้ยังคงเป็นสิ่งสำคัญที่สุดในโลกแห่งความเป็นจริง ดังที่สมาชิกชุมชนคนหนึ่งกล่าวไว้:
ทุกคนสามารถเปิดไฟล์ ZIP ได้ และพวกเขาไม่ได้สนใจจริงๆ ว่าไฟล์จะใหญ่กว่าไม่กี่เมกะไบต์
ความรู้สึกนี้สะท้อนความตึงเครียดที่ดำเนินต่อไประหว่างความก้าวหน้าทางเทคนิคและการใช้งานจริง แม้ว่ารูปแบบใหม่อย่าง zstd จะมีอัตราส่วนการบีบอัดและความเร็วที่เหนือกว่า แต่การแพร่หลายของการรองรับรูปแบบ ZIP ในทุกแพลตฟอร์มและซอฟต์แวร์รุ่นเก่าทำให้ยังคงมีความเกี่ยวข้อง
การเปรียบเทียบรูปแบบการบีบอัด:
- ZIP กับ DEFLATE: เข้ากันได้แบบสากล การบีบอัดระดับปานกลาง
- รูปแบบ 7Z: อัตราส่วนการบีบอัดที่ดีกว่า รองรับการเข้ารหัส AES
- Zstandard (zstd): ความเร็วและการบีบอัดที่เหนือกว่า ความเข้ากันได้จำกัด
- XZ/LZMA: อัตราส่วนการบีบอัดสูงสุด การคลายการบีบอัดช้ากว่า
มองไปข้างหน้า
การรองรับ processor group ใน 7-Zip แสดงถึงมากกว่าการปรับปรุงประสิทธิภาพ มันส่งสัญญาณการปรับตัวของซอฟต์แวร์ต่อความเป็นจริงของฮาร์ดแวร์สมัยใหม่ ในขณะที่ผู้ผลิต CPU ยังคงผลักดันจำนวนคอร์ให้สูงขึ้น แอปพลิเคชันที่ไม่สามารถขยายขนาดเกิน 64 เธรดมีความเสี่ยงที่จะกลายเป็นคอขวดในระบบประสิทธิภาพสูง
สำหรับผู้ใช้ส่วนใหญ่ การเปลี่ยนแปลงนี้จะไม่สร้างความแตกต่างที่เห็นได้ชัด แต่สำหรับผู้ที่ทำงานกับไฟล์เก็บถาวรขนาดใหญ่บนเวิร์กสเตชันหรือเซิร์ฟเวอร์ระดับไฮเอนด์ ความสามารถในการใช้ประโยชน์จากการลงทุนด้านฮาร์ดแวร์อย่างเต็มที่อาจลดเวลาการประมวลผลได้อย่างมีนัยสำคัญ การอัปเดตนี้ยังช่วยให้ 7-Zip อยู่ในความเกี่ยวข้องในขณะที่การคำนวณยังคงเดินหน้าสู่จำนวนคอร์ที่สูงขึ้นเรื่อยๆ
Processor Groups: วิธีเฉพาะของ Windows ในการจัดระเบียบคอร์ CPU เป็นกลุ่มของเธรดสูงสุด 64 เธรดในแต่ละกลุ่ม ซึ่งออกแบบมาเพื่อแก้ไขข้อจำกัดของฮาร์ดแวร์จากทศวรรษ 1990
Zstandard (zstd): อัลกอริทึมการบีบอัดสมัยใหม่ที่พัฒนาโดย Facebook ซึ่งมีความเร็วและอัตราส่วนการบีบอัดที่ดีกว่ารูปแบบเก่าอย่าง gzip
อ้างอิง: REACHING FOR THE SKY: HOW I CONQUERED MY GREATEST FEAR