Anders Jonsson
anders.jonsson@norsjovallen.se 2016

# Profilering

# Hur du kan profilera ditt system

Då Sysprof profilerar system spelar det in stackinformation för alla program som kör, inklusive Linux-kärnan. Detta kan ibland vara förvirrande om du bara vill titta på en enstaka process. Om ditt program inte interagerar mycket med värdsystemet kan du lyckas bättre med att använda Sysprof för att starta en ny process.

För att profilera hela ditt system säkerställer du att målknappen är inställd på Alla processer och klickar Spela in.

Vid denna tidpunkt kan du bli efterfrågad att auktorisera åtkomst för att profilera systemet. Detta krävs för att Linux-kärnans implementation av perf kräver att root utför profilering av hela systemet.

Under profileringssessionen kommer du att se antalet sekunder som profilen varit aktiv. Att klicka på knappen Spela in igen kommer att stoppa profileringssessionen. Efter detta kommer anropsgrafen att visas.

Om du ser att programmet sysprof dyker upp i anropsgrafen för din profilering kan du vilja spela in profileringssessionen med sysprof-cli. Detta är ett kommandradsprogram som fångar in din profileringssession till disk så att den kan visas vid ett senare tillfälle.

Se tolka resultat för mer hjälp.

# Profilera en ny process

Ofta kan du behöva starta en ny process att profilera. Välj först knappen Program högst upp i inspelningsfönstret. Fyll i ditt kommando och arbetskatalogen, och valfritt eventuella miljövariabler som du behöver. Din process kommer startas när inspelningen startar.

Om du startar en process som kräver åtkomst till din aktuella display, så som ett GTK+-program, kommer du vilja vara säker på att Ärv aktuell miljö är inställt.

# Profilering med kommandoradsverktyget sysprof-cli

För minimal prestandakostnad kan du överväga att använda kommandoradsverktyget sysprof-cli. Då det körs utan några argument kommer det spela in hela ditt system och spara utdata till capture.syscap. Denna fil kan öppnas med programmet Sysprof för att visa anropsgrafen.

Om du vill starta en ny process, använd sysprof-cli -- 'kommando' för att ange ett kommando som ska startas. Kommandot kommer ärva den aktuella miljön.

# Tolka resultat

Profileringsresultaten i Sysprof är uppdelade i tre delar. Längst upp till vänster finns en lista över alla profilerade funktioner. De sorteras efter hur ofta de anropades under inspelningen.

Det är viktigt att notera att mängden tid som spenderats i varje funktion inte fångas. Det skulle kräva en spårningsprofilerare för att spela in det korrekt. Procentandelen räknas ut genom att avgöra hur ofta funktionen dök upp i det aktuella stackspåret då ett stickprov spelades in.

Efter att ha valt en funktion från funktionslistan kommer alla anroparna till den funktionen att visas längst ner till vänster. De är också sorterade efter procentandelen av stickproven som innehåller funktionen i stackspåret.

Till höger är alla ättlingarna till en vald funktion. Du kan välja en funktion antingen från funktionslistan eller från listan över anropare.

Om du ser - - Context Switch - - bland dina resultat betyder det att programmet gick in i eller ut från Linux-kärnan. Det kan finnas många orsaker till detta som ett systemanrop eller en signal.