Persembahan

Tutorial OProfile

Tutorial OProfile

OProfile adalah profiler prestasi untuk Linux. Dalam artikel ini, kami akan meneroka apa yang dilakukannya, cara memasangnya dan mengkonfigurasinya, dan bagaimana meletakkan data yang dikumpulkannya untuk digunakan.

Anda mungkin tertanya-tanya mengapa anda memerlukan alat seperti ini kerana terdapat banyak alat analisis prestasi yang baik yang tersedia secara lalai pada sebilangan besar pengedaran Linux. Setiap pemasangan merangkumi alat seperti top dan vmstat, dan utiliti penjejakan seperti strace biasanya hanya dapat dilakukan. Di mana OProfile masuk?

Alat yang disebutkan sebelumnya sangat baik untuk mendapatkan gambaran ringkas sistem Linux dalam masa nyata. Alat seperti top atau htop menunjukkan semua proses yang sedang berjalan, penggunaan memori semasa mereka, dan penggunaan pemproses. Tetapi mengetahui proses dan panggilan sistem yang memakan banyak sumber menjadi masalah.

Di sinilah OProfile masuk. Rangkaian utiliti ini bukan sahaja melakukan analisisnya pada tahap yang lebih mendalam, tetapi juga menyimpan data dan membolehkan anda menghasilkan laporan prestasi yang menawarkan banyak maklumat yang dapat membantu anda membuat debug bahkan masalah prestasi yang paling sukar difahami.

OProfile bukan hanya untuk pemaju. Dalam persekitaran desktop, OProfile dapat membantu anda melacak tugas latar belakang intensif CPU atau panggilan I / O yang memperlambat anda dan tidak dapat dilihat dengan segera. Pada sistem yang sibuk dengan peralihan keutamaan proses, data ini sukar dikumpulkan, apalagi ditafsirkan. Sifat multi-proses persekitaran pelayan menjadikan tugas ini lebih sukar dengan alat tradisional.

Walaupun begitu, pemaju pasti akan memanfaatkan OProfile. Maklumat yang akan saya sampaikan akan merangkumi asas kedua-dua kes penggunaan sehingga anda dapat mengetahui metrik prestasi mana-mana program Linux.

Pemasangan

Terdapat nota yang sangat penting yang harus dibuat sebelum menyelami OProfile - anda mungkin tidak dapat memasangnya dalam persekitaran maya. Sekiranya anda menjalankan Linux di dalam persekitaran VirtualBox, VMWare, atau VM yang serupa, OProfile mungkin tidak dapat mengakses kaunter prestasi yang diperlukan untuk mengumpulkan data. Selanjutnya, walaupun anda dapat menggunakannya dalam persekitaran maya, masa yang tepat mungkin sedikit terdistorsi berdasarkan beban sistem host, jadi ingatlah ini jika anda tidak menggunakan perkakasan asli.

Beberapa distribusi Linux mempunyai OProfile dalam sistem pengurusan pakej mereka, memudahkan pemasangan:

Contoh Mudah

Setelah program dipasang, mari kita basah dengan contoh yang remeh tetapi berguna. Program "ls" adalah perintah yang mungkin anda gunakan sepanjang masa. Ia hanya memaparkan senarai fail dan folder dalam direktori semasa. Mari kita mengesan outputnya:

sudo operf ls

Anda akan melihat sesuatu yang serupa dengan tangkapan skrin di atas. Setelah profiler selesai, ia akan mengumumkan "Profil selesai."Ini telah menyimpan datanya dalam folder bernama oprofile_data yang dapat digunakan untuk menghasilkan laporan.

Menjalankan perintah opreport (tanpa sudo dalam kes ini) menghasilkan laporan yang serupa dengan ini:

Dalam contoh ini, laporan lalai menunjukkan jumlah sampel ketika CPU tidak berada dalam keadaan HALT (dengan kata lain, secara aktif melakukan sesuatu). Kallsyms menyediakan pencarian simbol yang digunakan oleh profiler, dan ld.begitu dan libc.begitu juga sebahagian dari pakej glibc, perpustakaan umum yang dihubungkan ke hampir semua eksekusi Linux yang menyediakan fungsi asas yang dapat digunakan pemaju untuk tidak mencipta semula roda dan memberikan tahap keserasian umum antara pelbagai sistem. Anda dapat melihat bahawa program yang sebenarnya ls mempunyai masa yang lebih rendah bukan HALT - sebahagian besar pengangkatan berat dilakukan oleh perpustakaan standard.

Setelah kami selesai dengan laporan, ada baiknya anda membuang folder data atau menyimpannya untuk analisis masa depan. Dalam contoh ini, kami akan menghapusnya kerana kami menjalankan latihan sampel. Oleh kerana kita menjalankan perintah dengan sudo, kita mesti membuang folder dengan sudo. Berhati-hati!

sudo rm -Rf oprofile_data

Contoh Yang Lebih Kompleks

Dalam contoh seterusnya, kita akan menjalankan program yang sebenarnya melakukan sesuatu yang lebih kompleks daripada hanya menyenaraikan fail dalam folder semasa. Mari muat turun WordPress dengan wget.

sudo operf wget http: // wordpress.org / terkini.tar.gz

Selepas contoh ini, kita dapat menghasilkan laporan dengan perintah "opreport":

Anda akan melihat lebih banyak aktiviti selepas ini. Perintah wget harus melakukan banyak pekerjaan di belakang tabir untuk mendapatkan salinan WordPress terkini. Walaupun tidak perlu memeriksa setiap item, tempat menarik yang menarik adalah:

Data seperti ini dapat memberikan banyak maklumat untuk pembangun. Tetapi bagaimana ini penting bagi pentadbir sistem pelayan atau pengguna kuasa di desktop? Dengan mengetahui bahagian mana dari program yang memerlukan waktu CPU paling banyak, kita dapat mengetahui apa yang memerlukan pengoptimuman atau di mana perlambatan berlaku, memungkinkan kita membuat keputusan yang lebih baik tentang bagaimana mengoptimumkan sistem kita.

Dalam contoh ini, waktu CPU paling banyak diambil oleh rutin kripto / SSL. Ini dapat difahami kerana kriptografi adalah tugas yang memakan masa. Mempunyai wordpress.laman web org tidak mengarahkan kami ke https: // perpustakaan ini tidak akan digunakan, menjimatkan masa CPU kami. Lapisan rangkaian masih akan digunakan, tetapi menggunakan sambungan berwayar dan bukannya sambungan tanpa wayar mungkin akan kurang memberi kesan. Menonaktifkan penunjuk kemajuan pada program wget (melalui suis -nv) akan menjimatkan masa CPU dalam memaparkan kemajuan muat turun.

Menggali Simbol

Walaupun laporan lalai memberikan maklumat berharga dan berguna, kami dapat menggali lebih jauh. Dengan menjalankan ini:

opreport --demangle = pintar - simbol

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

Dalam contoh ini, saya menggunakan perintah wget di atas tetapi menggunakan http: // URL (yang tidak dialihkan ke https: //) dan anda dapat melihat ketiadaan perpustakaan OpenSSL dalam jejak. Walau bagaimanapun, bukannya hanya nama perpustakaan, kami sekarang mempunyai senarai lengkap fungsi yang terlibat. Seperti yang anda lihat, lapisan rangkaian menghabiskan sebahagian besar waktu CPU tanpa HALT.

Membawa ke Tahap Seterusnya

Dalam contoh sebelumnya kami telah menggunakan OProfile untuk melihat satu program pada satu masa. Anda boleh memeriksa keseluruhan sistem anda sekaligus dengan menggunakan suis lebar sistem:

sudo operf - seluruh sistem

Dengan menggunakan teknik ini, OProfile akan mengumpulkan statistik dengan cara yang sama dan berhenti ketika anda menekan CTRL + C. Selepas itu, anda boleh menjalankan perintah opreport. Oleh kerana profiler kemungkinan besar akan menghasilkan lebih banyak data (terutamanya pada desktop atau pelayan yang sibuk).

opreport & gt; lapor.txt

Laporan itu kini dapat dilihat dalam fail yang disebut laporan.txt

Overhead Rendah

Penting untuk diperhatikan bahawa sementara OProfile tidak boleh mengganggu operasi program anda, ia akan membuat sedikit overhead dan dengan demikian melambatkan pelaksanaan. Dalam contoh ringkas kami di atas, ia tidak menimbulkan masalah, tetapi pada program dengan pelaksanaan yang panjang dan panggilan fungsi yang luas, anda mungkin akan melihat perbezaannya. Oleh kerana itu, saya tidak akan mengesyorkan menggunakan program ini dalam persekitaran pelayan pengeluaran kecuali jika menghadapi masalah prestasi kritikal yang mesti diselesaikan dengan penggunaan langsung. Walaupun begitu, saya akan menggunakannya cukup lama untuk mencari masalahnya.

Kesimpulannya

OProfile adalah alat profil prestasi yang hebat. Ia mencapai tahap terendah yang terdapat di Linux untuk mendapatkan penghitung prestasi dan metrik yang memberi anda maklumat berharga mengenai program anda.

Sudah berlalu hari-hari dugaan dalam penyahpepijatan prestasi - anda kini mempunyai kekuatan untuk mengetahui dengan tepat apa yang dilakukan sistem anda dan bagaimana memperbaikinya. Dengan mengkaji laporan yang dihasilkan oleh OProfile, anda dapat membuat keputusan berdasarkan data yang tepat untuk mengoptimumkan sistem anda.

Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...
Cara menangkap dan streaming sesi permainan anda di Linux
Pada masa lalu, bermain permainan hanya dianggap sebagai hobi, tetapi seiring dengan berjalannya waktu, industri permainan menyaksikan pertumbuhan yan...