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?
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?
Jawaban:
Seperti yang disebutkan Charles, secara default semua dapat digunakan, atau Anda dapat membatasinya per penampung menggunakan --cpuset-cpusparameter.
docker run --cpuset-cpus="0-2" myapp:latest
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:
docker run --cpus 2.5 myapp:latest
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:
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 . :
docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default
Setelah langkah ini Anda dapat menentukan jumlah inti sebelum menjalankan gambar Anda. perintah ini akan menggunakan 4 inti dari total 8 inti.
docker run -it --cpuset-cpus="0-3" your_image_name
Kemudian Anda dapat memeriksa jumlah inti yang tersedia di gambar Anda menggunakan perintah ini:
nproc
--cpuset-cpusapakah Anda ingin mengubahnya.