Saya menjalankan dua server Dell R410 di rak pusat data yang sama (di belakang load balancer). Keduanya memiliki konfigurasi perangkat keras yang sama, jalankan Ubuntu 10.4, memiliki paket yang sama diinstal dan menjalankan server web Java yang sama (tidak ada beban lain) dan saya melihat perbedaan kinerja yang substansial antara keduanya.
Perbedaan kinerja paling jelas dalam waktu respons rata-rata dari kedua server (diukur dalam aplikasi Java itu sendiri, tanpa latensi jaringan): Salah satunya adalah 20-30% lebih cepat daripada yang lain, sangat konsisten.
Saya dulu dstat
mencari tahu, jika ada lebih banyak konteks switch, IO, swapping atau apa pun, tapi saya tidak melihat alasan perbedaannya. Dengan beban kerja yang sama, (tanpa pertukaran, hampir tanpa IO), penggunaan dan beban cpu lebih tinggi pada satu server.
Jadi perbedaannya tampaknya sebagian besar terikat CPU, tetapi sementara benchmark cpu sederhana menggunakan sysbench
(dengan semua beban lainnya dimatikan) memang menghasilkan perbedaan, itu hanya 6%. Jadi mungkin bukan hanya CPU tetapi juga kinerja memori.
Sejauh ini saya sudah memeriksa:
- Revisi firmware pada semua komponen (identik)
- Pengaturan BIOS (saya menggunakan dump
dmidecode
, dan itu tidak menunjukkan perbedaan) - Saya membandingkan
/proc/cpuinfo
, tidak ada perbedaan. - Saya membandingkan output
cpufreq-info
, tidak ada perbedaan. - Parameter Java / JVM (versi dan parameter yang sama pada kedua sistem)
Juga, saya benar-benar mengganti RAM beberapa bulan yang lalu, tanpa efek apa pun.
Saya tersesat. Apa yang bisa saya lakukan untuk mencari tahu, apa yang sedang terjadi?
PEMBARUAN : Yay! Kedua server berkinerja sama sekarang. Itu adalah pengaturan "power CRAP" ketika jim_m_som memberi nama mereka di komentar. Opsi BIOS untuk "Manajemen Daya" ada di "Kinerja Maksimum" pada server cepat, dan "Kontrol Daya Aktif" (pengaturan default dari Dell) pada yang lain. Jelas saya lupa, bahwa saya membuat pengaturan itu dua tahun lalu, dan saya tidak melakukan itu di semua server. Terima kasih untuk semua atas masukan Anda yang sangat membantu!
sumber
Jawaban:
Dua ide, tergantung pada seberapa jauh Anda ingin melakukan ini:
Tukar disk kedua server dan lihat apakah kinerja kecepatan tetap pada perangkat keras atau bergerak dengan perangkat lunak.
Bandingkan hasilnya
/opt/dell/toolkit/bin/syscfg -o complete-bios-config.out
jika Anda bisa mengelabui paket ini untuk menginstal.sumber
Lebih banyak kemungkinan untuk dihasilkan dan dif:
sumber
Ini terdengar seperti penyeimbang beban yang terkait dengan saya. Ketika Anda mengatakan "beban kerja yang sama" bagaimana Anda mengukur ini?
Apakah Anda secara langsung melakukan benchmarking pada setiap server dengan menerapkan beban uji secara terpisah?
atau Apakah Anda menerapkan beberapa beban ke penyeimbang beban dan melihat hasilnya di kedua server?
Jika Anda melakukan yang terakhir (mengukur beban yang ditempatkan pada kedua server melalui penyeimbang beban) penyeimbang beban Anda mungkin tidak membagi beban kerja secara merata di antara server (kemiringan 20% untuk sepasang server tidak jarang tergantung pada bagaimana penyeimbang beban Anda memutuskan siapa yang menerima permintaan mana), yang menyebabkan satu server menerima lebih banyak muatan, dan karenanya berkinerja buruk.
(Jika Anda secara langsung membuat tolok ukur setiap server, secara terpisah, tanpa menggunakan penyeimbang beban sebagai perantara, dan Anda telah memverifikasi bahwa setiap komponen identik (turun ke revisi pabrikan) antara kedua sistem maka saya bingung - Saya tidak dapat memikirkan alasan lain yang dapat diukur untuk perbedaan kinerja semacam ini antara server yang identik)
sumber
Coba beberapa alat profil, baik profil sistem seperti perf atau Java profiling seperti VisualVM .
Dengan perf, Anda dapat membuat profil proses Java yang berjalan dengan PID atau membuat profil benchmark. Lihatlah kedua sistem, lihat di mana sistem lambat menghabiskan waktunya.
Maka sesuatu seperti:
atau
kemudian
Beberapa ide tentang bagaimana sistem dapat bekerja secara berbeda:
Lingkungan: Apakah suhu udara atau aliran udara berbeda? Apakah mereka ada di rak? Saya telah melihat sistem bekerja secara berbeda pada posisi rak yang berbeda, yang disebabkan oleh getaran. Ada berbagai tingkat getaran di setiap rak. Ini tidak mungkin, mengingat Anda mengatakan hampir tidak ada I / O yang digunakan. Tapi saya telah melihat disk memperlambat hingga 2MB / sec menulis berurutan karena getaran di bagian rak.
Kesalahan Perangkat Keras: Perangkat keras apa pun bisa rusak. Gunakan profil untuk melihat apa yang lambat. Ini bisa berupa CPU atau chipset yang buruk, heatsink yang tidak terpasang dengan benar, kipas yang tidak seimbang menyebabkan getaran, kipas yang gagal, bahkan PSU yang buruk. Cobalah menukar hal-hal yang mudah ditukar.
sumber
Mengapa tidak ada yang menyarankan 'sysprof' ..?
Inilah yang dirancang untuk itu.
Atau ummm pikir kedua ... coba isikan beberapa batasan di /etc/security/limits.conf
Coba keduanya.
Jika Anda tidak mendapatkan apa-apa .... kemungkinan besar Anda memiliki masalah keamanan atau cacat fisik.
lihat juga: Server linux saya "Jumlah proses yang dibuat" dan "Sakelar konteks" berkembang sangat cepat
sumber