Perf- E Performance Monitoring an Analyse Tool fir Linux


Wa mir vu Leeschtung am Informatik schwätzen, bezéie mir op d'Relatioun tëscht eise Ressourcen an den Aufgaben, déi se eis erlaben an enger bestëmmter Zäit ze kompletéieren.

An engem Dag vun der häerzlecher Konkurrenz tëscht de Firmen ass et wichteg datt mir léiere wéi mir dat benotze wat mir am beschten vu senger Kapazitéit hunn. De Verschwendung vun Hardware oder Software Ressourcen, oder de Mangel u Fäegkeet fir ze wëssen wéi se méi effizient benotzen, schlussendlech e Verloscht dee mir eis einfach net leeschte kënnen wa mir un der Spëtzt vun eisem Spill wëllen.

Zur selwechter Zäit musse mir virsiichteg sinn eis Ressourcen net op eng Limit ze huelen, wou nohalteg Notzung irreparabele Schued bréngt.

An dësem Artikel wäerte mir Iech e relativ neie Performance-Analyse-Tool virstellen an Tipps ubidden, déi Dir benotze kënnt fir Är Linux Systemer ze iwwerwaachen, dorënner Hardware an Uwendungen. Dëst hëlleft Iech ze garantéieren datt se funktionnéieren sou datt Dir fäeg sidd déi gewënschte Resultater ze produzéieren ouni Ressourcen oder Är eegen Energie ze verschwenden.

Aféierung an Installatioun vun Perf am Linux

Ënner anerem liwwert Linux e Performance Iwwerwachung an Analyse Tool genannt bequem perf. Also wat ënnerscheet Perf vun anere bekannten Tools mat deenen Dir scho vertraut sidd?

D'Äntwert ass datt perf Zougang zu der Performance Monitoring Unit an der CPU bitt, an domat erlaabt eis d'Behuele vun der Hardware a seng assoziéiert Eventer enk ze kucken.

Zousätzlech kann et och Software Eventer iwwerwaachen, a Berichter erstellen aus den Daten déi gesammelt ginn.

Dir kënnt perf an RPM-baséiert Verdeelungen installéieren mat:

# yum update && yum install perf     [CentOS / RHEL / Fedora]
# dnf update && dnf install perf     [Fedora 23+ releases]

An Debian an Derivate:

# sudo aptitude update && sudo aptitude install linux-tools-$(uname -r) linux-tools-generic

Wann uname -r am Kommando hei uewen zousätzlech Strings zréckginn nieft der aktueller Versioun (3.2.0-23-generesch a mengem Fall), musst Dir amplaz linux-tools-3.2.0-23 tippen vun der Ausgang vun uname benotzen.

Et ass och wichteg ze bemierken datt perf onkomplett Resultater gëtt wann se an engem Gaascht op XEN lafen) do.

Zousätzlech, bedenkt datt e puer Perf Kommandoen op Root als Standard beschränkt kënne ginn, déi ausgeschalt kënne ginn (bis de System nei gestart gëtt) andeems Dir maacht:

# echo 0 > /proc/sys/kernel/perf_event_paranoid

Wann Dir de paranoide Modus permanent auszeschalten musst, aktualiséieren déi folgend Astellung an /etc/sysctl.conf Datei.

kernel.perf_event_paranoid = 0

Wann Dir Perf installéiert hutt, kënnt Dir op seng Man Säit fir eng Lëscht vun verfügbaren Ënnerbefehle referenzéieren (Dir kënnt un Ënnerbefehle als speziell Optiounen denken, déi eng spezifesch Fënster an de System opmaachen). Fir bescht a méi komplett Resultater, benotzt perf entweder als root oder duerch sudo.

perf Lëscht (ouni Optiounen) gëtt all symbolesch Evenementer Zorte (laang Lëscht). Wann Dir d'Lëscht vun den Eventer, déi an enger spezifescher Kategorie verfügbar sinn, kucke wëllt, benotzt Perf Lëscht gefollegt vum Kategorienumm ([hw|sw|cache|tracepoint|pmu|event_glob]), wéi:

Display Lëscht vu Software virdefinéiert Eventer am Linux:

# perf list sw 

perf stat leeft e Kommando a sammelt Linux Performance Statistike während der Ausféierung vun esou engem Kommando. Wat geschitt an eisem System wa mir dd lafen?

# perf stat dd if=/dev/zero of=test.iso bs=10M count=1

D'Statistiken hei uewen weisen ënner anerem un:

  1. D'Ausféierung vum Kommando dd huet 21,812281 Millisekonnen CPU gedauert. Wa mir dës Zuel duerch de Wäert vun vergaangene Sekonnen Zäit ënnerdeelen (23,914596 Millisekonnen), gëtt et 0,912 (CPU benotzt).
  2. Während de Kommando ausgeführt gouf, weisen 15 Kontextschalter (och als Prozessschalter bekannt) un datt d'CPUs 15 Mol vun engem Prozess (oder Fuedem) op en aneren ëmgewiesselt goufen.
  3. 2 CPU Migratiounen ass dat erwaart Resultat wann an enger 2-Core CPU d'Aarbechtslaascht gläichméisseg tëscht der Unzuel vun de Cores verdeelt ass.
    Wärend där Zäit (21,812281 Millisekonnen) war d'Gesamtzuel vun de CPU-Zyklen, déi verbraucht goufen, 62,025,623, wat gedeelt duerch 0,021812281 Sekonnen 2,843 GHz gëtt.
  4. Wa mir d'Zuel vun den Zyklen duerch den Total Instruktiounszuel deelen, kréie mir 4,9 Zyklen pro Instruktioun, dat heescht datt all Instruktioun bal 5 CPU-Zyklen gedauert huet (am Duerchschnëtt). Mir kënnen dëst (op d'mannst deelweis) op d'Zuel vun de Filialen a Branche-Mëssen zouzeschreiwen (kuckt hei ënnen), déi endlech CPU-Zyklen verschwenden oder mëssbrauchen.
  5. Wéi de Kommando ausgefouert gouf, goufen insgesamt 3.552.630 Filialen begéint. Dëst ass d'CPU-Niveau Representatioun vun Entscheedungspunkten a Loops am Code. Wat méi Branchen, wat manner d'Leeschtung ass. Fir dëst ze kompenséieren, probéieren all modern CPUs de Flow virauszesoen deen de Code wäert huelen. 51.348 Filial-Mëssen weisen datt d'Prognose Feature falsch war 1,45% vun der Zäit.

Dee selwechte Prinzip gëllt fir Statistiken ze sammelen (oder an anere Wierder, Profiléierung) wärend eng Applikatioun leeft. Einfach déi gewënschte Applikatioun starten an no enger raisonnabeler Zäit (wat un Iech ass) zoumaachen, a perf weist d'Statistiken um Bildschierm. Andeems Dir dës Statistiken analyséiert kënnt Dir potenziell Probleemer identifizéieren.

perf top ass ähnlech wéi Top Kommando, an datt et e bal Echtzäit System Profil weist (och bekannt als Live Analyse).

Mat der Optioun -a gesitt Dir all déi bekannt Eventtypen, wärend d'Optioun -e Iech erlaabt eng spezifesch Eventkategorie ze wielen (wéi vun der Perf Lëscht zréckginn) :

Wäert all Zyklen Event weisen.

perf top -a 

Wäert all CPU-Auer Zesummenhang Eventer weisen.

perf top -e cpu-clock 

Déi éischt Kolonn an der Ausgab hei uewen representéiert de Prozentsaz vun de Proben déi zënter dem Ufank vum Laf geholl goufen, gruppéiert no Funktioun Symbol a Shared Object. Méi Optiounen sinn am Mann Perf-Top sinn.

perf record leeft e Kommando a späichert déi statistesch Donnéeën an eng Datei mam Numm perf.data am aktuellen Aarbechtsverzeichnis. Et leeft ähnlech wéi Perf Stat.

Typ perf record gefollegt vun engem Kommando:

# perf record dd if=/dev/null of=test.iso bs=10M count=1

perf Bericht formatéiert d'Daten, déi an perf.data gesammelt sinn, an e Performance Bericht:

# sudo perf report

All déi uewe genannte Ënnerbefehle hunn eng dedizéierten Mann Säit déi als opgeruff ka ginn:

# man perf-subcommand

wou Ënnerkommando entweder Lëscht, Stat, Top, Rekord oder Bericht ass. Dëst sinn déi meescht benotzt Ënnerbefehle; anerer sinn an der Dokumentatioun opgezielt (kuckt op de Resumé Sektioun fir de Link).

Resumé

An dësem Guide hu mir Iech perf agefouert, e Performance Iwwerwachung an Analyse Tool fir Linux. Mir encouragéieren Iech ganz mat senger Dokumentatioun vertraut ze ginn, déi op https://perf.wiki.kernel.org gehale gëtt.

Wann Dir Uwendungen fannt, déi en héije Prozentsaz vu Ressourcen verbrauchen, kënnt Dir iwwerleeë fir de Quellcode z'änneren oder aner Alternativen ze benotzen.

Wann Dir Froen iwwer dësen Artikel hutt oder Suggestioune fir ze verbesseren, si mir all Oueren. Fillt Iech gratis eis z'erreechen andeems Dir de Kommentarformular hei drënner benotzt.