Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

Profileren van gedistribueerde applicaties met Linux perf: Een praktische gids

Het optimaliseren van een volwassen applicatie kan voelen als zoeken naar een naald in een hooiberg. De beste manier om echte prestatieknelpunten te identificeren is om data, niet intuïtie, uw beslissingen te laten drijven. In de praktijk is de meest tijdsrovende code vaak de minst voor de hand liggende.

Wanneer ik vermoed dat een stuk code traag is, check ik eerst de bewijslast voordat ik het wijzig.

Profileren zet die intuïtie om in meetbare feiten. Hoewel er tientallen profilers op de markt zijn, kan het kiezen van het juiste tool voor een multi-threaded of gedistribueerd systeem uitdagend zijn. Traditionele instructie-telling profilers zoals Callgrind kunnen timing vervormen, zeker onder zware mutex-contention, omdat ze instructies meten in plaats van wall-clock tijd.

Statistische profilers, aan de andere kant, samplen het draaiende programma met lage overhead, wat ze ideaal maakt voor complexe, concurrente workloads. Linux's perf is een toonaangevend voorbeeld van deze benadering.

Hieronder is een stap-voor-stap workflow die demonstreert hoe perf samen met Brendan Gregg's FlameGraph te gebruiken om hotspots in een gedistribueerde applicatie te pinpointen. Het voorbeeld richt zich op het c/hello_dynamic sample uit RTI Connext 5.3.0.

1. Installeer perf
Op Ubuntu, voer uit:

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

2. Clone FlameGraph
Clone de repository naar een handige locatie (bijv. uw home-directory):

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

3. Bouw het voorbeeld
Navigeer naar rti_workspace/examples/c en compileer met debug-symbolen:

export DEBUG=1 make -f makefile_Hello_x64Linux3gcc4.8.2

Vervang de makefile-naam door die overeenkomt met uw platform indien nodig.

4. Draai de publisher tijdens profileren
Start een subscriber op de achtergrond, launch dan perf:

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

Na een korte testperiode, druk Ctrl+C om de publisher te stoppen. Perf genereert perf.out.

5. Converteer de data voor FlameGraph
Vertaal de perf-output naar een folded stack bestand:

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

Genereer dan de visuele flame graph:

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

6. Inspecteer de resultaten
Open perf.svg in een webbrowser. De horizontale as toont tijd besteed in elke functie, terwijl de gestapelde balken de call-stack onthullen. Klikken op een balk zoomt in op die stack. Het draaien van de publisher zonder subscriber zal de rechterhelft van de grafiek verwijderen, wat bevestigt dat DDS alleen data uitzendt wanneer subscribers bestaan.

Perf biedt nog veel meer opties – sampling-frequentie aanpassen, kernel-code uitsluiten of focussen op specifieke CPU's. Als u tips heeft of complementaire tools ontdekt die profileren vereenvoudigen, deel ze in de reacties.

Happy profiling!

Internet of Things-technologie

  1. AI in de Geneeskunde: 5 Bewijzen van Praktische Toepassingen met Concrete Voorbeelden
  2. CNC-houtfreesmachine: veelzijdige precisie voor hoogwaardige meubels & meer
  3. Microchip lanceert Arm-gebaseerde MCUs voor schaalbare ruimtemissies – van COTS tot stralings-tolerante en geharde opties
  4. Inductieve Nabijheidssensor: Schakelontwerp, Functionaliteit en Praktische Toepassingen
  5. Analoge vs Digitale Sensoren: Typen, Toepassingen en Praktische Voorbeelden
  6. Hybride Blockchain-Cloud Applicaties Bouwen met Ethereum & Google Cloud
  7. Schaalbare Serverloze Mobiele Apps Bouwen met React Native & AWS
  8. Wanneer ZigBee Mesh Tekortschiet: 4 Applicaties Beter Bediend Door Ster-topologie
  9. IT-knelpunten elimineren met low-code platforms: Digitale transformatie vereenvoudigen
  10. Ovo Energy Versterkt Gedistribueerde Energie Strategie met VCharge Smart Grid Overname
  11. Kan molybdeen combineren met andere elementen? Expert inzichten over legering en hoge-temperatuurbruik