Kinerja

Tutorial Profil

Tutorial Profil

OProfile adalah profiler kinerja untuk Linux. Dalam artikel ini, kita akan menjelajahi apa yang dilakukannya, bagaimana menginstal dan mengkonfigurasinya, dan bagaimana menempatkan data yang dikumpulkannya untuk digunakan.

Anda mungkin bertanya-tanya mengapa Anda memerlukan alat seperti ini karena ada banyak alat analisis kinerja yang baik yang tersedia secara default di sebagian besar distribusi Linux. Setiap penginstalan menyertakan alat seperti top dan vmstat, dan utilitas penelusuran seperti strace biasanya hanya dapat dicapai dengan mudah. Di mana OProfile cocok??

Alat yang disebutkan sebelumnya sangat bagus untuk mendapatkan snapshot dari sistem Linux secara real time. Alat seperti top atau htop menunjukkan semua proses yang berjalan, konsumsi memori saat ini, dan penggunaan prosesor. Tetapi mengetahui proses dan panggilan sistem apa yang paling banyak menghabiskan sumber daya menjadi masalah.

Di situlah OProfile masuk. Rangkaian utilitas ini tidak hanya melakukan analisisnya pada tingkat yang lebih dalam, tetapi juga menyimpan data dan memungkinkan Anda menghasilkan laporan kinerja yang menawarkan banyak informasi yang dapat membantu Anda men-debug bahkan masalah kinerja yang paling sulit dipahami.

OProfile bukan hanya untuk pengembang. Di lingkungan desktop, OProfile dapat membantu Anda melacak tugas latar belakang intensif CPU atau panggilan I/O yang memperlambat Anda dan tidak langsung terlihat. Pada sistem yang sibuk dengan prioritas proses yang berubah, data ini mungkin sulit dikumpulkan, apalagi ditafsirkan let. Sifat multi-proses dari lingkungan server membuat tugas ini semakin sulit dengan alat tradisional.

Karena itu, pengembang tidak diragukan lagi akan mendapatkan manfaat maksimal dari OProfile. Informasi yang akan saya sajikan akan mencakup dasar-dasar kedua kasus penggunaan sehingga Anda dapat menggali metrik kinerja program Linux apa pun.

Instalasi

Ada catatan yang sangat penting yang harus dibuat sebelum menyelam jauh ke dalam OProfile - Anda mungkin tidak dapat menginstalnya di lingkungan virtual. Jika Anda menjalankan Linux di dalam VirtualBox, VMWare, atau lingkungan VM serupa, OProfile mungkin tidak dapat mengakses penghitung kinerja yang diperlukan untuk mengumpulkan data. Selain itu, bahkan jika Anda dapat menggunakannya di lingkungan virtual, waktu yang tepat mungkin agak terdistorsi berdasarkan beban sistem host, jadi harap ingat ini jika Anda tidak menjalankan perangkat keras asli.

Beberapa distribusi Linux memiliki OProfile dalam sistem manajemen paket mereka, membuat instalasi menjadi mudah:

Contoh Sederhana

Setelah program terinstal, mari kita basahi kaki kita dengan contoh sepele namun bermanfaat. Program "ls" adalah perintah yang mungkin Anda gunakan sepanjang waktu. Ini hanya menampilkan daftar file dan folder di direktori saat ini. Mari kita lacak outputnya:

sudo operf ls

Anda akan melihat sesuatu yang mirip dengan tangkapan layar di atas. Setelah profiler selesai, ia akan mengumumkan “Profiling done.” Ini telah menyimpan datanya dalam folder bernama oprofile_data yang dapat digunakan untuk membuat laporan.

Menjalankan perintah opreport (tanpa sudo dalam kasus ini) menghasilkan laporan yang mirip dengan ini:

Dalam contoh ini, laporan default menunjukkan jumlah sampel saat CPU tidak dalam keadaan HALT (dengan kata lain, sedang aktif melakukan sesuatu). Kallsyms menyediakan pencarian simbol yang digunakan oleh profiler, dan ld.begitu dan libc.begitu juga bagian dari paket glibc, perpustakaan umum yang ditautkan ke hampir semua executable Linux yang menyediakan fungsionalitas dasar yang dapat digunakan pengembang untuk mencegah menemukan kembali roda dan menyediakan tingkat kompatibilitas umum antara berbagai sistem. Anda dapat melihat bahwa program yang sebenarnya ls memiliki waktu non-HALT jauh lebih sedikit - sebagian besar pekerjaan berat dilakukan oleh perpustakaan standar.

Setelah kami selesai dengan laporan, ada baiknya untuk menghapus folder data atau menyimpannya untuk analisis di masa mendatang. Dalam contoh ini, kami hanya akan menghapusnya karena kami menjalankan contoh latihan. Karena kami menjalankan perintah dengan sudo, kami harus menghapus folder dengan sudo. Hati-Hati!

sudo rm -Rf oprofile_data

Contoh yang Lebih Kompleks

Dalam contoh berikut ini, kita akan menjalankan program yang benar-benar melakukan sesuatu yang lebih kompleks daripada hanya membuat daftar file di folder saat ini. Ayo unduh WordPress dengan wget.

sudo operf wget http://wordpress.org/terbaru.ter.gz

Setelah contoh ini, kita dapat membuat laporan dengan perintah “opreport”:

Anda akan melihat lebih banyak aktivitas setelah ini. Perintah wget harus melakukan banyak pekerjaan di belakang layar untuk mendapatkan salinan WordPress terbaru. Meskipun tidak perlu memeriksa setiap item, hal menarik yang menarik adalah:

Data semacam ini dapat memberikan banyak informasi bagi pengembang. Tetapi bagaimana ini penting bagi administrator sistem server atau pengguna yang kuat di desktop?? Dengan mengetahui bagian program mana yang paling banyak menghabiskan waktu CPU, kami dapat mengetahui apa yang perlu dioptimalkan atau di mana perlambatan terjadi, sehingga kami dapat membuat keputusan yang lebih baik tentang cara mengoptimalkan sistem kami.

Dalam contoh ini, waktu CPU paling banyak diambil oleh rutinitas crypto/SSL. Hal ini dapat dimengerti karena kriptografi adalah tugas yang memakan waktu. Punya wordpress.situs web org tidak mengarahkan kami ke https:// perpustakaan ini tidak akan digunakan, menghemat waktu CPU kami. Lapisan jaringan akan tetap digunakan, tetapi menggunakan koneksi kabel alih-alih koneksi nirkabel kemungkinan akan lebih sedikit membebani. Menonaktifkan indikator kemajuan pada program wget (melalui sakelar -nv) akan menghemat waktu CPU dalam menampilkan kemajuan unduhan.

Menggali Simbol

Meskipun laporan default memberikan informasi yang berharga dan berguna, kami dapat menggali lebih jauh. Dengan menjalankan ini:

opreport --demangle=cerdas --simbol

Kami dapat mengetahui dengan tepat berapa banyak fungsi waktu CPU di perpustakaan yang dikonsumsi:

Dalam contoh ini, saya menggunakan perintah wget di atas tetapi menggunakan URL http:// (yang tidak mengarahkan ke https://) dan Anda dapat melihat tidak adanya pustaka OpenSSL di jejak. Namun, alih-alih hanya nama perpustakaan, kami sekarang memiliki daftar lengkap fungsi yang terlibat. Seperti yang Anda lihat, lapisan jaringan menghabiskan sebagian besar waktu non-HALT CPU.

Membawanya ke Tingkat Selanjutnya

Pada contoh sebelumnya kami telah menggunakan OProfile untuk melihat satu program pada satu waktu. Anda dapat memeriksa seluruh sistem Anda sekaligus menggunakan tombol -system-wide:

sudo operf --sistem-lebar

Menggunakan teknik ini, OProfile akan mengumpulkan statistik dengan cara yang sama dan berhenti ketika Anda menekan CTRL+C. Setelah itu, Anda dapat menjalankan perintah opreport. Karena profiler kemungkinan akan menghasilkan lebih banyak data (terutama di desktop atau server yang sibuk).

laporkan > melaporkan.txt

Laporan sekarang dapat dilihat dalam file bernama report.txt

Overhead Rendah

Penting untuk dicatat bahwa meskipun OProfile seharusnya tidak mengganggu pengoperasian program Anda, itu akan membuat sedikit overhead dan dengan demikian memperlambat eksekusi. Dalam contoh sederhana kami di atas, itu tidak menimbulkan masalah, tetapi pada program dengan eksekusi yang lama dan panggilan fungsi yang ekstensif, Anda mungkin akan melihat perbedaan. Karena itu, saya tidak akan merekomendasikan menggunakan program ini di lingkungan server produksi kecuali dihadapkan dengan masalah kinerja kritis yang harus diselesaikan dengan penggunaan langsung. Meski begitu, saya akan menggunakannya cukup lama untuk menemukan masalahnya.

Kesimpulan

OProfile adalah alat profil kinerja yang kuat. Ini menyentuh level terendah yang tersedia di Linux untuk mendapatkan penghitung kinerja dan metrik yang memberi Anda informasi berharga tentang program Anda.

Lewatlah sudah hari-hari menebak-nebak dalam debugging kinerja - Anda sekarang memiliki kekuatan untuk mengetahui dengan tepat apa yang dilakukan sistem Anda dan bagaimana meningkatkannya. Dengan mempelajari laporan yang dihasilkan oleh OProfile, Anda dapat membuat keputusan berdasarkan informasi dan berdasarkan data untuk mengoptimalkan sistem Anda.

Cara Mengubah Pengaturan Mouse dan Touchpad Menggunakan Xinput di Linux
Sebagian besar distribusi Linux dikirimkan dengan pustaka "libinput" secara default untuk menangani kejadian input pada sistem. Ini dapat memproses ke...
Petakan ulang tombol mouse Anda secara berbeda untuk perangkat lunak yang berbeda dengan Kontrol Tombol X-Mouse
Mungkin Anda membutuhkan alat yang dapat membuat kontrol mouse Anda berubah dengan setiap aplikasi yang Anda gunakan. Jika demikian, Anda dapat mencob...
Ulasan Mouse Nirkabel Microsoft Sculpt Touch
Saya baru-baru ini membaca tentang Microsoft Sculpt Touch mouse nirkabel dan memutuskan untuk membelinya. Setelah menggunakannya untuk sementara waktu...