Cara menetapkan program ke teras CPU menggunakan set tugas

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.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   peterczech kata

    Pos yang baik :).

  2.   Luis kata

    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.

    1.    jvk85321 kata

      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

      1.    mari gunakan linux kata

        Tepat! Terima kasih, jvk! 🙂

      2.    lf kata

        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.

      3.    lf kata

        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.

    2.    Fernando kata

      Digunakan untuk membuat superkomputer genius

  3.   Luis kata

    Ia difahami.

    Terima kasih atas penjelasan.

  4.   Teck kata

    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.

  5.   Switcher kata

    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).

  6.   jersi kata

    tidak ada antara muka grafik untuk set tugas untuk pengguna baru akan lebih baik