Karena prosesor multi-core menjadi semakin umum di server, laptop atau PC desktop, dan bahkan perangkat seluler, semakin banyak aplikasi yang dioptimalkan untuk jenis sistem ini. Namun, terkadang berguna untuk menautkan program atau proses ke satu atau lebih kernel tertentu. Mari kita lihat bagaimana cara mendapatkannya ...
Instal kumpulan tugas
Alat kumpulan tugas adalah bagian dari paket "util-linux". Sebagian besar distribusi Linux datang dengan paket yang sudah diinstal sebelumnya secara default. Jika kumpulan tugas tidak tersedia, Anda dapat menginstalnya sebagai berikut:
En Debian / Ubuntu dan turunannya:
sudo apt-get instal util-linux
En Fedora dan turunannya:
sudo yum menginstal util-linux
Lihat afinitas CPU dari proses yang sedang berjalan
Untuk mengambil informasi afinitas CPU untuk suatu proses, gunakan format berikut:
tasket -p PID
Misalnya, untuk memeriksa afinitas CPU dari suatu proses dengan PID 2915:
tasket -p 2915
Mengembalikan hasil:
masker afinitas pid 2915 saat ini: ff
tasket mengembalikan afinitas CPU saat ini dalam format topeng bit heksadesimal. Dalam contoh, afinitas (diwakili dalam topeng bit heksadesimal) sesuai dengan "11111111" dalam format biner, yang berarti bahwa proses dapat berjalan pada salah satu dari delapan inti CPU yang berbeda (0 hingga 7).
Bit terendah dalam masker bit heksadesimal sesuai dengan ID inti 0, bit terendah kedua dari hak ke ID inti 1, bit terendah ketiga ke ID inti 2, dan seterusnya. Jadi, misalnya, afinitas CPU "0x11" mewakili ID inti 0 dan 4.
tasket dapat menampilkan afinitas CPU sebagai daftar prosesor daripada bitmask, yang lebih mudah dibaca. Untuk menggunakan format ini, Anda harus menjalankan kumpulan tugas dengan opsi "-c". Sebagai contoh:
tasket -cp 2915
Mengembalikan hasil:
Daftar afinitas pid 2915 saat ini: 0-7
Paksa proses untuk dijalankan pada kernel tertentu
Dengan menggunakan kumpulan tugas, proses yang berjalan dapat ditetapkan ke inti CPU tertentu. Untuk melakukan ini, Anda harus menggunakan format berikut:
tasket -p COREMASK PID tasket -cp CORE-LIST PID
Misalnya, untuk menetapkan proses ke inti 0 dan 4, Anda akan menjalankan:
set tugas -p 0x11 9030
Apa hasilnya:
masker afinitas pid 9030 saat ini: ff pid 9030 masker afinitas baru: 11
Secara bersamaan, Anda dapat menjalankan:
tasket -cp 0,4 9030
Dengan opsi "-c", Anda dapat menentukan daftar ID kernel numerik, dipisahkan dengan koma, atau Anda bahkan dapat menyertakan rentang (misalnya, 0,2,5,6-10).
Luncurkan program menggunakan kernel tertentu
tasket juga memungkinkan peluncuran program baru menggunakan sejumlah kernel tertentu. Untuk melakukan ini, itu harus digunakan dalam format berikut:
Kumpulan tugas COREMASK yang dapat dieksekusi
Misalnya, untuk memulai program VLC pada CPU core ID 0, gunakan perintah berikut:
set tugas -c 0 vlc
Dedikasikan inti hanya untuk program tertentu
Meskipun kumpulan tugas memungkinkan penugasan program ke kernel tertentu, itu tidak berarti bahwa tidak ada program atau proses lain yang memanfaatkannya. Untuk menghindarinya dan mendedikasikan seluruh kernel untuk program tertentu, Anda harus menggunakan parameter kernel "isolcpus", yang memungkinkan Anda untuk memesan kernel selama startup.
Untuk melakukan ini, Anda harus menambahkan parameter "isolcpus =" di baris kernel di GRUB. Misalnya, untuk memesan inti ID 0 dan 1, tambahkan "isolcpus = 0,1".
Setelah ini selesai, penjadwal Linux tidak akan menetapkan proses reguler apa pun ke kernel yang dicadangkan, kecuali ditugaskan secara khusus dengan kumpulan tugas.
sumber: xmodulo & halaman manual tasket.
Posting yang bagus :).
Postingan bagus tapi tanpa niat nge-troll ...
Apa gunanya menugaskan program ke kernel tertentu ???
Maksudku; Jika Anda memiliki komputer dengan 12 core, hal yang logis adalah program tertentu akan dieksekusi menggunakan 12 core tersebut dan tidak membatasinya karena dengan cara itu kami mendapatkan kinerja setinggi mungkin.
Apa yang saya lihat berguna adalah opsi yang memungkinkan kita untuk tidak menetapkan proses apa pun ke kernel tertentu, meninggalkan penggunaan eksklusifnya untuk program tertentu.
Masuk akal apa yang Anda sebutkan, dengan membiarkan perencana menggunakan semua inti, sumber daya lebih seimbang, tetapi terkadang inti dedikasi eksklusif diperlukan, seperti menjalankan mesin virtual dengan tugas tertentu, kinerja mesin itu meningkat secara substansial ketika tidak ada lagi proses yang berjalan di kernel yang ditetapkan.
atte
jvk85321.dll
Tepat! Terima kasih, jvk! 🙂
Tetapi ketika Anda membuat mesin virtual, ia meminta Anda untuk memilih jumlah CPU yang dialokasikan ... apa gunanya memilih nilai ini jika pada akhirnya sistem operasi menghilangkan ini dan menjalankannya di semua CPU ... Untuk itu contohnya bukan yang terbaik ...
Untuk membuat Flash berfungsi pada Windows 8.1 x64, AMD dan Firefox, disarankan untuk memilih bahwa Flash hanya berjalan pada satu CPU, namun tidak berhasil untuk saya. Akan lebih mudah jika Anda menambahkannya (jika belum ada) ke task manager dari DE yang berbeda, atau setidaknya KDE.
ah, saya tidak mengerti akhir dari komentar tersebut ... Tetapi untuk itu, semua proses pada CPU yang menjalankan mesin virtual harus dilarang. Atau tetapkan ke CPU lain. Komentar yang menarik dan sangat bagus.
Digunakan untuk membuat superkomputer jenius
Itu dimengerti.
Terimakasih atas klarifikasinya.
Saat memesan kernel untuk program tertentu, apa yang terjadi dengan thread eksekusi? Jika Anda melakukannya dengan kernel dengan HT, ia menyimpan 2 thread eksekusi untuk program tersebut.
Perintah ini mungkin terlihat tidak terlalu berguna pada komputer dengan beberapa core, tetapi bagi kita yang memiliki Dual Core cukup praktis. Misalnya, saya memiliki permainan yang ketika saya membukanya menggunakan semua inti prosesor dan jika saya juga memiliki program lain yang membutuhkan CPU (seperti pencarian dengan grep dalam file besar) maka sistem melambat. Solusinya sesederhana membatasi permainan untuk hanya menggunakan salah satu inti.
Saya juga setuju dengan lf, mereka benar-benar harus mengintegrasikan ini ke dalam task manager (yang telah saya coba sejauh ini di Gentoo, saya rasa belum ada yang memilikinya), terutama ketika di Windows ini sudah ada sejak XP (klik kanan pada proses> "Tetapkan afinitas ...") tetapi beberapa waktu lalu saya menemukan skrip berikut yang mengubah kumpulan tugas menjadi sesuatu yang sedikit lebih intuitif (aslinya diterbitkan di sini dan bahkan beberapa kasus ditunjukkan di mana perlu untuk mengelola penggunaan inti):
#!/bin/bash
read -p 'Ingrese el ID del proceso en cuestión: ' ID
read -p 'Ingrese la lista de procesadores separados por comas: ' P
echo 'Su ID es '$ID' y los procesadores son '$P
sudo taskset -p -c $P $ID
read -p 'Listo, presione enter para finalizar' P
Dengan beberapa modifikasi, ini bisa menunjukkan nama proses dan bukan PID (atau menerima keduanya dan memutuskan kapan parameter itu adalah satu atau yang lain).
tidak ada antarmuka grafis untuk kumpulan tugas bagi pengguna baru, alangkah baiknya