Apakah mungkin membatasi proses Linux sehingga hanya dapat berjalan pada inti tertentu pada mesin tertentu?


10

Katakanlah saya memiliki kotak quad-core dan empat proses identik, masing-masing dengan sepuluh utas. Apakah mungkin, di Linux, untuk mengatakan bahwa Proses A hanya diperbolehkan berjalan pada CPU 0, Proses B hanya diizinkan berjalan pada CPU 1, dll?

Jawaban:


16
taskset <affinity mask> -p <process>

yaitu

taskset 1 -p 12345

untuk mengatur proses 12345 menggunakan hanya prosesor / inti 1

Bitmask dapat berupa daftar (yaitu 1,3,4 untuk menggunakan core 1 3 dan 4 dari sistem inti 4+) atau bitmask dalam hex (0x0000000D the 1,3,4, 0x00000001 hanya untuk core 1)

tasksetbiasanya dalam paket yang disebut shedutils.

Sunting: hampir lupa ... Jika Anda ingin mengatur afinitas perintah baru alih-alih mengubahnya untuk proses yang ada, gunakan:

taskset <mask> <program> [<arg1>]...[<argN>]

1

penggunaan tasket (util-linux 2.13-pre7): tasket [options] [mask | daftar cpu] [pid | cmd [args ...]] mengatur atau mendapatkan afinitas suatu proses

-p, --pid beroperasi pada pid -c yang diberikan, tampilan -cpu-list yang ada dan tentukan CPU dalam format daftar -h, --help tampilkan bantuan ini -v, - informasi versi keluaran versi

Perilaku default adalah menjalankan perintah baru: tasket 03 sshd -b 1024 Anda dapat mengambil mask dari tugas yang ada: tasket -p 700 Atau mengaturnya: tasket -p 03 700 Format daftar menggunakan daftar yang dipisahkan koma alih-alih mask: tasket -pc 0,3,7-11 700 Ranges dalam format daftar dapat mengambil argumen langkah: misalnya 0-31: 2 setara dengan mask 0x55555555

Anda dapat selalu mengoptimalkan server Anda sesuai kebutuhan Anda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.