Analisis Bottleneck CPU Linux: Panduan Diagnostik & Perintah Terminal

Metode Diagnostik Bottleneck CPU di Linux

Bottleneck CPU pada sistem Linux terjadi ketika prosesor tidak mampu memproses antrean instruksi secepat permintaan yang masuk, yang ditandai dengan tingginya nilai load average dan persentase iowait atau user/system time yang mencapai batas maksimal. Untuk mendiagnosisnya, Anda harus membedakan antara beban kerja yang intensif pada komputasi (CPU-bound) atau yang menunggu input/output (I/O-bound).

Perintah Utama untuk Analisis Real-time

Gunakan alat bantu berikut untuk memantau performa CPU secara instan:

PerintahFungsi UtamaIndikator Bottleneck
topMonitoring proses sistem%CPU tinggi pada satu proses
htopVisualisasi proses interaktifBar CPU mencapai 100% secara konsisten
mpstatAnalisis per core CPU%iowait tinggi menunjukkan bottleneck I/O
sarAnalisis historis performaTren load average di atas jumlah core

Langkah Teknis Identifikasi

Ikuti prosedur berikut untuk menemukan penyebab bottleneck:

  1. Cek Load Average: Jalankan perintah uptime atau top. Jika nilai load average (1, 5, 15 menit) lebih besar dari jumlah core CPU Anda, sistem sedang mengalami antrean proses yang signifikan.
  2. Analisis Penggunaan Core: Gunakan mpstat -P ALL 1 untuk melihat apakah beban terdistribusi merata atau hanya menumpuk di satu core (indikasi aplikasi single-threaded yang berat).
  3. Identifikasi I/O Wait: Jika nilai %iowait tinggi, bottleneck bukan pada CPU, melainkan pada kecepatan baca/tulis disk (storage).
  4. Cek Proses Dominan: Gunakan top lalu tekan P untuk mengurutkan berdasarkan penggunaan CPU tertinggi.

Script Monitoring Sederhana

Gunakan cuplikan kode berikut untuk mencatat penggunaan CPU ke dalam log jika terjadi lonjakan:

#!/bin/bash
# Cek penggunaan CPU setiap 5 detik
while true; do
  cpu_load=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
  if (( $(echo "$cpu_load > 90.0" | bc -l) )); then
    echo "$(date): Peringatan! Beban CPU tinggi: $cpu_load%" >> /var/log/cpu_bottleneck.log
  fi
  sleep 5
done

Tips Troubleshooting

  • Affinity CPU: Jika aplikasi tertentu memonopoli core, gunakan taskset untuk membatasi proses ke core spesifik.
  • Nice Value: Gunakan perintah renice untuk menurunkan prioritas proses yang tidak krusial agar tidak mengganggu proses utama.
  • Update Kernel: Pastikan kernel Linux Anda mendukung penjadwalan proses terbaru untuk arsitektur CPU yang digunakan.