Tren kinerja I / O acak yang tren untuk perencanaan kapasitas

11

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!

Keiran Holloway
sumber

Jawaban:

5

sarmelakukan pekerjaan dengan baik di sini; itu akan mengumpulkan jumlah transaksi serta sektor baca / tulis per detik, yang dapat digunakan untuk memutar ulang beban kerja IO Anda dengan akurasi yang relatif baik (dalam hal rasio baca / tulis, serta ukuran transaksi, yang merupakan menentukan faktor seberapa "acak" IO Anda). Ini tidak sempurna, tetapi menurut pengalaman saya, ini melakukan pekerjaan yang cukup baik untuk melakukan estimasi yang Anda lihat.

womble
sumber
2

Jadi, ini terlihat seperti masalah pemantauan dan pelaporan kapasitas. Jika Anda akan mulai mengukur statistik yang sedang tren, saya akan pergi di seluruh papan, sehingga Anda dapat membandingkan, menghubungkan, dll.

Dalam hal alat Anda memiliki ganglia, zenoss, nagios, dll di dunia opensource, dan banyak produk vendor lainnya.

Anda dapat mengonfigurasinya untuk melacak, mengukur, dan menyimpan KPI yang Anda minati, lalu melaporkannya secara berkala.

Mengingat pertanyaan Anda tentang penggunaan RAM, masuk akal untuk menyertakan statistik memori, penggunaan swap, dan CPU juga, sehingga Anda dapat membandingkannya di seluruh papan untuk periode waktu yang sama dan melihat mana yang terbatas, dll.

Setelah Anda mengambil data, Anda dapat menyimpan semuanya dalam DB besar yang bagus untuk pelaporan, kemungkinan rarifikasi data historis, misalnya. simpan setiap 5 detik metrik selama 6 bulan, lalu per menit, lalu 5, lalu per jam, saat Anda melangkah lebih jauh ke belakang. Hal-hal semacam itu dapat dituliskan dan dijalankan melalui cron, autosys dll.

Laporan-laporan itu akan memberi Anda apa yang diinginkan manajemen - yaitu. sesuatu dengan grafik cantik.

Dan untuk manajemen harian Anda dapat melihat informasi real-time pada grafik / angka melalui konsol untuk melihat kinerja Anda pada saat tertentu.

Alex
sumber
Terimakasih atas tanggapan Anda. Masalah terbesar yang saya temukan sebenarnya melacak jumlah ops secara akurat. Yaitu, segala sesuatu yang pernah saya jumpai laporan tentang jumlah data yang dipindahkan, atau iowait dll dll ini cukup tampaknya tidak sesuai dengan tagihan di sini ..
Keiran Holloway
2

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
Adakah yang punya banyak pengalaman dengan drive SAS 15K RPM?
Keiran Holloway
2

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/ sarpada 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.

Apa yang saya benar-benar mencoba untuk mendapatkan metrik adalah "konfigurasi ini berhasil menangani sejumlah X permintaan I / O acak [..]".

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.

Dan Carley
sumber
1

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.

MikeyB
sumber
Semua penyimpanan terhubung langsung, berjalan pada host debian. Apapun FOSS baik.
Keiran Holloway
1

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