Ini adalah masalah sederhana tetapi pertama kali saya harus benar-benar memperbaikinya: menemukan file / inode spesifik mana yang merupakan target dari sebagian besar I / O. Saya ingin bisa mendapatkan gambaran umum sistem secara umum, tetapi jika saya harus memberikan PID atau TID saya tidak masalah dengan itu.
Saya ingin pergi tanpa harus melakukan strace
program yang muncul iotop
. Lebih disukai, menggunakan alat dalam nada yang sama seperti iotop
tetapi satu yang diperinci berdasarkan file. Saya dapat menggunakan lsof
untuk melihat file mailman mana yang terbuka tetapi tidak menunjukkan file mana yang menerima I / O atau berapa banyak.
Saya telah melihat di tempat lain di mana ia disarankan untuk digunakan, auditd
tetapi saya lebih suka tidak melakukannya karena akan memasukkan informasi ke dalam file audit kami, yang kami gunakan untuk tujuan lain dan ini sepertinya merupakan masalah yang saya harus dapat teliti lewat sini.
Masalah spesifik yang saya miliki saat ini adalah dengan mengisi snapshot LVM terlalu cepat. Saya sudah menyelesaikan masalah tetapi ingin bisa memperbaikinya dengan cara ini daripada hanya melakukan ls
pada semua deskriptor file terbuka /proc/<pid>/fd
untuk melihat mana yang tumbuh paling cepat.
sumber
fatrace
tetapi lebih tua, bahwa sesuatu seperti naskah yang saya tulis seharusnya telah ditawarkan karena lebih dapat digunakan.Jawaban:
Ada beberapa aspek untuk pertanyaan ini yang telah ditangani sebagian melalui alat lain, tetapi tampaknya tidak ada alat tunggal yang menyediakan semua fitur yang Anda cari.
iotop
Alat ini menunjukkan proses mana yang paling banyak mengonsumsi I / O. Tetapi tidak memiliki opsi untuk menampilkan nama file tertentu.
Secara default ia melakukan apa yang biasa
top
dilakukan untuk proses berlomba-lomba untuk waktu CPU, kecuali untuk disk I / O. Anda dapat membujuknya untuk memberi Anda tampilan 30.000 kaki dengan menggunakan-a
sakelar sehingga menunjukkan akumulasi dengan proses, seiring waktu.i * tools (inotify, iwatch, dll.)
Alat-alat ini menyediakan akses ke acara akses file, namun mereka harus ditargetkan secara khusus ke direktori atau file tertentu. Jadi mereka tidak begitu membantu ketika mencoba melacak akses file jahat oleh proses yang tidak diketahui, ketika debugging masalah kinerja.
Juga
inotify
kerangka tidak menyediakan keterangan tentang file yang sedang diakses. Hanya tipe akses, jadi tidak ada informasi tentang jumlah data yang dipindahkan bolak-balik tersedia, menggunakan alat ini.iostat
Menampilkan kinerja keseluruhan (baca & tulis) berdasarkan akses ke perangkat (hard drive) atau partisi yang diberikan. Tetapi tidak memberikan wawasan apa pun tentang file mana yang menghasilkan akses ini.
blktrace
Opsi ini terlalu rendah. Itu tidak memiliki visibilitas ke mana file dan / atau inode sedang diakses, hanya nomor blok mentah.
fatrace
Ini adalah tambahan baru untuk Kernel Linux dan yang disambut, jadi itu hanya di distro yang lebih baru seperti Ubuntu 12.10. Sistem Fedora 14 saya kurang 8 -).
Ini memberikan akses yang sama yang dapat Anda lalui
inotify
tanpa harus menargetkan direktori dan / atau file tertentu.Di atas menunjukkan kepada Anda ID proses yang melakukan pengaksesan file dan file mana yang diaksesnya, tetapi tidak memberikan Anda keseluruhan penggunaan bandwidth, sehingga setiap akses tidak dapat dibedakan dengan akses lainnya.
Jadi apa yang harus dilakukan?
The
fatrace
pilihan menunjukkan paling menjanjikan untuk AKHIRNYA menyediakan alat yang dapat menunjukkan penggunaan agregat disk I / O berdasarkan file sedang diakses, daripada proses melakukan pengaksesan tersebut.Referensi
sumber
fatrace
dan tidak mengembangkannya banyak melewati itu. Saya benar-benar menghargai bagaimana Anda berusaha lebih keras untuk memastikan orang memahami gambaran lengkap dan berharap saya bisa melakukan lebih dari sekadar mendukung dan memberi hadiah.yum
menarik perpustakaan python3 untuk beberapa alasan. Saya melakukanfile
itu dan sepertinya itu adalah executable ELF.ldd
tidak menunjukkan tautan apa pun kepython
dan juga tidakstrings
. Ada yang tahu mengapa itu terganggu dengan python3?iotop
daniostat
panggilan yang sesuai . Juga, saya menemukan hal python, sepertinya (pada Fedora 18 setidaknya) ada "laporan penggunaan daya"python
skrip jadiyum
hanya menanggapi fakta yangpython
ada dalam dependensi RPM. Sehingga misteri tertentu terpecahkan.Saya belum mendapatkan jawaban tetapi saya sudah menulis skrip ini (pada akhirnya) dan sepertinya melakukan apa yang saya inginkan. Saya belum mengujinya di sistem lain dan khusus Linux.
Pada dasarnya itu hanya membungkus sekitar
strace
30 detik, memfilter untuk panggilan sistem terkait file dan berusaha untuk menghapus nama file. Itu menghitung jumlah kemunculan file itu distrace
dan menyajikan ringkasan paginasi kepada pengguna. Itu tidak sempurna tetapi jumlah panggilan sistem ke file tertentu mungkin memiliki beberapa korelasi yang lemah dengan berapa banyak I / O itu berkinerja.Saya belum mengujinya sepenuhnya tetapi jika itu tidak berhasil, itu akan memberi orang tempat untuk memulai. Jika itu disempurnakan lagi, mungkin disarankan untuk menulis ulang ini ke bahasa tingkat yang lebih tinggi seperti python .
Jika saya tidak mendapatkan jawaban dalam waktu seminggu dari cara yang kurang homebrewed untuk melakukan ini (bahkan jika itu alat lain yang hanya menghitung I / O dari proses tertentu) saya akan menerima ini sebagai jawaban saya untuk anak cucu.
Naskah:
sumber
Anda dapat menggunakan iwatch Menggunakan iWatch
iWatch sangat mudah digunakan, misalkan Anda ingin menonton perubahan pada sistem file / etc, Anda hanya perlu menjalankannya di konsol
dan iwatch akan memberi tahu Anda jika ada perubahan dalam direktori ini. Dan jika Anda ingin diberitahu per email:
Dalam hal ini, admin akan mendapatkan notifikasi email (mungkin Anda dapat menggunakan akun gateway sms Anda, sehingga Anda akan langsung khawatir kapan saja dan di mana saja). Dan jika Anda ingin memonitor banyak direktori perbedaan, Anda dapat menggunakan file konfigurasi. File konfigurasi ini adalah file xml dengan struktur yang mudah dimengerti.
sumber
inotify
apakah itu benar? Saya ragu-ragu untuk menggunakan apa pun berdasarkaninotify
karena Anda harus memberikan jalan (yang pada dasarnya apa yang saya cari) dan saya khawatir pada berapa banyak overhead yang akan terjadi jika saya hanya melakukan semuanya di bawahnya./
Dapatkah ini disaring oleh PID? Saya mungkin bisa mentolerir kelambatan sementara jika itu akan cukup mudah untuk mengekstrak program mana yang melakukannya. Situs web ini juga tidak memiliki contoh output perintah.