Saya menggunakan perf
dari linux-2.6.36-gentoo-r4. /proc/sys/kernel/perf_event_paranoid
diatur ke 0, jadi seharusnya tidak ada masalah dari sana.
Karena aplikasi yang berjalan lama yang saya buat profil terkadang macet karena alasan yang tidak ditentukan (saya tidak dapat menemukan informasi tentang alasan berhenti bekerja), saya beralih ke pembuatan profil seluruh sistem dengan peristiwa perf.
Aplikasi yang dimaksud melakukan perhitungan numerik paralel, menggunakan MPI (Message Passing Interface) untuk komunikasi. Sebelum menjalankan aplikasi (dengan mpirun
) Saya telah mulai merekam data profil seluruh sistem di satu node yang dijalankan dengan:
$ perf record -o perf.all.cycles,graph.data -g -e cycles -a &
Setelah saya menyadari bahwa aplikasi macet, saya telah mematikan perf
tugas.
Itu telah pergi
$ du -sh perf.all.cycles,graph.data
14G perf.all.cycles,graph.data
14GB datanya. Sayangnya perf report
tidak mendukung -a
beralih.
Bagaimana cara menganalisis data profil seluruh sistem dari perf
alat ?
Cukup jalankan perf report
tidak menghasilkan keluaran yang berguna:
$ perf report -i perf.all.cycles,graph.data
#
# (For a higher level overview, try: perf report --sort comm,dso)
#
Itu adalah keseluruhan output dari data profil 14GB…
Jawaban yang Diterima:
Jika Anda mendistribusikan komputasi dengan MPI, maka menggunakan alat MPI-aware akan memberi Anda hasil yang lebih masuk akal:dengan aplikasi terdistribusi, Anda mungkin memiliki masalah ketidakseimbangan beban, di mana satu proses MPI menganggur menunggu data datang dari proses lain . Jika Anda membuat profil persis seperti proses MPI, profil kinerja Anda akan salah.
Jadi, langkah pertama biasanya mencari tahu tentang komunikasi dan pola keseimbangan beban program Anda, dan mengidentifikasi input sampel yang memberi Anda beban kerja yang Anda inginkan (mis., CPU-intensif pada peringkat 0) Misalnya, mpiP adalah MPI alat profiling yang dapat menghasilkan laporan yang sangat lengkap tentang pola komunikasi, berapa lama waktu yang dibutuhkan setiap panggilan MPI, dll.
Kemudian Anda dapat menjalankan alat pembuatan profil kode pada satu atau lebih peringkat MPI yang dipilih. Bagaimanapun, menggunakan perf
pada peringkat MPI tunggal sepertinya bukan ide yang baik karena pengukurannya juga akan berisi kinerja kode perpustakaan MPI, yang mungkin bukan yang Anda cari.