Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Teknologi Internet of Things

Profiling Aplikasi Terdistribusi dengan Linux perf: Panduan Praktis

Profiling Aplikasi Terdistribusi dengan Linux perf: Panduan Praktis

Mengoptimalkan aplikasi yang matang dapat terasa seperti mencari jarum dalam tumpukan jerami. Cara terbaik untuk mengidentifikasi hambatan performa yang sebenarnya adalah membiarkan data, bukan intuisi, mengarahkan keputusan Anda. Dalam praktiknya, kode yang paling memakan waktu sering kali adalah yang tidak terduga.

Saat saya menyadui sebuah kode lambat, saya pertama-tama memeriksa bukti sebelum saya memodifikasinya.

Profiling mengubah intuisi tersebut menjadi fakta yang dapat diukur. Sementara ada banyak profiler di pasaran, memilih alat yang tepat untuk sistem multi-threaded atau terdistribusi bisa menjadi tantangan. Profiler hitungan instruksi tradisional seperti Callgrind dapat merusak waktu, terutama di bawah kontensi mutex yang berat, karena mereka mengukur instruksi daripada waktu nyata.

Profiler statistik, di sisi lain, mengambil sampel program yang berjalan dengan overhead rendah, menjadikannya ideal untuk beban kerja konkuren yang kompleks. perf Linux adalah contoh utama dari pendekatan ini.

Di bawah ini adalah alur kerja langkah demi langkah yang menunjukkan cara menggunakan perf bersama dengan FlameGraph Brendan Gregg untuk mengidentifikasi titik panas dalam aplikasi terdistribusi. Contohnya menargetkan contoh c/hello_dynamic dari RTI Connext 5.3.0.

1. Instal perf
Di Ubuntu, jalankan:

sudo apt-get install linux-tools-common linux-tools-3.13.0-107-generic

2. Clone FlameGraph
Clone repositori ke lokasi yang nyaman (misalnya, direktori rumah Anda):

git clone https://github.com/brendangregg/FlameGraph

3. Bangun contoh
Navigasi ke rti_workspace/examples/c dan kompilasi dengan simbol debug:

export DEBUG=1 make -f makefile_Hello_x64Linux3gcc4.8.2

Ganti nama makefile dengan yang cocok dengan platform Anda jika diperlukan.

4. Jalankan publisher saat profiling
Mulai subscriber di latar belakang, lalu jalankan perf:

objs/x64Linux3gcc4.8.2/Hello sub & sudo perf record -g objs/x64Linux3gcc4.8.2/Hello pub

Setelah periode pengujian singkat, tekan Ctrl+C untuk menghentikan publisher. perf akan menghasilkan perf.out.

5. Konversi data untuk FlameGraph
Terjemahkan output perf menjadi file stack yang dilipat:

perf script -f | ~/FlameGraph/stackcollapse-perf.pl > out.perf-folded

Lalu buat flame graph visual:

~/FlameGraph/flamegraph.pl out.perf-folded > perf.svg

6. Periksa hasil
Buka perf.svg di browser web. Sumbu horizontal menunjukkan waktu yang dihabiskan dalam setiap fungsi, sementara bar bertumpuk mengungkapkan tumpukan panggilan. Mengklik bar akan memperbesar tumpukan tersebut. Menjalankan publisher tanpa subscriber akan menghapus bagian kanan grafik, mengonfirmasi bahwa DDS hanya memancarkan data ketika ada subscriber.

Perf menawarkan banyak opsi lainnya—sesuaikan frekuensi sampling, ecualikan kode kernel, atau fokus pada CPU tertentu. Jika Anda memiliki tips atau telah menemukan alat pelengkap yang menyederhanakan profiling, bagikan dalam komentar.

Selamat profiling!


Teknologi Internet of Things

  1. Dapatkah Molibdenum Digabungkan dengan Elemen Lain? Wawasan Ahli tentang Legasing dan Penggunaan Suhu Tinggi
  2. Membangun Aplikasi Hybrid Blockchain-Cloud dengan Ethereum & Google Cloud
  3. Membangun Aplikasi Mobile Serverless Skalabel dengan React Native & AWS
  4. Sensor Dekat Induktif: Desain Sirkuit, Fungsi, dan Aplikasi Praktis
  5. Sensor Analog vs Digital: Jenis, Aplikasi, dan Contoh Praktis
  6. Microchip Meluncurkan MCU Berbasis Arm untuk Misi Ruang Angkasa Skalabel – Dari COTS hingga Opsi Toleransi Radiasi dan Hardened
  7. Menghilangkan Hambatan IT dengan Platform Low-Code: Menyederhanakan Transformasi Digital
  8. Ovo Energy Memperkuat Strategi Energi Terdistribusi dengan Akuisisi Smart Grid VCharge
  9. Router Kayu CNC: Presisi Serbaguna untuk Mebelar Berkualitas & Lebih Lagi
  10. AI dalam Kedokteran: 5 Aplikasi Nyata Terbukti dengan Contoh Praktis