System Tryk

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 10. juni 2018; checks kræver 2 redigeringer .
System Tryk
Type sporing
Udvikler fællesskab
Skrevet i C++ , brugerscripts
Operativ system linux
Første udgave 2005
Hardware platform linux
nyeste version 3.3 [1] (8. juni 2018)
Licens GNU General Public License
Internet side sourceware.org/systemtap/

SystemTap  er et værktøj, der giver dig mulighed for at indsamle og analysere information om et kørende Linux -system.

I modsætning til indbyggede værktøjer som netstat , ps , top , er SystemTap designet til at give flere muligheder for at indsamle og præsentere information.

SystemTap er en kommandolinjegrænseflade og et scriptsprog .

Systemadministratorer kan bruge SystemTap til at overvåge og analysere systemets ydeevne, og softwareudviklere kan bruge SystemTap til at analysere applikationsadfærd på et kørende system.

Virksomheder som Red Hat , IBM , Oracle Corporation , Hitachi er involveret i udviklingen af ​​SystemTap-projektet . [2]

Sådan virker det

Hovedideen med SystemTap er at mærke hændelser og tildele handlere til dem.

Under udførelsen af ​​scriptet overvåger SystemTap hændelser, og så snart en hændelse indtræffer, vil systemkernen udføre handleren.

Hændelser kan være begyndelsen eller slutningen af ​​en SystemTap-session, en timerudløb og andre.

En handler er en sekvens af script-sætninger, der vil blive eksekveret efter hændelsen udløses. Typisk henter handlere information fra begivenhedskonteksten eller viser information på skærmen.

SystemTap-sessionen starter, når vi udfører scriptet. På dette tidspunkt sker følgende rækkefølge af handlinger:

  1. Først tjekker SystemTap tapset-biblioteket for dem, der bruges i scriptet;
  2. SystemTap oversætter derefter scriptet til C og kører systemkompileren for at skabe et kernemodul fra scriptet;
  3. SystemTap indlæser modulet og udløser alle hændelser i scriptet;
  4. Så snart en hændelse opstår, udføres handleren for denne hændelse;
  5. Når alle hændelser er gennemført, aflæses modulet, og sessionen afsluttes.

Scripts

Begivenheder

Synkrone hændelser

Synkrone hændelser er knyttet til en instruktion på et bestemt sted i kernekoden.

Eksempler på synkrone hændelser:

  • syscall.system_call
  • vfs.file_operation
  • kernel.function("funktion")
  • modul("modul").function("funktion")
Asynkrone hændelser

Asynkrone hændelser er ikke bundet til en specifik instruktion eller en specifik placering i kernekoden.

Eksempler på asynkrone hændelser:

  • start - begyndelsen af ​​SystemTap-sessionen
  • slutning - slutning af SystemTap-sessionen
  • timer.event() - timernedtælling (timer.s(4) - hændelsen udløses hvert 4. sekund)

Håndtere

Hændelseshandleren er omgivet af krøllede klammeparenteser ({}).

Til output til skærmen bruges formatfunktionen printf ("formatstreng\n", argumenter), som ligner den tilsvarende funktion i C .

Nogle SystemTap-funktioner til brug med printf():

  • pid() — proces-id
  • uid() — bruger-id
  • execname() - procesnavn
  • cpu () - processornummer

Eksempel på script

Manuskript:

probe syscall.open { printf ("%s(%d) åben\n", execname(), pid()) }

Resultat:

vmware-guestd(2206) åben hald(2360) åben hald(2360) åben hald(2360) åben df(3433) åben df(3433) åben df(3433) åben hald(2360) åben


Se også

Noter

  1. LKML: "Frank Ch. Eigler": systemtap 3.3 release . lkml.org. Hentet 10. juni 2018. Arkiveret fra originalen 12. juni 2018.
  2. A System Tap update . Hentet 18. juni 2012. Arkiveret fra originalen 6. maj 2012.

Links

SystemTap på hovedsiden