GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Perintah taskset Linux untuk Pemula (dengan Contoh)

Pernah mendengar istilah afinitas prosesor? Ini adalah fitur yang memungkinkan Anda untuk mengikat atau melepaskan proses ke unit pemrosesan pusat tertentu, atau rentang CPU. Ya, Anda dapat memberi tahu sistem inti CPU mana yang harus digunakan untuk menjalankan proses tertentu. Untuk detail teoretis tentang mengapa afinitas prosesor ada, buka di sini.

Di sini, dalam tutorial ini, kita akan membahas utilitas - dijuluki taskset - yang memungkinkan Anda mencapai afinitas prosesor. Namun sebelum kita melakukannya, perlu disebutkan bahwa semua contoh dalam tutorial ini telah diuji pada mesin Ubuntu 20.04 LTS dan pada Debian 10.

Perintah rangkaian tugas Linux

Perintah taskset memungkinkan Anda untuk mengatur atau mengambil afinitas CPU proses. Berikut sintaksnya:

taskset [options] mask command [argument...]
taskset [options] -p [mask] pid

Begini cara halaman manual alat menjelaskannya:

       taskset  is  used  to  set  or  retrieve  the CPU affinity of a running
       process given its pid, or to launch a new  command  with  a  given  CPU
       affinity.   CPU affinity is a scheduler property that "bonds" a process
       to a given set of CPUs on the system.  The Linux scheduler  will  honor
       the  given CPU affinity and the process will not run on any other CPUs.
       Note that the Linux scheduler also supports natural CPU  affinity:  the
       scheduler attempts to keep processes on the same CPU as long as practi?
       cal for performance reasons.  Therefore, forcing a specific CPU  affin?
       ity is useful only in certain applications.

       The CPU affinity is represented as a bitmask, with the lowest order bit
       corresponding to the first logical CPU and the highest order bit corre?
       sponding  to  the  last logical CPU.  Not all CPUs may exist on a given
       system but a mask may specify more CPUs than are present.  A  retrieved
       mask  will  reflect only the bits that correspond to CPUs physically on
       the system.  If an invalid mask is given (i.e., one that corresponds to
       no  valid  CPUs on the current system) an error is returned.  The masks
       may be specified in hexadecimal (with or without a leading "0x"), or as
       a CPU list with the --cpu-list option.  For example,

           0x00000001  is processor #0,

           0x00000003  is processors #0 and #1,

           0xFFFFFFFF  is processors #0 through #31,

           32          is processors #1, #4, and #5,

           --cpu-list 0-2,6
                       is processors #0, #1, #2, and #6.

       When  taskset returns, it is guaranteed that the given program has been
       scheduled to a legal CPU.

Berikut adalah beberapa contoh gaya Tanya Jawab yang akan memberi Anda gambaran yang lebih baik tentang cara kerja perintah kumpulan tugas.

Q1. Bagaimana cara menggunakan taskset untuk mengambil afinitas CPU dari suatu proses?

Jika Anda ingin kumpulan tugas menampilkan afinitas CPU dari proses yang sudah berjalan, gunakan perintah dengan cara berikut:

taskset -p [PID]

Ganti saja PID dengan ID proses yang afinitas CPU-nya ingin Anda ambil. Misalnya:

taskset -p 9726

Perintah di atas mengembalikan output berikut:

pid 9726's current affinity mask: f

Jadi nilai heksadesimal 'f' di sini berarti proses dapat berjalan di salah satu dari 4 inti prosesor:0,1,2,3.

Jika Anda ingin output dalam rentang CPU, Anda dapat menambahkan opsi baris perintah -c.

taskset -cp 9726

Berikut adalah output dalam hal ini:

pid 9726's current affinity list: 0-3

Q2. Bagaimana cara mengubah afinitas CPU menggunakan kumpulan tugas?

Untuk mengubah afinitas CPU dari proses yang ada, Anda perlu menentukan ID proses (seperti yang kita lakukan di bagian sebelumnya) bersama dengan topeng heksadesimal yang mendefinisikan afinitas baru.

Misalnya, afinitas CPU saat ini dari proses Gedit (PID:9726) adalah 'f'.

Untuk mengubah afinitas menjadi 0x11, gunakan perintah berikut:

taskset -p 0x11 9726

Dan kemudian Anda dapat memeriksa kembali afinitas baru menggunakan perintah berikut:

taskset -p 9726

Tangkapan layar berikut menunjukkan output untuk perintah ini dalam kasus saya:

Jadi Anda dapat melihat bahwa afinitas telah berubah.

Q3. Bagaimana cara menetapkan rentang CPU saat mengubah afinitas?

Ini bukan masalah besar. Yang harus Anda lakukan adalah menambahkan opsi baris perintah -c ke perintah yang telah kita gunakan di bagian sebelumnya bersama dengan rentang inti CPU sebagai input.

Berikut ini contohnya:

taskset -cp 0,3 9726

Berikut adalah output yang dihasilkan dalam kasus ini:

pid 9726's current affinity list: 0
pid 9726's new affinity list: 0,3

Q4. Bagaimana cara meluncurkan proses dengan afinitas CPU yang telah ditentukan sebelumnya?

Ya, Anda juga dapat meluncurkan proses dengan afinitas CPU yang ditetapkan.

Misalnya, saya meluncurkan editor teks gedit dengan afinitas CPU 0xa.

kumpulan tugas 0xa gedit

Kesimpulan

Setuju, perintah taskset bukan untuk pengguna baris perintah rata-rata. Ini sebagian besar digunakan oleh pakar sisi server untuk pengoptimalan proses di lingkungan multi-inti. Kami telah membahas dasar-dasar alat ini di sini. Untuk info lebih lanjut, kunjungi halaman manualnya.


Linux
  1. Linux memperluas Tutorial Perintah Untuk Pemula (dengan Contoh)

  2. Tutorial perintah faktor Linux untuk pemula (dengan contoh)

  3. Tutorial Perintah Linux nproc untuk Pemula (dengan Contoh)

  1. Linux ya Tutorial Perintah untuk Pemula (dengan Contoh)

  2. Tutorial Perintah Linux tac untuk Pemula (dengan Contoh)

  3. Tutorial Perintah Pengguna Linux untuk Pemula (dengan Contoh)

  1. Tutorial Perintah penjumlahan Linux untuk Pemula (dengan Contoh)

  2. Tutorial Perintah tidur Linux untuk Pemula (dengan Contoh)

  3. Tutorial Perintah nama dasar Linux untuk Pemula (dengan Contoh)