Saya mencoba menjalankan beberapa tolok ukur pada mesin multicore dan saya ingin memberi tahu kernel Linux untuk hanya menghindari inti tertentu kecuali secara tegas disuruh menggunakannya.
Idenya adalah bahwa saya dapat menyisihkan beberapa core (mesin memiliki 6 core fisik) untuk benchmark dan menggunakan cpu mask untuk memungkinkan hanya proses benchmark ke core yang diberikan.
Apakah ini layak?
linux-kernel
cpu
benchmark
Lajos Nagy
sumber
sumber
Jawaban:
Anda dapat mengisolasi beberapa core cpu dari penjadwalan kernel menggunakan
isolcpus
parameter. Tambahkan parameter ini ke grub.conf Anda dan mulai ulang untuk menjalankannya.sumber
Anda menginginkan afinitas prosesor (atau afinitas CPU ).
Syscall yang relevan adalah sched_setaffinity (2) , tetapi Anda harus menggunakannya melalui pthread_set_affinity_np (3) jika Anda ingin kode tolok ukur Anda untuk itu.
Perintah terkait adalah tasket (1) dan Anda mungkin menggunakannya pada perintah yang ingin Anda tolak (atau di shell Anda).
Jika memungkinkan, berhati-hatilah agar mesin tidak dimuat banyak dengan tugas-tugas lain yang tidak terkait dengan tolok ukur.
Atau, gunakan beberapa hypervisor seperti Xen , dan boot Linux Anda sebagai OS tamu untuk hypervisor itu. Kemudian konfigurasikan
xen
untuk menggunakan hanya beberapa set core CPU yang terbatas (saya tidak tahu detail pastinya, Anda perlu mencari tahu). Pada Debian (dan terkait) distribusi, Anda mungkin menginstal paket sepertixen-linux-system-amd64
,xen-hypervisor-amd64
,xen-utils
dll (aku menggunakan Debian / Sidxen-hypervisor-4.5-amd64
,xen-linux-system-4.0.0-1-amd64
,xen-utils-4.5
dll ...).Mungkin ada beberapa cara untuk mengkonfigurasi (mungkin pada saat kompilasi kernel, atau dengan memberikan argumen spesifik ke kernel melalui Grub loader) kernel Linux Anda untuk membatasi jumlah core yang dapat digunakan.
Tentu saja, lebih baik, ketika benchmarking beberapa program yang-misalnya di desktop Linux PC-, untuk berhati-hati untuk menghindari banyak proses di luar berjalan (gunakan
ps auxw
,pstree -p
,top
untuk menemukan ini). Paling tidak, tutup dan tutup sebagian besar aplikasi interaktif (browser seperti firefox, email, editor, IDE seperti Eclipse) dan simpan hanya sejumlah kecil terminal sebagai tolok ukur. Anda bahkan dapat melakukan benchmark dalam mode batch (menggunakanbatch
atauat
menjalankan benchmark) saat Anda bahkan belum login (jadi tidak memiliki sesi GUI à la Gnome atau KDE atau Xfce , dll ... berjalan).sumber
at
ataubatch
) saat Anda tidak masuk (jadi jangan jalankan sesi yang memakan waktu).