Oleh kerana pemproses berbilang teras menjadi semakin biasa di pelayan, komputer riba atau PC desktop, dan juga peranti mudah alih, semakin banyak aplikasi dioptimumkan untuk jenis sistem ini. Walau bagaimanapun, kadangkala berguna untuk menghubungkan program atau proses ke satu atau lebih kernel tertentu. Mari lihat bagaimana mendapatkannya ...
Pasang set tugas
Alat set tugas adalah sebahagian daripada pakej "util-linux". Sebilangan besar pengedaran Linux dilengkapi dengan pakej yang diprapasang secara lalai. Sekiranya set tugas tidak tersedia, mungkin untuk memasangnya seperti berikut:
En Debian / Ubuntu dan derivatif:
sudo apt-get install util-linux
En Fedora dan derivatif:
sudo yum pasang util-linux
Lihat pertalian CPU proses yang sedang berjalan
Untuk mendapatkan maklumat hubungan CPU untuk proses, gunakan format berikut:
taskp -p PID
Sebagai contoh, untuk memeriksa perkaitan CPU proses dengan PID 2915:
set tugas -p 2915
Mengembalikan hasilnya:
pid 2915 topeng pertalian semasa: ff
tasket mengembalikan pertalian CPU semasa dalam format bitmask heksadesimal. Dalam contohnya, afinitas (ditunjukkan dalam topeng bit heksadesimal) sesuai dengan "11111111" dalam format binari, yang bermaksud bahawa proses itu dapat dijalankan pada salah satu daripada lapan teras CPU yang berbeza (0 hingga 7).
Bit terendah dalam topeng bit heksadesimal sepadan dengan inti ID 0, bit kedua paling rendah dari kanan ke inti ID 1, bit ketiga terendah ke inti ID 2, dll. Jadi, sebagai contoh, pertalian CPU "0x11" mewakili ID teras 0 dan 4.
set tugas dapat menunjukkan pertalian CPU sebagai senarai pemproses dan bukannya bitmask, yang lebih senang dibaca. Untuk menggunakan format ini, anda mesti menjalankan set tugas dengan pilihan "-c". Sebagai contoh:
set tugas -cp 2915
Mengembalikan hasilnya:
senarai pertalian semasa pid 2915: 0-7
Memaksa proses untuk dijalankan pada kernel tertentu
Menggunakan set tugas, proses yang berjalan dapat ditugaskan ke inti CPU tertentu. Untuk melakukan ini, anda mesti menggunakan format berikut:
tasket -p COREMASK PID tasket -cp CORE-SENARAI PID
Sebagai contoh, untuk menetapkan proses ke teras 0 dan 4, anda akan menjalankan:
tasket -p 0x11 9030
Hasilnya kembali:
topeng pertalian semasa pid 9030: topeng pertalian baru fid pid 9030: 11
Sama, anda boleh menjalankan:
set tugas -cp 0,4 9030
Dengan pilihan "-c", anda dapat menentukan senarai ID kerangka numerik, dipisahkan dengan koma, atau anda juga boleh memasukkan julat (misalnya, 0,2,5,6-10).
Lancarkan program menggunakan kernel tertentu
tasket juga membolehkan melancarkan program baru menggunakan sebilangan kernel tertentu. Untuk melakukan ini, ia mesti digunakan dalam format berikut:
Tugasan COREMASK EKSEKUTIF
Sebagai contoh, untuk memulakan program VLC pada inti CPU 0, gunakan arahan berikut:
tasket -c 0 vlc
Dedikasikan kernel hanya untuk program tertentu
Walaupun set tugas memungkinkan menetapkan program ke kernel tertentu, itu tidak bermaksud tidak ada program atau proses lain yang menggunakannya. Untuk mengelakkan ini dan mendedikasikan keseluruhan kernel untuk program tertentu, anda mesti menggunakan parameter kernel "isolcpus", yang membolehkan anda menempah kernel semasa permulaan.
Untuk melakukan ini, anda harus menambahkan parameter "isolcpus =" di baris kernel di GRUB. Contohnya, untuk menempah core ID 0 dan 1, tambahkan "isolcpus = 0,1".
Setelah ini selesai, penjadual Linux tidak akan memberikan proses biasa ke kernel yang dikhaskan, kecuali ditentukan secara khusus dengan set tugas.
Fuente: xmodulo & halaman manual set tugas.
Pos yang baik :).
Pos yang baik tetapi tanpa semangat trolling
Apa gunanya menetapkan program ke kernel tertentu ???
Saya maksudkan; Sekiranya anda mempunyai komputer dengan 12 teras, maka logiknya program tertentu dijalankan dengan menggunakan 12 teras tersebut dan tidak membataskannya dengan cara itu kita memperoleh prestasi setinggi mungkin.
Apa yang saya nampak berguna adalah pilihan yang membolehkan kita tidak memberikan proses apa pun ke kernel tertentu, membiarkan penggunaannya eksklusif untuk program tertentu.
Lebih masuk akal apa yang anda sebutkan, dengan membiarkan perancang menggunakan semua inti, sumbernya lebih seimbang, tetapi kadang-kadang teras dedikasi eksklusif diperlukan, seperti menjalankan mesin maya dengan tugas tertentu, prestasi mesin itu bertambah baik apabila tidak ada lagi proses yang berjalan di kernel yang ditetapkan.
atte
jvk85321
Tepat! Terima kasih, jvk! 🙂
Tetapi semasa anda membuat mesin maya, ia meminta anda memilih jumlah CPU yang diperuntukkan ... apa gunanya memilih nilai ini jika pada akhirnya sistem operasi menghilangkan ini dan melaksanakannya pada semua CPU ... Kerana ada contohnya bukan yang terbaik ...
Untuk menjadikan Flash berfungsi pada Windows 8.1 x64, AMD dan Firefox, disyorkan untuk memilih bahawa Flash hanya berjalan pada CPU, namun ia tidak berfungsi untuk saya. Akan lebih baik jika anda menambahkannya (jika belum ada) kepada pengurus tugas DE yang berlainan, atau paling tidak yang KDE.
ah, saya tidak memahami akhir komen ... Tetapi untuk itu, semua proses pada CPU yang menjalankan mesin maya harus dilarang. Atau tetapkannya ke CPU lain. Komen yang menarik dan sangat baik.
Digunakan untuk membuat superkomputer genius
Ia difahami.
Terima kasih atas penjelasan.
Semasa menempah kernel untuk program tertentu, apa yang terjadi dengan utas pelaksanaan? Sekiranya anda melakukannya dengan kernel dengan HT, ia menyimpan 2 utas pelaksanaan untuk program tersebut.
Perintah ini mungkin tidak begitu berguna pada komputer dengan beberapa inti, tetapi bagi kita yang mempunyai Dual Core agak praktikal. Sebagai contoh, saya mempunyai permainan yang ketika saya membukanya menggunakan semua teras pemproses dan jika saya juga mempunyai program lain yang memerlukan CPU (seperti beberapa carian dengan grep dalam fail besar) maka sistem akan menjadi perlahan. Penyelesaiannya semudah membatasi permainan hanya menggunakan salah satu inti.
Saya juga setuju dengan mereka, mereka harus benar-benar mengintegrasikan ini ke dalam pengurus tugas (yang saya telah cuba sejauh ini di Gentoo, saya rasa tidak ada yang memilikinya), terutamanya ketika di Windows adalah sesuatu yang wujud sejak XP (klik kanan pada proses "Tetapkan pertalian ...") tetapi beberapa waktu lalu saya menjumpai skrip berikut yang mengubah set tugas menjadi sesuatu yang lebih intuitif (asalnya diterbitkan di sini dan bahkan beberapa kes di mana perlu untuk menguruskan penggunaan inti ditunjukkan):
#!/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 pengubahsuaian, nama proses dapat ditunjukkan sebagai ganti PID (atau bahawa ia menerima kedua-duanya dan bahawa ia memutuskan kapan parameter itu satu perkara atau yang lain).
tidak ada antara muka grafik untuk set tugas untuk pengguna baru akan lebih baik