GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur Memori Docker dan Batas Penggunaan CPU

Pendahuluan

Secara default, wadah Docker memiliki akses ke RAM penuh dan sumber daya CPU dari host. Membiarkannya berjalan dengan setelan default ini dapat menyebabkan kemacetan kinerja.

Jika Anda tidak membatasi penggunaan memori dan CPU Docker, Docker dapat menggunakan semua sumber daya sistem.

Dalam tutorial ini, pelajari cara membatasi penggunaan memori dan CPU dari container Docker.

Konfigurasikan Sistem untuk Mengaktifkan Pembatasan Sumber Daya

Sebelum Anda dapat menjalankan wadah dengan sumber daya terbatas, periksa apakah sistem Anda mendukung opsi Docker ini. Panduan ini menunjukkan cara melakukannya di Ubuntu, serta cara mengaktifkan fitur ini jika diperlukan.

1. Pertama, jalankan perintah:

sudo docker info

Jika Anda menerima output WARNING: No swap limit support , membatasi sumber daya belum diaktifkan secara default.

2. Untuk menambahkan opsi ini, edit file konfigurasi grub. Buka file dalam editor teks pilihan Anda (kami menggunakan nano):

sudo nano /etc/default/grub

3. Kemudian, tambahkan baris berikut:

GRUB_CMDLINE_LINUX="cdgroup_enable=memory swapaccount=1"

4. Simpan perubahan dan keluar dari file.

5. Kemudian, update konfigurasi grub dengan perintah:

sudo update-grub

6. Terakhir, reboot mesin Anda agar perubahan terjadi.

7. Untuk memverifikasi bahwa Anda telah berhasil mengaktifkan fitur Docker yang diberikan dengan menjalankan kembali docker info perintah.

Batasi Akses Memori Kontainer Docker

Ada beberapa batasan RAM yang dapat Anda atur untuk wadah Docker. Beberapa di antaranya adalah:

  • Mengonfigurasi jumlah maksimum memori yang dapat digunakan wadah.
  • Menentukan jumlah memori yang dapat ditukar oleh wadah Docker ke disk.
  • Menyetel batas lunak untuk jumlah memori yang ditetapkan ke wadah.

Di bawah, cari tahu cara mengonfigurasi batasan memori Docker.

Setel Akses Memori Maksimum

Untuk membatasi jumlah maksimum penggunaan memori untuk sebuah wadah, tambahkan --memory opsi untuk docker run memerintah. Atau, Anda dapat menggunakan pintasan -m .

Di dalam perintah, tentukan berapa banyak memori yang ingin Anda dedikasikan untuk wadah tertentu.

Perintah harus mengikuti sintaks:

sudo docker run -it --memory="[memory_limit]" [docker_image]

Nilai memory_limit harus bilangan bulat positif diikuti dengan akhiran b , k , m , atau g (singkatan dari byte, kilobyte, megabyte, atau gigabyte). Misalnya, untuk membatasi container dengan RAM 1 GB, tambahkan --memory="1g" .

Misalnya, untuk menjalankan instance container Ubuntu dan menyetel batas memori ke 1 GB, perintahnya adalah:

sudo docker run -it --memory="1g" ubuntu

Setel Tukar ke Batas Memori Disk

Menggunakan swap opsi memungkinkan Anda untuk menyimpan data bahkan setelah semua RAM yang ditetapkan ke wadah telah habis. Ini dilakukan dengan mengabaikan batasan memori dan menulis langsung ke disk. Meskipun ini adalah fitur yang berguna, ini bukan praktik yang disarankan karena memperlambat kinerja.

Untuk mengkonfigurasi ruang RAM tambahan ini, tentukan jumlah total memori swap. Sebelum melakukan ini, Anda harus sudah memiliki memori maksimum (--memory ) dari set memori non-swap. Swap mencakup jumlah total memori non-swap ditambah jumlah memori swap dicadangkan sebagai cadangan.

Misalnya, jika Anda menyetel --memory hingga 1 GB , seperti pada contoh di atas, jumlah memori swap harus lebih dari itu. Untuk menjalankan penampung dengan tambahan 1 GB memori swap, setel memori swap ke 2 GB .

Sintaks untuk menjalankan container dengan memori terbatas dan memori swap tambahan adalah:

sudo docker run -it --memory="[memory_limit]" --memory-swap="[memory_limit]" [docker_image]

Misalnya, untuk menjalankan container dari image Ubuntu, menetapkan 1 GB RAM untuk container yang akan digunakan dan menyimpan 1 GB RAM untuk memori swap, ketik:

sudo docker run -it --memory="1g" --memory-swap="2g" ubuntu

Tetapkan Batas Lunak ke Memori Kontainer

Membatasi penggunaan memori wadah dengan --memory pada dasarnya menetapkan batas keras yang tidak dapat dilampaui. Atau, Anda dapat menetapkan batas lunak (--memory-reservation ) yang memperingatkan saat container mencapai akhir memori yang ditetapkan, tetapi tidak menghentikan layanan apa pun.

Jika --memory batasan lihat tidak disetel, menyetel batas lunak dengan --memory-reservation tidak sepenuhnya membatasi ruang kontainer. Jika Anda mengaktifkan kedua fitur tersebut, batas lunak selalu lebih rendah dari kapasitas ruang maksimum.

Sebagai contoh, untuk wadah Ubuntu memiliki cadangan memori 750 MB dan kapasitas RAM maksimum 1 BG , gunakan perintah:

sudo docker run -it --memory="1g" --memory-reservation="750m" ubuntu

Batasi Penggunaan CPU Kontainer Docker

Sama seperti penggunaan RAM, wadah Docker tidak memiliki batasan default untuk CPU host. Memberi container penggunaan CPU tanpa batas dapat menyebabkan masalah.

Ada beberapa cara untuk menentukan berapa banyak sumber daya CPU dari mesin host yang ingin Anda tetapkan ke container.

Misalnya, jika Anda memiliki host dengan 2 CPU dan ingin memberikan akses container ke salah satunya, gunakan opsi --cpus="1.0" . Perintah untuk menjalankan container Ubuntu dengan akses ke 1 CPU adalah:

sudo docker run -it --cpus="1.0" ubuntu

Anda juga dapat menggunakan --cpu-shares opsi untuk memberi wadah proporsi siklus CPU yang lebih besar atau lebih kecil. Secara default, ini disetel ke 1024 .

Untuk menjalankan container dengan pembagian CPU yang lebih sedikit, jalankan:

sudo docker run -it --cpus-shares="700" ubuntu

Untuk menemukan lebih banyak opsi untuk membatasi penggunaan CPU container, silakan merujuk ke dokumentasi resmi Docker.


Ubuntu
  1. Cara Membatasi Penggunaan CPU Suatu Proses Di Linux

  2. Cara Menemukan Proses Berjalan Teratas berdasarkan Memori dan Penggunaan CPU

  3. Bagaimana Pipeline Membatasi Penggunaan Memori?

  1. Temukan 10 Proses Berjalan Teratas berdasarkan Memori dan Penggunaan CPU

  2. Ambil penggunaan CPU dan penggunaan memori dari satu proses di Linux?

  3. Cara mendapatkan penggunaan CPU

  1. Batasi memori dan cpu dengan lxc-execute

  2. Bagaimana cara membatasi penggunaan memori aplikasi?

  3. Bagaimana cara membatasi penggunaan memori berdasarkan aplikasi di linux?