Di kernel Linux, dokumentasi untuk CONFIG_NUMA
mengatakan:
Enable NUMA (Non Uniform Memory Access) support.
he kernel will try to allocate memory used by a CPU on the
local memory controller of the CPU and add some more
NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.
Saya memiliki prosesor Intel Core i7, tetapi AFAICT hanya memiliki satu NUMA node:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node 0
0: 10
Jadi apa tujuan memiliki CONFIG_NUMA=y
, ketika i7 hanya memiliki satu simpul NUMA?
sumber
CONFIG_NUMA
untukcore i7
?Pertama, perhatikan bahwa Intel Core i7 hanyalah sebutan pemasaran, dan frasa Intel Core i7 (atau lebih baru) sangat kabur. Jadi apa artinya?
Kconfig
Pengeditan teks bantuan kernel Linux menyebutkan Intel Core 7i , kemudian diperbaiki ke Intel Core i7 , dilakukan pada November 2008. Log komit berbunyi:Itu hanya bisa merujuk ke Intel Core i7 CPU yang dirilis atau diumumkan per spec pada saat itu. Itu akan menjadi prosesor Bloomfield , berdasarkan pada mikroarsitektur Nehalem , yang memindahkan pengontrol memori dari Northbridge ke CPU (yang telah dilakukan AMD pada tahun 2003 dengan Opteron / AMD64) dan memperkenalkan QuickPath Interconnect / QPI (sebagai pengikat HyperTransport AMD) untuk interkoneksi CPU / CPU dan CPU / IOH (IO hub, ex-Northbridge).
CPU Bloomdale i7 adalah entri pertama dalam skema penamaan Core i {3,5,7} baru . Jadi ketika teks doc Linux itu ditulis, i7 tidak secara spesifik merujuk ke Core i7 yang bertentangan dengan i5 (pertama pada 09/2009) atau i3 (pertama pada 01/2010), tetapi dalam semua kemungkinan mikroarsitektur Nehalem baru dengan pengontrol memori terintegrasi dan QPI.
Ada siaran pers Intel dari 11/2008 tentang i7 ( Intel Meluncurkan Prosesor Tercepat di Planet ) yang menyatakan bahwa prosesor Core i7 lebih dari dua kali lipat bandwidth memori platform Intel "Extreme" sebelumnya , tetapi tidak menyebutkan NUMA sama sekali .
Alasannya, saya pikir, bahwa NUMA tidak masalah untuk PC desktop, bahkan untuk yang "ekstrim".
NUMA penting untuk server mahal yang memiliki beberapa soket CPU (bukan hanya beberapa inti pada satu soket) dengan jalur akses memori fisik khusus (bukan hanya satu pengontrol memori), sehingga setiap CPU memiliki memori lokal khusus, yang "lebih dekat" dengannya dari memori CPU lainnya. (Pikirkan 8 soket, 64 core, RAM 256 GB.) NUMA berarti CPU juga dapat mengakses memori jarak jauh (memori lokal CPU lain) selain memori lokalnya sendiri, walaupun dengan biaya yang lebih tinggi. NUMA adalah sintesis dari arsitektur memori bersama seperti SMP, di mana semua memori tersedia secara merata untuk semua core, dan arsitektur memori terdistribusi seperti MPP (Massively Parallel Processing), yang memberikan setiap node blok memori khusus. Ini adalah MPP, tetapi sepertinya SMP untuk aplikasi.
Motherboard desktop tidak memiliki soket ganda dan CPU desktop Intel termasuk edisi i7 ekstrim tidak memiliki tautan QPI tambahan untuk konfigurasi soket ganda.
Periksa artikel Wikipedia QPI untuk melihat bagaimana QPI relevan dengan NUMA:
Cara CPU Intel Nehalem pada papan server multi-socket membuat akses memori non-lokal adalah melalui QPI. Juga dalam artikel tentang NUMA :
Periksa kembali laporan ini dari 11/2008 untuk melihat bahwa Intel menonaktifkan salah satu dari dua tautan QPI di i7, sehingga menonaktifkan konfigurasi soket ganda, di mana NUMA berlaku:
Jadi saya telah menyimpang dari pertanyaan Anda yang berhubungan dengan hasil penelitian Google saya ... Anda bertanya mengapa dokumen Linux mulai merekomendasikan untuk menyalakannya pada akhir 2008? Tidak yakin pertanyaan ini memiliki jawaban yang terbukti benar ... Kami harus bertanya kepada penulis dokumen. Mengaktifkan NUMA tidak menguntungkan pengguna CPU desktop, tetapi juga tidak merugikan mereka secara signifikan, sambil membantu pengguna multi-socket, jadi mengapa tidak? Ini bisa jadi alasannya. Ditemukan yang tercermin dalam diskusi tentang menonaktifkan NUMA pada pelacak Arch Linux ( FS # 31187 - [linux] - menonaktifkan NUMA dari file konfigurasi ).
Penulis dokumen mungkin juga memikirkan potensi NUMA dari arsitektur Nehalem yang, ketika dokumen itu ditulis, prosesor Core i7 11/2008 (920, 940, 965) adalah satu-satunya perwakilan; chip Nehalem pertama yang benar-benar masuk akal oleh NUMA mungkin adalah prosesor Xeon Q1 / 2009 dengan tautan QPI ganda seperti Xeon E5520 .
sumber
Saya pikir jika Anda menggunakan
--show
sakelar itu mungkin lebih masuk akal:Jadi, Anda dapat mengontrol penggunaan physcpubind seperti ini:
Ini akan membatasi aplikasi
myapp
ke 2 core CPU pertama. Sistem saya adalah i5 dengan 4 core.Referensi
sumber
Saya telah meneliti hal yang sama untuk PC desktop saya sambil membangun kernel saya sendiri. Saya telah memutuskan untuk menonaktifkan NUMA setelah banyak penelitian. CPU saya adalah Core i7 3820 yang memiliki 8 prosesor dengan HT. Halaman ini membantu saya mengambil keputusan.
nonaktifkan NUMA dari file konfigurasi
Singkatnya, NUMA hanya bermanfaat jika Anda memiliki lebih dari 1 soket CPU (terlepas dari inti). Ada hit yang sangat kecil untuk memproses daya pada 1 mesin CPU Socket bahkan dengan beberapa core, tetapi hampir tidak terlihat sehingga sebagian besar distribusi membiarkannya diaktifkan karena akan memberikan manfaat besar bagi server dan mesin dengan lebih dari 1 soket.
sumber
Dalam PC dengan paling banyak satu CPU, NUMA sama sekali tidak berguna. Silakan menonaktifkannya di kernel Anda sendiri.
Anda selalu dapat mengontrol ikatan CPU dengan tasket (1) .
sumber