Tutorial ini menjelaskan cara membatasi penggunaan CPU di Ubuntu 18.04. Saya akan menggunakan utilitas cpulimit untuk tujuan ini. Cpulimit adalah alat yang membatasi penggunaan CPU dari suatu proses (dinyatakan dalam persentase, bukan dalam waktu CPU). Berguna untuk mengontrol pekerjaan batch ketika Anda tidak ingin mereka memakan terlalu banyak siklus CPU. Tujuan dari cpulimit adalah untuk mencegah proses berjalan lebih dari rasio waktu yang ditentukan. Itu tidak mengubah nilai bagus atau pengaturan prioritas penjadwalan lainnya, tetapi penggunaan CPU yang sebenarnya. Selain itu, ia mampu menyesuaikan diri dengan beban sistem secara keseluruhan, secara dinamis dan cepat.
Kontrol jumlah CPU yang digunakan dilakukan dengan mengirimkan sinyal SIGSTOP dan SIGCONT POSIX ke proses. Semua proses anak dan utas dari proses yang ditentukan akan berbagi persentase CPU yang sama.
1 Catatan Awal
Tutorial ini didasarkan pada server Ubuntu 18.04 LTS (Bionic Beaver), jadi Anda harus menyiapkan instalasi server dasar Ubuntu 18.04 sebelum melanjutkan dengan tutorial ini. Sistem harus memiliki alamat IP statis. Saya menggunakan 192.168.1.100 sebagai alamat IP saya dalam tutorial ini dan server1.example.com sebagai nama host.
2 Instalasi CPULimit
Pertama kita perlu menginstal cpulimit sebagai berikut:
apt-get update
apt-get install cpulimit
3 Membatasi penggunaan CPU
Sekarang kita akan memeriksa utilitas untuk membatasi penggunaan CPU. Untuk ini, pertama-tama kami akan memeriksa penggunaan CPU tanpa cpulimit dan kemudian mengimplementasikan cpulimit untuk mengevaluasi hal yang sama. Mari kita perjelas dengan contoh.
- Berikut adalah contoh cara menggunakan CPU Anda dengan aplikasi di CPU inti tunggal:
dd if=/dev/zero of=/dev/null &
Kemudian kita akan memeriksa penggunaan CPU dengan perintah:
top
top - 11:24:18 up 49 min, 1 user, load average: 0.94, 1.02, 1.79
Tasks: 249 total, 2 running, 247 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.4 us, 11.6 sy, 0.0 ni, 74.9 id, 0.0 wa, 0.1 hi, 0.0 si, 0.0 st
KiB Mem: 1010540 total, 271652 used, 738888 free, 21760 buffers
KiB Swap: 1048572 total, 0 used, 1048572 free. 158204 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1850 root 20 0 7224 616 520 R 100.0 0.1 1:20.33 dd
1851 root 20 0 24952 1756 1180 R 0.3 0.2 0:00.03 top
1 root 20 0 33480 2776 1456 S 0.0 0.3 0:05.31 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
Seperti yang kita lihat bahwa penggunaan CPU telah mencapai 100%, sekarang kita akan menggunakan cpulimit untuk membatasi penggunaan CPU. Kita dapat memunculkan proses ini ke latar depan menggunakan fg perintah dan batalkan dengan CTRL+C
fg
Sekarang kita dapat menguji cpulimit untuk melihat apakah itu benar-benar melakukan apa yang seharusnya. Mari kita uji sebagai berikut:
cpulimit -l 30 dd if=/dev/zero of=/dev/null &[email protected]:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[1] 1852
[email protected]:~# Proses 1853 terdeteksi
[1]+ Selesai cpulimit -l 30 dd if=/dev/zero of=/dev/null
[email protected]:~#
Sekarang kita akan memeriksa penggunaan CPU dengan perintah atas:
topatas - 11:30:54 hingga 55 menit, 1 pengguna, rata-rata pemuatan:0,20, 0,58, 1,34
Tugas:250 total, 2 berjalan, 247 tidur, 1 berhenti, 0 zombie
%Cpu(s ): 4.5 us, 4.1 sy, 0.0 ni, 91.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1010540 total, 271944 used, 738596 free, 21816 buffers
KiB Swap:1048572 total, 0 digunakan, 1048572 gratis. 158212 cache Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1853 root 20 3 20 ; /kuat> 0.1 0:35.53 dd
1 root 20 0 33480 2776 1456 s 0.0 0.3 0:05.37 init
2 root 20 0 0 0 0 s 0.0 0.0 0:00.01 Kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 k
Sekarang Anda dapat melihat bahwa penggunaan CPU telah menurun dari 100% menjadi 33,8% hampir 30%. Jadi kami telah berhasil memeriksa utilitas cpulimit yang mampu membatasi penggunaan konsumsi CPU dalam satu distro Ubuntu inti.
- Berikut adalah contoh cara menggunakan CPU Anda dengan aplikasi di CPU multi-core:
Untuk memeriksa inti CPU Anda gunakan perintah:
nproc
Dalam kasus saya, jumlah inti CPU adalah 4.
Sekarang kita akan melanjutkan untuk memeriksa penggunaan CPU tanpa cpulimit di semua 4 inti untuk aplikasi sebagai berikut:
for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done
Ini akan menjalankan perintah menggunakan semua inti dan menghasilkan output sebagai:
[1] 1263
[2] 1264
[3] 1265
[4] 1266
[dilindungi email]:~#
Sekarang periksa penggunaan CPU dengan perintah teratas:
topatas - 11:47:45 hingga 4 mnt, 1 pengguna, rata-rata pemuatan:3,63, 1,53, 0,57
Tugas:total 290, 5 berjalan, 285 tidur, 0 berhenti, 0 zombie
%Cpu0 :48,3 us, 51.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
%Cpu1 :47.8 us, 52.2 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 :53.3 us, 46.4 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
%Cpu3 :52.0 us, 48.0 sy, 0.0 ni, 0.0 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1010540 total, 209712 digunakan, 800828 gratis, 20276 buffer
KiB Swap: 1048572 total, 0 digunakan, 1048572 gratis. 93632 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1263 root 20 "> /kuat> 0.1 2:21.40 dd
1264 root 20 0 7224 616 520 R 100.0 0.1 2:21.41 dd
1265 root 20 0 7224 612 520 R 99,0 0.1 2:21.03 dd
1266 root 20 0 7224 616 520 R 98.0 0.1 2:20.82 DD
1281 Root 20 0 104416 3992 2920 S 1.0 0.4 0:00.03 SSHD
1283 Root 20 0 104416 3988 2920 S 1.0 0.4 0:00.03 SSHD
1279 Root 20 0 0.0 0.4 0:00.03 SSHD
1279 ROOT 20 0 0.0 0.4 0:00.03 SSHD
1279 ROOT 20 0 0.0 0.4 0:4008 2924 S 0,7 0,4 0:00.08 sshd
Perintah dd menghabiskan hampir 100% CPU dari semua inti. Selanjutnya, kita akan memeriksa perintah dengan utilitas cpulimit. Untuk ini, matikan jejak sebelumnya untuk perintah dd sebagai berikut:
killall dd[email protected]:~# killall dd
[1] Dihentikan dd if=/dev/zero of=/dev/null
[3]- Dihentikan dd if=/dev/zero of=/dev /null
[2]- Dihentikan dd if=/dev/zero of=/dev/null
[4]+ Dihentikan dd if=/dev/zero of=/dev/null
[dilindungi email]:~#
Sekarang gunakan cpulimit dengan perintah yang sama sebagai berikut:
for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done[dilindungi email]:~# untuk j di `seq 1 4`; lakukan cpulimit -l 20 dd if=/dev/zero of=/dev/null &done
[1] 1429
[2] 1430
[3] 1431
[4 ] 1432
[email protected]:~# Proses 1434 terdeteksi
Proses 1433 terdeteksi
Proses 1437 terdeteksi
Proses 1439 terdeteksi
[1] Selesai cpulimit -l 20 dd if=/dev/zero of=/dev/null
[2] Selesai cpulimit -l 20 dd if=/dev/zero of=/dev/null
[3]- Selesai cpulimit -l 20 dd if=/dev/zero of=/dev/null
[4]+ Selesai cpulimit -l 20 dd if=/dev/zero of=/dev/null
[email protected ]:~#
Sekarang periksa penggunaan CPU dengan utilitas cpulimit.
topatas - 11:59:10 hingga 16 menit, 2 pengguna, rata-rata pemuatan:0,47, 0,71, 0,81
Tugas:256 total, 2 berjalan, 251 tidur, 3 berhenti, 0 zombie
%Cpu0 : 2.0 us, 2.0 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 :26.2 us, 22.8 sy, 0.0 ni, 50.7 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
%Cpu2 :14.0 us, 12.3 sy, 0.0 ni, 73.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 :13.3 us, 11.6 sy, 0.0 ni, 75.1 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1010540 total, 204064 digunakan, 806476 gratis, 20408 buffer
KiB Swap: 1048572 total, 0 digunakan, 1048572 gratis. 98340 Mem cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1433 root > 20 > 20 12 24 0.1 0:12.00 dd
1439 root 20 0 7224 616 520 R 26.6 0.1 0:12.13 dd
1434 root 20 0 7224 612 520 T 25,3 0.1 0:11.97 dd
1437 root 20 0 7224 612 516 T 22.9 0.1 0:11.93 dd
7 root 20 0 0 0 0 s 0.3 0.0 0:00.22 RCU_SCHED
8 Root 20 0 0 0 0 S 0.3 0.0 0:00.21 RCUOS /0
Seperti yang Anda lihat di atas bahwa penggunaan CPU dibatasi dari 100% hingga 20% hampir untuk beberapa CPU inti.
Selamat! Kami telah berhasil menguji cpulimit untuk membatasi penggunaan CPU di Ubuntu 18.04 :)
4 Tautan
- Ubuntu :http://www.ubuntu.com/
- cpulimit :https://github.com/opsengine/cpulimit