Katakanlah saya menjalankan layanan multiprosesing di dalam kontainer buruh pelabuhan yang menghasilkan banyak proses, apakah pekerja pelabuhan akan menggunakan semua / beberapa inti / CPU dari host atau hanya satu?
120
Katakanlah saya menjalankan layanan multiprosesing di dalam kontainer buruh pelabuhan yang menghasilkan banyak proses, apakah pekerja pelabuhan akan menggunakan semua / beberapa inti / CPU dari host atau hanya satu?
--cpuset-cpus
apakah Anda ingin mengubahnya.Jawaban:
Seperti yang disebutkan Charles, secara default semua dapat digunakan, atau Anda dapat membatasinya per penampung menggunakan
--cpuset-cpus
parameter.Itu akan membatasi penampung menjadi 3 CPU (0, 1, dan 2). Lihat dokumentasi menjalankan buruh pelabuhan untuk lebih jelasnya.
Cara yang disukai untuk membatasi penggunaan CPU atas kontainer adalah dengan batas pecahan pada CPU:
Itu akan membatasi penampung Anda menjadi 2,5 core pada host.
Terakhir, jika Anda menjalankan buruh pelabuhan di dalam VM, termasuk Docker untuk Mac, Docker untuk Windows, dan mesin buruh pelabuhan, VM tersebut akan memiliki batas CPU terpisah dari laptop Anda sendiri. Docker berjalan di dalam VM itu dan akan menggunakan semua sumber daya yang diberikan ke VM itu sendiri. Misalnya dengan Docker untuk Mac Anda memiliki menu berikut:
sumber
Mungkin VM host Anda hanya memiliki satu inti secara default. Oleh karena itu Anda harus meningkatkan VM cpu-count Anda terlebih dahulu dan kemudian menggunakan opsi --cpuset-cpus untuk meningkatkan inti buruh pelabuhan Anda. Anda dapat menghapus VM default buruh pelabuhan menggunakan perintah berikut, lalu Anda dapat membuat VM lain dengan opsional cpu-count dan ukuran memori . :
Setelah langkah ini Anda dapat menentukan jumlah inti sebelum menjalankan gambar Anda. perintah ini akan menggunakan 4 inti dari total 8 inti.
Kemudian Anda dapat memeriksa jumlah inti yang tersedia di gambar Anda menggunakan perintah ini:
sumber