เคอร์เนล Linux สามารถจัดการได้กี่คอร์?


14

ฉันสนใจข้อ จำกัด ทางทฤษฎีบางทีอาจมีตัวอย่างของระบบที่มีซีพียูจำนวนมาก


2
สามารถรองรับได้กี่คน หรือกี่ครั้งก่อนที่คุณจะสูญเสียผลประโยชน์ เคอร์เนลอะไรบ้าง ฉันสงสัยว่าคำตอบนี้เปลี่ยนไปบ้างสำหรับคอมพิวเตอร์ที่ติดตั้งซูเปอร์คอมพิวเตอร์ ฉันดูเหมือนจะจำการอ่านเกี่ยวกับอินสแตนซ์เดียวโดยใช้ตัวประมวลผล 4096 ...
xenoterracide

ชุดแพทช์ใดแพทช์ปกติไม่สามารถรองรับโปรเซสเซอร์ 4096 ได้ แต่ลินุกซ์ได้รับการแพตช์แล้ว (IIRC คำตอบบางอย่างดูเหมือนจะแนะนำให้ทำได้)
xenoterracide

@xeno ฉันคิดว่าข้อเท็จจริงที่ว่าแม้จะมีชุดข้อมูลที่จัดการโปรเซสเซอร์ 4096 เป็นสิ่งที่ควรกล่าวถึงในคำตอบ
tshepang

ฉันจำไม่ได้มากไปกว่านั้นมิฉะนั้นฉันจะตอบคำถามฉันได้รับการแสดงของเธอผ่าน 16 หรือเปล่า แกนถูก จำกัด ... และบางส่วนของเคอร์เนลต้องการการเขียนใหม่ที่ได้เริ่มขึ้นแล้ว แต่จริงๆแล้วฉันไม่มีการอ้างอิงใด ๆ และไม่ใช่ 100% นั่นคือสาเหตุที่ฉันไม่ตอบ
xenoterracide

คำตอบ:


18

อย่างน้อยปี 2048 ในทางปฏิบัติ ตัวอย่างที่เป็นรูปธรรม SGI ขายระบบUVซึ่งสามารถใช้ซ็อกเก็ต 256 (2,048 แกน) และหน่วยความจำที่แชร์ 16TB ทั้งหมดทำงานภายใต้เคอร์เนลเดียว ฉันรู้ว่ามีอย่างน้อยสองสามระบบที่ขายในการกำหนดค่านี้

ตามที่ SGI:

Altix UV รัน Linux ที่ไม่มีการแก้ไขอย่างสมบูรณ์รวมถึงการแจกแจงมาตรฐานจากทั้ง Novell และ Red Hat


11

นี่คือสิ่งที่ 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


4
arch / x86 / Kconfigกล่าวว่าCONFIG_NR_CPUSข้อ จำกัดเหล่านี้สามารถเพิ่มได้หากCONFIG_MAXSMPเปิดใช้งาน
ephemient

6

เคอร์เนล 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


SGI Altix UV 1000 (ตั้งแต่ 2009) สามารถมีแกนได้ถึง 2560 แกนในอิมเมจระบบเดียว
SP Arif Sahari Wibowo

2

ลูกนี้วิ่ง 10,368!


2
ฉันรู้ว่านี่เป็นโพสต์เก่า แต่คุณกำลังเชื่อมโยงไปยังคอมพิวเตอร์คลัสเตอร์ คำถามเกี่ยวกับการใช้งานอินสแตนซ์เคอร์เนลเดียว
frodeborli

1

เธรดเป็นอัตนัยกับโมเดลมัลติทาสก์และโครงร่างการจัดการเธรด Gdt ของระบบที่ใช้ Intel นั้นใช้ใน linux ถ้าฉันจำได้ถูกต้อง แนวคิดนี้มีความเป็นไปได้ 8192 เธรดที่ขนาดสูงสุด นี่ถือว่าระบบใช้ gdt เพื่อจัดการเธรด ในการสลับงานเครื่องแบบ 32 บิตได้รับการจัดการและบนเครื่องเวกเตอร์ขัดจังหวะแบบ 32 บิตและ 64 บิตจำเป็นต้องมีรายการ gdt ไม่แน่ใจว่าแขนทำอย่างไร แต่ต้องมีการประกบกัน แนวคิดการสลับงานจะทำซ้ำ GDT ในการมอบหมายรูปแบบ

หากคุณแยกออกจากรูปแบบ gdt คุณสามารถเข้าถึงสิ่งที่คุณมีหน่วยความจำเมื่อคุณมีสำหรับแต่ละเธรดเฟรมสแต็กหน้า, รหัสฐานหน้าสำหรับหัวข้อและหน้าของพื้นที่กอง คุณไม่สามารถสันนิษฐานได้ว่าคุณมีหน้าของโค้ดหรือฮีปซึ่งเป็นตัวแปรสุ่ม โดยทั่วไปมีเฟรมสแต็กสองเฟรมสำหรับแต่ละเธรดหนึ่งเฟรมถูกดูแลโดยเธรดและอีกหนึ่งเฟรมที่ดูแลโดยเคอร์เนล linux คุณเพิ่มแนวคิดหน่วยความจำเสมือนของพื้นที่สว็อปและตัวแบบถูกเป่าออกมาจากน้ำ แต่มันเกี่ยวกับลำดับความสำคัญของเธรด


0

นอกจากนี้:

หากคุณใช้ Linux เป็นตัวควบคุมบน UV SGI และคุณใช้ Bladecenters กับเธอด้วยเคอร์เนล 4.15 เองคุณสามารถใช้กับ Moment ได้:

ชั้นวางใบมีด 4096 1 Rack โดยใช้ 1024 Core x 4096 Cores การกำหนดค่านี้จะเป็นช่วงเวลาที่ Core สูงสุดใช้ภายใต้ Linux คุณสามารถควบคุมแกนทั้งหมดภายใต้ Red Hat

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.