ฉันสนใจข้อ จำกัด ทางทฤษฎีบางทีอาจมีตัวอย่างของระบบที่มีซีพียูจำนวนมาก
ฉันสนใจข้อ จำกัด ทางทฤษฎีบางทีอาจมีตัวอย่างของระบบที่มีซีพียูจำนวนมาก
คำตอบ:
อย่างน้อยปี 2048 ในทางปฏิบัติ ตัวอย่างที่เป็นรูปธรรม SGI ขายระบบUVซึ่งสามารถใช้ซ็อกเก็ต 256 (2,048 แกน) และหน่วยความจำที่แชร์ 16TB ทั้งหมดทำงานภายใต้เคอร์เนลเดียว ฉันรู้ว่ามีอย่างน้อยสองสามระบบที่ขายในการกำหนดค่านี้
ตามที่ SGI:
Altix UV รัน Linux ที่ไม่มีการแก้ไขอย่างสมบูรณ์รวมถึงการแจกแจงมาตรฐานจากทั้ง Novell และ Red Hat
นี่คือสิ่งที่ Launchpad บอกไว้เกี่ยวกับ Ubuntu ดังนั้นฉันเดาว่ามันใช้ได้กับผู้อื่น:
1.Intel x86:
Maximum CPUs: 32 (including logical CPUs)
Maximum memory: 64GB
Maximum filesize: 8TB
Maximum filesystem size (ext3) 16TB
Maximum per-process virtual address space: 4GB
2.AMD64/EM64T:
Maximum CPUs: 64
Maximum memory: 128GB
Maximum filesize: 8TB
Maximum filesystem size (ext3): 16TB
Maximum per-process virtual address space: N/A
These are standard max limitations whereas Linux cluster systems can scale up to 1024 CPU's.
นั่นคือ 32 หรือ 64 CPU สำหรับ x86 และ x86_64 ตามลำดับ
Redhat กล่าวว่าเหมือนกัน แต่ในตารางการจัดการง่าย Redhat EL6 สามารถทำ 32 สำหรับ x86 หรือ 128 หรือ 4096 CPUs cores สำหรับ x86_64
เคอร์เนล x86_64 Linux สามารถจัดการเธรดตัวประมวลผลได้สูงสุด 4096 เธรดในอิมเมจระบบเดียว ซึ่งหมายความว่าเมื่อเปิดใช้งานเธรดไฮเปอร์จำนวนแกนประมวลผลสูงสุดคือ 2048 ใช่มีคอมพิวเตอร์ที่มีแกนประมวลผลมากกว่า 2048 แกน แต่สิ่งเหล่านี้จะทำงานเป็นกระจุกที่ Linux หลาย ๆ ตัวร่วมมือกันเชื่อมต่อด้วยการเชื่อมต่อความเร็วสูงโดยทั่วไปจะเป็นโครงสร้างแบบ Infiniband
จากเคอร์เนล 3.13 ล่าสุดใน ~ / arch / x86 / Kconfig:
กำหนดค่า NR_CPUS
---help---
This allows you to specify the maximum number of CPUs which this
kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
supported value is 4096, otherwise the maximum value is 512. The
minimum value which makes sense is 2.
This is purely to save memory - each supported CPU adds
approximately eight kilobytes to the kernel image.
ปรับปรุง: เมื่อวันที่ใหม่กว่าเมล็ดนี้เป็นสถาปัตยกรรมที่เฉพาะเจาะจง - ตัวอย่างเช่นใน 4.15 x86_64 ช่วยให้คุณสามารถตั้งค่าการ NR_CPUS 8192ในสถานการณ์ที่เหมาะสมในขณะที่32 บิตแขนหยุดที่ 32
ลูกนี้วิ่ง 10,368!
เธรดเป็นอัตนัยกับโมเดลมัลติทาสก์และโครงร่างการจัดการเธรด Gdt ของระบบที่ใช้ Intel นั้นใช้ใน linux ถ้าฉันจำได้ถูกต้อง แนวคิดนี้มีความเป็นไปได้ 8192 เธรดที่ขนาดสูงสุด นี่ถือว่าระบบใช้ gdt เพื่อจัดการเธรด ในการสลับงานเครื่องแบบ 32 บิตได้รับการจัดการและบนเครื่องเวกเตอร์ขัดจังหวะแบบ 32 บิตและ 64 บิตจำเป็นต้องมีรายการ gdt ไม่แน่ใจว่าแขนทำอย่างไร แต่ต้องมีการประกบกัน แนวคิดการสลับงานจะทำซ้ำ GDT ในการมอบหมายรูปแบบ
หากคุณแยกออกจากรูปแบบ gdt คุณสามารถเข้าถึงสิ่งที่คุณมีหน่วยความจำเมื่อคุณมีสำหรับแต่ละเธรดเฟรมสแต็กหน้า, รหัสฐานหน้าสำหรับหัวข้อและหน้าของพื้นที่กอง คุณไม่สามารถสันนิษฐานได้ว่าคุณมีหน้าของโค้ดหรือฮีปซึ่งเป็นตัวแปรสุ่ม โดยทั่วไปมีเฟรมสแต็กสองเฟรมสำหรับแต่ละเธรดหนึ่งเฟรมถูกดูแลโดยเธรดและอีกหนึ่งเฟรมที่ดูแลโดยเคอร์เนล linux คุณเพิ่มแนวคิดหน่วยความจำเสมือนของพื้นที่สว็อปและตัวแบบถูกเป่าออกมาจากน้ำ แต่มันเกี่ยวกับลำดับความสำคัญของเธรด
นอกจากนี้:
หากคุณใช้ Linux เป็นตัวควบคุมบน UV SGI และคุณใช้ Bladecenters กับเธอด้วยเคอร์เนล 4.15 เองคุณสามารถใช้กับ Moment ได้:
ชั้นวางใบมีด 4096 1 Rack โดยใช้ 1024 Core x 4096 Cores การกำหนดค่านี้จะเป็นช่วงเวลาที่ Core สูงสุดใช้ภายใต้ Linux คุณสามารถควบคุมแกนทั้งหมดภายใต้ Red Hat