Berapa banyak inti yang dapat ditangani oleh kernel Linux?

13

Saya tertarik pada batasan teoretis, mungkin dengan contoh sistem yang memiliki jumlah CPU sangat besar.

tepang
sumber
1
Berapa banyak yang bisa ditangani? atau berapa banyak yang bisa ditangani sebelum Anda kehilangan manfaat? kernel apa juga? Saya menduga bahwa jawaban ini agak berubah untuk komputer yang ditambal untuk menjalankan superkomputer. Sepertinya saya ingat pernah membaca tentang satu contoh menggunakan 4096 prosesor ...
xenoterracide
apa patch yang ditetapkan, patchset normal tidak dapat menangani 4096 prosesor tetapi linux telah ditambal untuk melakukannya. (IIRC beberapa jawaban sepertinya menyarankan itu bisa)
xenoterracide
@ xeno Saya pikir fakta bahwa bahkan ada patchset yang menangani 4.096 prosesor adalah hal-hal yang harus disebutkan pada Jawaban.
tshepang
Saya tidak ingat lebih dari itu, kalau tidak saya akan memberikan jawaban, saya juga kenaikan kinerjanya melewati 16? core terbatas ... dan bagian-bagian tertentu dari kernel membutuhkan penulisan ulang yang sudah dimulai. tapi sebenarnya saya tidak punya kutipan dan saya tidak 100% itu sebabnya saya tidak menjawab.
xenoterracide
xkcd.com/619
balki

Jawaban:

17

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.

KeithB
sumber
10

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.

gbjbaanb
sumber
4
arch / x86 / Kconfig mengatakan CONFIG_NR_CPUSbatas ini dapat dinaikkan jika CONFIG_MAXSMPdiaktifkan.
ephemient
6

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 .

Per Kofod
sumber
SGI Altix UV 1000 (sejak 2009) dapat memiliki hingga 2560 core dalam gambar sistem tunggal.
SP Arif Sahari Wibowo
2

Bayi ini berlari 10.368!

Ben D
sumber
Saya tahu ini adalah posting lama, tetapi Anda menautkan ke komputer cluster. Pertanyaannya adalah tentang menjalankan instance kernel tunggal.
frodeborli
1

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.

Shawn
sumber
0

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.

edgar wahl
sumber