Di mana saya bekerja, kami memiliki banyak server "besi besar" yang digunakan untuk hosting banyak mesin virtual menggunakan Xen Hypervisor. Ini biasanya dikonfigurasikan dengan RAM 32GB, proses inti Quad Ganda dan disk cepat dengan sekumpulan kapasitas I / O.
Kita berada pada titik di mana konfigurasi perangkat keras yang ada semakin lama, dan sekarang saatnya untuk keluar dan mencari perangkat keras baru yang lebih besar, lebih cepat, dan lebih bersinar.
Seperti disebutkan di atas, kit yang ada telah dikerahkan dengan RAM 32GB dan yang secara efektif membatasi jumlah VM yang dapat kita gunakan untuk host.
Dalam menyelidiki perangkat keras yang lebih baru, terbukti bahwa Anda bisa mendapatkan lebih banyak dan lebih banyak RAM dalam satu mesin dengan 64, 72 atau bahkan 96GB dalam satu sasis. Jelas, ini akan memungkinkan kita untuk mendapatkan lebih banyak mesin ke host yang diberikan yang selalu menang. Analisis yang diselesaikan sejauh ini menunjukkan bahwa faktor pembatas sekarang akan dialihkan ke subsistem disk.
Masalahnya sekarang, mencoba untuk mendapatkan beberapa ide di mana kita berada ... Berdasarkan penggunaannya, kita tahu bahwa kita tidak terbatas dalam hal bandwidth I / O, lebih-lebih, jumlah acak I / O operasi yang dapat diselesaikan .. Kita tahu secara anekdot bahwa sekali kita mencapai titik ini maka iowait akan naik roket dan seluruh kinerja mesin akan pergi ke anjing.
Sekarang ini adalah inti dari pertanyaan yang saya ajukan, adakah yang mengetahui cara untuk secara akurat melacak / tren kinerja I / O yang ada secara khusus sehubungan dengan jumlah operasi I / O acak yang sedang diselesaikan?
Apa yang saya benar-benar mencoba untuk mendapatkan metrik adalah "konfigurasi ini dapat berhasil menangani sejumlah X permintaan I / O acak, dan kami saat ini (rata-rata) melakukan ops Y dengan puncak Z ops".
Terima kasih sebelumnya!
sumber
Kami menggunakan collectl karena kami dapat menarik semua informasi yang diperlukan ke dalam satu file dan memutar ulang statistik yang diperlukan. Ini akan memungkinkan Anda melihat jumlah IOPS per interval perekaman, sakelar konteks, statistik memori. Anda dapat memecah ini per disk atau hanya melihat keseluruhan sistem. Collectl juga mendukung kilau.
Ini adalah alat yang hebat untuk mendapatkan gambaran umum kinerja sistem total. Semoga berhasil, dari pengamatan disk SATA biasanya berada di antara 200-300 IOPS saat melakukan akses acak.
sumber
Kami merekam dan membuat grafik I / O disk dengan cara yang sama seperti yang kami lakukan pada semua metrik lainnya:
Data ditarik dari host menggunakan SNMP. Kotak NAS / SAN kami melakukan ini secara asli. Kami menggunakan net-snmp pada semua host Linux, yang menyediakan informasi ini dari USB-DISKIO-MIB .
Data disimpan (dalam format RRD) dan dibuat grafik menggunakan Cacti . Beberapa templat Disk IO memberi kami hitungan dan ukuran transaksi, ditampilkan dalam format arus, rata-rata, dan puncak yang biasa.
Metrik ini tidak selalu terbatas seperti menggunakan
iostat
/dstat
/sar
pada host. Tetapi ini adalah api dan lupa, yang akan diatur secara otomatis ketika mesin baru ditugaskan, disimpan secara terpusat dan tetap tersedia untuk referensi di masa mendatang.Kami menggunakan data ini untuk mengingatkan kami tentang tren yang tidak biasa pada basis operasional dan selalu menoleh ke belakang setiap kali melakukan perencanaan kapasitas.
Ada beberapa masalah dengan ini:
Cukup sulit untuk memisahkan dan mengukur I / O acak dari I / O berurutan. Karena perbedaan mendasar antara keduanya adalah lokasi fisik blok yang disimpan pada piringan disk. Anda dapat membuat tebakan berpendidikan dari ukuran transaksi, dengan dasar bahwa banyak transaksi kecil mungkin berhubungan dengan file kecil yang bertitik tentang disk. Tapi tidak ada jaminan. Ini mungkin akan membaca jumlah kecil data secara berurutan dari satu file atau bersebelahan blok pada disk.
Merekam metrik akan memberi Anda gambaran yang sangat baik tentang apa komitmen Anda hari ini, bagaimana mereka berubah dari waktu ke waktu dan bagaimana mereka akan berubah di masa depan. Apa yang tidak akan memberitahu Anda adalah apa langit-langitnya. Setidaknya tidak sebelum terlambat. Untuk menentukan ini, Anda perlu melakukan beberapa matematika (dari spesifikasi perangkat keras Anda), benchmarking (saya suka
bonnie++
diri saya sendiri) dan sangat membantu untuk memiliki beberapa ide logistik tentang apa yang sedang dilakukan / digunakan oleh domUs tersebut.sumber
Bergantung pada backend penyimpanan Anda (IBM SVC / DS8000) Anda mungkin dapat menarik statistik yang berkaitan dengan IOPS acak dari itu secara langsung.
Untuk menarik statistik dari server, Anda dapat menggunakan nmon . Gratis (seperti bir). Awalnya dikembangkan oleh IBM untuk AIX, juga berjalan di Linux.
sumber
Jika orang menggunakan SAR saya setidaknya berharap Anda mengambil sampel data Anda setiap detik. Ketika saya menggunakan collectl I sampel sekali / detik. Sejauh mengukur seberapa baik Anda melakukannya secara acak I / O, gunakan alat seperti Robin Miller dt (google it) dan Anda dapat dengan mudah menghasilkan BANYAK I / O acak dan kemudian hanya mengukur dengan collectl untuk melihat berapa banyak Anda bisa lakukan per detik. Disk biasa biasanya melakukan maksimum 200-300 I / Os / detik, berdasarkan cukup banyak pada latensi rotasi. Ukuran blok memiliki efek minimal karena menunggu 1/2 revolusi untuk disk berada di lokasi yang tepat melebihi segalanya.
btw - iowait adalah salah satu pengukuran yang paling disalahpahami. Tidak ada hubungannya dengan beban cpu, itu hanya berarti cpu tidak melakukan hal lain ketika I / O sedang terjadi. Bahkan jika Anda berada di iowait 100% pada dasarnya berarti Anda 100% menganggur!
-menandai
sumber