Saya tertarik pada batasan teoretis, mungkin dengan contoh sistem yang memiliki jumlah CPU sangat besar.
Saya tertarik pada batasan teoretis, mungkin dengan contoh sistem yang memiliki jumlah CPU sangat besar.
Jawaban:
Setidaknya 2048 dalam praktik. Sebagai contoh konkret, SGI menjual sistem UV -nya , yang dapat menggunakan 256 soket (2.048 core) dan 16TB memori bersama, semua berjalan di bawah satu kernel. Saya tahu bahwa setidaknya ada beberapa sistem yang telah dijual dalam konfigurasi ini.
Menurut SGI:
Altix UV menjalankan Linux yang sepenuhnya tidak dimodifikasi, termasuk distribusi standar dari Novell dan Red Hat.
ini adalah apa Launchpad katakan tentang Ubuntu, jadi saya kira itu berlaku untuk orang lain:
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.
Itu adalah 32 atau 64 CPU untuk masing-masing x86 dan x86_64.
Redhat mengatakan hal yang sama, tetapi dalam tabel yang ramah manajemen . Redhat EL6 dapat melakukan 32 untuk x86, atau 128 atau 4096 core CPU untuk x86_64.
CONFIG_NR_CPUS
batas ini dapat dinaikkan jika CONFIG_MAXSMP
diaktifkan.
Kernel Linux x86_64 dapat menangani maksimum 4096 utas Prosesor dalam satu gambar sistem. Ini berarti bahwa dengan hyper threading diaktifkan, jumlah maksimum core prosesor adalah 2048. Ya ada komputer dengan lebih dari 2048 core prosesor; tetapi ini berjalan sebagai cluster di mana beberapa kernel Linux bekerja sama, terhubung dengan interkoneksi kecepatan tinggi, biasanya sebuah kain Infiniband.
dari kernel 3.13 terbaru, di ~ / arch / x86 / Kconfig:
config 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.
Pembaruan: Pada kernel yang lebih baru ini adalah arsitektur khusus - misalnya pada 4,15 x86_64 memungkinkan Anda untuk mengatur NR_CPUS ke 8192 dalam keadaan yang tepat sedangkan lengan 32 bit berhenti di 32 .
Bayi ini berlari 10.368!
Utas bersifat subjektif terhadap model multitasking dan skema manajemen utas. Gdt sistem berbasis intel digunakan di linux jika saya ingat dengan benar. Idenya adalah ia memiliki kemungkinan 8192 utas pada ukuran maksimal. Ini dengan asumsi bahwa sistem menggunakan gdt untuk mengelola utas. Pada 32 bit mesin tugas beralih dikelola dan pada mesin 32 dan 64 bit interrupt vektor perlu memiliki entri gdt. Tidak yakin bagaimana lengan melakukannya tetapi artikulasi yang sama harus dicapai. Konsep pengalihan tugas iterate GDT dalam model penugasan.
Jika Anda keluar dari skema gdt, Anda dapat mencapai memori yang Anda miliki ketika Anda memiliki, untuk setiap utas, bingkai tumpukan halaman, basis kode halaman untuk utas dan halaman ruang tumpukan. Anda tidak dapat mengasumsikan Anda memiliki halaman kode atau heap, yang merupakan variabel acak. Secara umum ada dua frame stack untuk setiap utas, satu dikelola oleh utas dan satu lainnya dikelola oleh kernel linux. Anda menambahkan konsep memori virtual dari ruang swap dan modelnya akan meledak tetapi ini tentang prioritas utas.
Juga:
Jika Anda menggunakan Linux sebagai Pengontrol pada UV SGI, dan Anda menggunakan Bladecenters dengannya sendiri 4.15 Kernel, Anda dapat menggunakan pada Moment:
4096 Blade Racks. 1 Rak menggunakan 1024 Core x 4096 Cores. Konfigurasi ini akan menjadi Core tertinggi saat menggunakan Linux. Anda dapat mengontrol semua core di bawah Red Hat.