- Secara umum, batas performa server dinilai dari tingkat penggunaan % CPU pada alat pemantauan seperti
top, tetapi pada kenyataannya metrik ini tidak mencerminkan performa secara linear
- Hasil pengujian dengan stress-ng pada lingkungan Ryzen 9 5900X menunjukkan bahwa saat penggunaan 50%, beban kerja nyata sudah mencapai 60~100%, sehingga ada selisih besar dengan metrik tersebut
- Penyebab utamanya adalah hyper-threading dan turbo boost, di mana berbagi sumber daya antar core logis dan perubahan kecepatan clock mendistorsi metrik
- Karena itu, alih-alih hanya melihat penggunaan CPU, membandingkan benchmark beban kerja nyata yang dapat diproses dengan throughput saat ini adalah indikator yang lebih akurat
- Jika penggunaan CPU ditafsirkan secara linear, estimasi performa bisa sangat meleset, sehingga saat merencanakan sistem diperlukan pendekatan berbasis benchmark
Ketidaksesuaian antara angka penggunaan CPU server dan throughput nyata
- Saat mengoperasikan server, banyak orang ingin memastikan apakah sistem sudah mendekati penggunaan maksimum
- Umumnya mereka merujuk pada nilai tertinggi di antara penggunaan jaringan, memori, dan CPU melalui alat pemantauan seperti
top
- Namun dalam praktiknya muncul masalah bahwa angka penggunaan CPU dan jumlah pekerjaan yang benar-benar bisa diproses tidak meningkat secara linear
Lingkungan dan metode pengujian
- Eksperimen berbasis Ubuntu desktop + Ryzen 9 5900X (12 core/24 thread)
- Precision Boost Overdrive (Turbo) diaktifkan
- Mensimulasikan berbagai beban dengan stress-ng (1~24 worker, penggunaan 1~100%)
- Metrik pengukuran: penggunaan CPU yang dilaporkan sistem dan jumlah komputasi nyata (Bogo ops)
Ringkasan hasil
- Beban CPU umum: pada penggunaan 50%, throughput nyata 60~65%
- Operasi integer 64-bit: pada penggunaan 50%, throughput nyata 65~85%
- Operasi matriks (Matrix math): pada penggunaan 50%, throughput nyata 80~100%
- Dalam praktiknya, walaupun worker tambahan tidak lagi berkontribusi pada performa, penggunaan CPU tetap naik
Analisis penyebab
-
Hyper-threading
- Struktur 12 core fisik + 12 core logis
- Hingga 12 worker dapat ditempatkan optimal pada core fisik, tetapi jika melebihi itu performa turun karena berbagi core logis
- Khususnya pada operasi SIMD (operasi matriks), karena sumber daya dibagi, peningkatan performa tidak terjadi
-
Turbo boost
- Pada beban rendah 4.9GHz → saat full load 4.3GHz, terjadi penurunan clock 15%
- Hal ini mendistorsi rumus perhitungan penggunaan CPU (= busy cycles / total cycles)
- Saat penyebut (jumlah total siklus) menurun, kenaikan penggunaan tampak lebih besar daripada kenaikan beban kerja nyata
Implikasi
- Penggunaan CPU bukan indikator performa absolut
- Saat menghitung kapasitas server dan memprediksi performa:
- 1. Ukur throughput maksimum dengan benchmark
- 2. Pantau throughput aktual secara real-time
- 3. Bandingkan keduanya untuk menilai apakah sudah mendekati batas performa
- Karena perbedaannya bisa besar tergantung arsitektur CPU (AMD vs Intel), efisiensi hyper-threading, dan cara kerja turbo, diperlukan analisis per prosesor
Kesimpulan
- Penggunaan CPU pada dasarnya hanya rasio siklus sibuk, bukan cerminan akurat dari performa pemrosesan nyata
- Dengan pemanfaatan yang efisien, bahkan pada "penggunaan 50%", sistem bisa saja sudah berada di 80~100% dari performa maksimum
- Karena itu, pemantauan performa dan perencanaan sistem sebaiknya berfokus pada throughput beban kerja berbasis benchmark, bukan pada penggunaan CPU
Belum ada komentar.