Rumah Tutorial sistem LINUX Teroka laluan baharu - Alat diagnostik untuk menunggu IO

Teroka laluan baharu - Alat diagnostik untuk menunggu IO

Dec 29, 2023 pm 10:29 PM
linux tutorial linux Topi Merah sistem linux arahan linux pensijilan linux linux topi merah video linux

1. Soalan:

Sebuah mesin tertentu di bahagian atas kluster melihat beban yang besar Mesin dalam kluster mempunyai konfigurasi perkakasan yang sama dan perisian yang digunakan yang sama, tetapi mesin yang satu ini mempunyai masalah bebanan pada mulanya mungkin terdapat masalah perkakasan.

Pada masa yang sama, kita juga perlu mengetahui punca beban yang tidak normal, dan kemudian mencari penyelesaian daripada tahap perisian dan perkakasan.

另辟蹊径-诊断工具之 IO wait

2. Menyelesaikan masalah:

Anda boleh lihat dari atas bahawa purata beban adalah tinggi, %wa adalah tinggi dan %us adalah rendah:

另辟蹊径-诊断工具之 IO wait

Daripada gambar di atas, kita boleh membuat kesimpulan secara kasar bahawa IO telah menghadapi kesesakan Seterusnya, kita boleh menggunakan alat diagnostik IO yang berkaitan untuk pengesahan dan penyelesaian masalah tertentu.

Kaedah gabungan yang biasa digunakan adalah seperti berikut:
•Gunakan vmstat, sar, iostat untuk mengesan sama ada ia adalah kesesakan CPU
•Gunakan percuma dan vmstat untuk mengesan sama ada terdapat kesesakan memori
•Gunakan iostat dan dmesg untuk mengesan sama ada ia adalah halangan I/O cakera
•Gunakan netstat untuk mengesan sama ada terdapat kesesakan lebar jalur rangkaian

2.1 vmstat

Maksud arahan vmstat adalah untuk memaparkan status memori maya ("Virtual Memor Statics"), tetapi ia boleh melaporkan status pengendalian keseluruhan sistem seperti proses, memori, I/O, dsb.

另辟蹊径-诊断工具之 IO wait
Bidang berkaitannya diterangkan seperti berikut:

Procs
•r: Bilangan proses dalam baris gilir larian Nilai ini juga boleh digunakan untuk menentukan sama ada CPU perlu ditingkatkan. (jangka panjang melebihi 1)
•b: Bilangan proses menunggu IO, iaitu bilangan proses dalam keadaan tidur tidak terganggu, menunjukkan bilangan tugas yang sedang dilaksanakan dan menunggu sumber CPU. Apabila nilai ini melebihi bilangan CPU, kesesakan CPU akan berlaku

Memori
•swpd: Gunakan saiz memori maya Jika nilai swpd bukan 0, tetapi nilai SI dan SO adalah 0 untuk masa yang lama, keadaan ini tidak akan menjejaskan prestasi sistem.
•percuma: Saiz memori fizikal percuma.
•buff: Saiz memori yang digunakan sebagai penimbal.
•cache: Saiz memori yang digunakan sebagai cache Jika nilai cache adalah besar, ini bermakna terdapat banyak fail dalam cache Jika fail yang kerap diakses boleh dicache, IO bi cakera akan menjadi sangat kecil.

Swap (kawasan pertukaran)
•si: Saiz yang ditulis dari kawasan swap ke memori sesaat, yang dipindahkan ke dalam memori daripada cakera.
•jadi: Saiz memori yang ditulis ke kawasan swap sesaat, dipindahkan dari memori ke cakera.

Nota: Apabila memori mencukupi, kedua-dua nilai ini adalah 0. Jika kedua-dua nilai ini lebih besar daripada 0 untuk masa yang lama, prestasi sistem akan terjejas dan sumber IO dan CPU cakera akan dimakan. Sesetengah rakan berpendapat bahawa ingatan tidak mencukupi apabila mereka melihat bahawa memori bebas (percuma) sangat kecil atau hampir 0. Anda tidak boleh melihat ini, tetapi juga menggabungkan si dan sebagainya. terdapat juga sangat sedikit si dan sebagainya (Kebanyakan masa adalah 0), maka jangan risau, prestasi sistem tidak akan terjejas pada masa ini.

IO (input dan output)

(Saiz blok versi Linux sekarang ialah 1kb)
•bi: Bilangan blok dibaca sesaat
•bo: Bilangan blok yang ditulis sesaat

Nota: Apabila membaca dan menulis cakera rawak, lebih besar kedua-dua nilai ini (seperti melebihi 1024k), lebih besar nilai yang anda boleh lihat bahawa CPU sedang menunggu IO.

sistem
•dalam: Bilangan gangguan sesaat, termasuk gangguan jam.
•cs: Bilangan suis konteks sesaat.

Nota: Lebih besar kedua-dua nilai di atas, lebih besar masa CPU yang digunakan oleh kernel.

CPU

(dinyatakan sebagai peratusan)
•us: Peratusan masa pelaksanaan proses pengguna (masa pengguna). Apabila nilai kita agak tinggi, ini bermakna proses pengguna menggunakan banyak masa CPU, tetapi jika penggunaan melebihi 50% untuk masa yang lama, maka kita harus mempertimbangkan untuk mengoptimumkan algoritma program atau mempercepatkannya.
•sy: Peratusan masa pelaksanaan proses sistem kernel (masa sistem). Apabila nilai sy tinggi, ini bermakna kernel sistem menggunakan banyak sumber CPU Ini bukan prestasi yang baik, dan kita harus menyemak sebabnya.
•wa: Peratusan masa menunggu IO. Apabila nilai wa tinggi, ini bermakna penantian IO adalah serius. Ini mungkin disebabkan oleh bilangan akses rawak yang banyak pada cakera, atau mungkin terdapat kesesakan (operasi blok) pada cakera.
•id: peratusan masa terbiar

Seperti yang anda lihat dari vmstat, kebanyakan masa CPU terbuang menunggu IO, yang mungkin disebabkan oleh sejumlah besar akses cakera rawak atau lebar jalur cakera Kedua-dua bi dan bo melebihi 1024k, yang sepatutnya menunjukkan kesesakan IO.

2.2 iostat

Mari gunakan alat diagnostik IO cakera yang lebih profesional untuk melihat statistik yang berkaitan.
另辟蹊径-诊断工具之 IO wait

Bidang berkaitannya diterangkan seperti berikut:
•rrqm/s: Bilangan operasi baca gabungan sesaat. Itulah delta(rmerge)/s
•wrqm/s: Bilangan operasi tulis cantuman sesaat. Itulah delta(wmerge)/s
•r/s: Bilangan bacaan daripada peranti I/O selesai sesaat. Itulah delta(rio)/s
•w/s: Bilangan tulis pada peranti I/O yang dilengkapkan sesaat. Itulah delta(wio)/s
•rsec/s: Bilangan sektor dibaca sesaat. Itulah delta(rsect)/s
•wsec/s: Bilangan sektor yang ditulis sesaat. Itulah delta(wsect)/s
•rkB/s: K bait dibaca sesaat. Adalah separuh daripada rsect/s kerana setiap saiz sektor ialah 512 bait. (perlu pengiraan)
•wkB/s: Bilangan K bait yang ditulis sesaat. ialah separuh daripada wsect/s. (perlu pengiraan)
•avgrq-sz: Purata saiz data (sektor) bagi setiap operasi I/O peranti. delta(rsect+wsect)/delta(rio+wio)
•avgqu-sz: Purata panjang baris gilir I/O. Iaitu delta(aveq)/s/1000 (kerana unit aveq ialah milisaat).
•menunggu: purata masa menunggu (milisaat) untuk setiap operasi I/O peranti. Itulah delta(ruse+wuse)/delta(rio+wio)
•svctm: Purata masa perkhidmatan (milisaat) bagi setiap operasi I/O peranti. Itulah delta(use)/delta(rio+wio)
•%util: Berapa peratusan satu saat digunakan untuk operasi I/O, atau berapa banyak satu saat baris gilir I/O tidak kosong. Iaitu delta(use)/s/1000 (kerana unit penggunaan ialah milisaat)

Anda dapat melihat bahawa kadar penggunaan sdb dalam dua cakera keras telah mencapai 100%, dan terdapat kesesakan IO yang serius Langkah seterusnya adalah untuk mengetahui proses membaca dan menulis data ke cakera keras ini.

2.3 iotop

另辟蹊径-诊断工具之 IO wait

Mengikut keputusan iotop, kami dengan cepat mengesan masalah dengan proses flume, yang menyebabkan sejumlah besar menunggu IO.

Tetapi seperti yang saya katakan pada mulanya, konfigurasi mesin dalam kluster adalah sama, dan program yang digunakan adalah sama seperti yang digunakan oleh rsync. Mungkinkah cakera keras itu rosak?

Ini perlu disahkan oleh pelajar operasi dan penyelenggaraan Kesimpulan akhir ialah:

Sdb ialah serbuan dwi-cakera1, kad serbuan yang digunakan ialah "LSI Logic/Symbios Logic SAS1068E", dan tiada cache. Tekanan hampir 400 IOPS telah mencapai had perkakasan. Kad serbuan yang digunakan oleh mesin lain ialah "LSI Logic / Symbios Logic MegaRAID SAS 1078", yang mempunyai cache 256MB dan belum mencapai kesesakan perkakasan Penyelesaiannya adalah untuk menggantikan mesin dengan IOPS yang lebih besar kepada mesin dengan Mesin PERC6 /i dengan kad pengawal RAID bersepadu. Perlu diingatkan bahawa maklumat RAID disimpan dalam kad RAID dan perisian tegar cakera Maklumat RAID pada cakera dan format maklumat pada kad RAID mesti sepadan diformatkan.

IOPS pada dasarnya bergantung pada cakera itu sendiri, tetapi terdapat banyak cara untuk menambah baik IOPS Menambah cache perkakasan dan menggunakan tatasusunan RAID adalah kaedah biasa. Jika ia adalah senario seperti DB dengan IOPS tinggi, kini popular untuk menggunakan SSD untuk menggantikan cakera keras mekanikal tradisional.

Tetapi seperti yang dinyatakan sebelum ini, tujuan kami bermula dari aspek perisian dan perkakasan adalah untuk melihat sama ada kami boleh mencari penyelesaian yang paling murah masing-masing:

Sekarang kita tahu sebab perkakasan, kita boleh cuba mengalihkan operasi baca dan tulis ke cakera lain, dan kemudian lihat kesannya:

另辟蹊径-诊断工具之 IO wait

3 Kata akhir: Cari jalan lain

Malah, selain menggunakan alat profesional yang disebutkan di atas untuk mengesan masalah ini, kami boleh terus menggunakan status proses untuk mencari proses yang berkaitan.

Kami tahu bahawa proses tersebut mempunyai keadaan berikut:
•D tidur tanpa gangguan (biasanya IO)
•R running atau runnable (on runnable queue)
•S tidur yang terganggu (menunggu acara selesai)
•T berhenti, sama ada dengan isyarat kawalan kerja atau kerana ia sedang dikesan.
•W paging (tidak sah sejak kernel 2.6.xx)
•X mati (tidak boleh dilihat)
•Proses Z tidak berfungsi ("zombie"), ditamatkan tetapi tidak dituai oleh induknya.

Keadaan D secara amnya dipanggil "tidur tidak terganggu" yang disebabkan oleh menunggu IO Kita boleh bermula dari titik ini dan kemudian mencari masalah langkah demi langkah:
另辟蹊径-诊断工具之 IO wait

Pengenalan Baru-baru ini, saya telah melakukan penyegerakan log masa nyata Sebelum pergi ke dalam talian, saya melakukan satu ujian tekanan log dalam talian Tidak ada masalah dengan baris gilir mesej, pelanggan dan mesin tempatan jangkakan selepas log kedua dimuat naik, masalah datang

Atas ialah kandungan terperinci Teroka laluan baharu - Alat diagnostik untuk menunggu IO. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tidak dapat log masuk ke mysql sebagai akar Tidak dapat log masuk ke mysql sebagai akar Apr 08, 2025 pm 04:54 PM

Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

C Language Compilation Compilation: Panduan terperinci untuk pemula ke aplikasi praktikal C Language Compilation Compilation: Panduan terperinci untuk pemula ke aplikasi praktikal Apr 04, 2025 am 10:48 AM

C Language Conditional Compilation adalah mekanisme untuk selektif menyusun blok kod berdasarkan keadaan kompilasi masa. Kaedah pengenalan termasuk: menggunakan arahan #if dan #Else untuk memilih blok kod berdasarkan syarat. Ekspresi bersyarat yang biasa digunakan termasuk STDC, _WIN32 dan LINUX. Kes praktikal: Cetak mesej yang berbeza mengikut sistem operasi. Gunakan jenis data yang berbeza mengikut bilangan digit sistem. Fail header yang berbeza disokong mengikut pengkompil. Penyusunan bersyarat meningkatkan kebolehgunaan dan fleksibiliti kod, menjadikannya boleh disesuaikan dengan pengkompil, sistem operasi, dan perubahan seni bina CPU.

【Rust Sendiri belajar】 Pengenalan 【Rust Sendiri belajar】 Pengenalan Apr 04, 2025 am 08:03 AM

1.0.1 Preface Projek ini (termasuk kod dan komen) telah direkodkan semasa karat saya yang diajar sendiri. Mungkin ada kenyataan yang tidak tepat atau tidak jelas, sila minta maaf. Jika anda mendapat manfaat daripadanya, ia lebih baik. 1.0.2 Mengapa Rustrust boleh dipercayai dan cekap? Karat boleh menggantikan C dan C, dengan prestasi yang sama tetapi keselamatan yang lebih tinggi, dan tidak memerlukan rekompilasi yang kerap untuk memeriksa kesilapan seperti C dan C. Kelebihan utama termasuk: Keselamatan Memori (mencegah penunjuk null dari dereferences, penunjuk menggantung, dan perbalahan data). Thread-safe (pastikan kod multi-threaded selamat sebelum pelaksanaan). Elakkan tingkah laku yang tidak ditentukan (mis., Arus dari batas, pembolehubah yang tidak diinisialisasi, atau akses kepada memori yang dibebaskan). Karat menyediakan ciri bahasa moden seperti generik

Apakah 5 komponen asas Linux? Apakah 5 komponen asas Linux? Apr 06, 2025 am 12:05 AM

Lima komponen asas Linux adalah: 1. Kernel, menguruskan sumber perkakasan; 2. Perpustakaan sistem, menyediakan fungsi dan perkhidmatan; 3. Shell, antara muka pengguna untuk berinteraksi dengan sistem; 4. Sistem fail, menyimpan dan menganjurkan data; 5. Aplikasi, menggunakan sumber sistem untuk melaksanakan fungsi.

Cara menyelesaikan MySQL tidak dapat dimulakan Cara menyelesaikan MySQL tidak dapat dimulakan Apr 08, 2025 pm 02:21 PM

Terdapat banyak sebab mengapa permulaan MySQL gagal, dan ia boleh didiagnosis dengan memeriksa log ralat. Penyebab umum termasuk konflik pelabuhan (periksa penghunian pelabuhan dan ubah suai konfigurasi), isu kebenaran (periksa keizinan pengguna yang menjalankan perkhidmatan), ralat fail konfigurasi (periksa tetapan parameter), rasuah direktori data (memulihkan data atau membina semula ruang meja), isu ruang jadual InnoDB (semak fail ibdata1) Apabila menyelesaikan masalah, anda harus menganalisisnya berdasarkan log ralat, cari punca utama masalah, dan mengembangkan tabiat sandaran data secara teratur untuk mencegah dan menyelesaikan masalah.

Penyelesaian kepada kesilapan yang dilaporkan oleh MySQL pada versi sistem tertentu Penyelesaian kepada kesilapan yang dilaporkan oleh MySQL pada versi sistem tertentu Apr 08, 2025 am 11:54 AM

Penyelesaian kepada ralat pemasangan MySQL adalah: 1. Berhati -hati memeriksa persekitaran sistem untuk memastikan keperluan perpustakaan ketergantungan MySQL dipenuhi. Sistem operasi dan keperluan versi yang berbeza adalah berbeza; 2. Berhati -hati membaca mesej ralat dan mengambil langkah -langkah yang sepadan mengikut arahan (seperti fail perpustakaan yang hilang atau kebenaran yang tidak mencukupi), seperti memasang kebergantungan atau menggunakan arahan sudo; 3 Jika perlu, cuba pasang kod sumber dan periksa dengan teliti log kompilasi, tetapi ini memerlukan pengetahuan dan pengalaman Linux tertentu. Kunci untuk menyelesaikan masalah akhirnya adalah dengan teliti memeriksa persekitaran sistem dan maklumat ralat, dan merujuk kepada dokumen rasmi.

Bolehkah mysql berjalan di Android Bolehkah mysql berjalan di Android Apr 08, 2025 pm 05:03 PM

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

Di manakah perpustakaan fungsi bahasa C? Bagaimana untuk menambah perpustakaan fungsi bahasa C? Di manakah perpustakaan fungsi bahasa C? Bagaimana untuk menambah perpustakaan fungsi bahasa C? Apr 03, 2025 pm 11:39 PM

Perpustakaan Fungsi Bahasa C adalah kotak alat yang mengandungi pelbagai fungsi, yang dianjurkan dalam fail perpustakaan yang berbeza. Menambah perpustakaan memerlukan menyatakannya melalui pilihan baris perintah pengkompil, contohnya, pengkompil GCC menggunakan pilihan -L diikuti dengan singkatan nama perpustakaan. Jika fail perpustakaan tidak berada di bawah laluan carian lalai, anda perlu menggunakan pilihan -L untuk menentukan laluan fail perpustakaan. Perpustakaan boleh dibahagikan kepada perpustakaan statik dan perpustakaan dinamik. Perpustakaan statik secara langsung dikaitkan dengan program pada masa kompilasi, manakala perpustakaan dinamik dimuatkan semasa runtime.

See all articles