GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara membatasi penggunaan CPU dengan CPULimit di Ubuntu Linux

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.

  1. 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:

top
atas - 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.

  1. 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:

[dilindungi email]:~# untuk j di `seq 1 4`; lakukan dd if=/dev/zero of=/dev/null &selesai
[1] 1263
[2] 1264
[3] 1265
[4] 1266
[dilindungi email]:~#


Sekarang periksa penggunaan CPU dengan perintah teratas:

top
atas - 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.

top
atas - 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 :)

  •     Ubuntu :http://www.ubuntu.com/
  •     cpulimit :https://github.com/opsengine/cpulimit

Ubuntu
  1. Cara menginstal PostgreSQL 9.1.3 dengan pgAdmin3 di Ubuntu 11.10 / Linux Mint 12

  2. Cara Membatasi Penggunaan CPU Suatu Proses Di Linux

  3. Bagaimana melindungi sistem Linux Ubuntu Anda dengan SurfShark VPN

  1. Cara Memeriksa Utilisasi CPU di Linux dengan Command Line

  2. Cara Mengatur Memori Docker dan Batas Penggunaan CPU

  3. Cara Instal Suphp dengan Apache di Ubuntu / Linux

  1. Cara Memeriksa Suhu CPU di Linux

  2. Cara Memperbarui Kernel Linux Di Ubuntu

  3. Cara tampil sebagai DJ di Ubuntu Linux dengan Mixxx