blkparse(1): Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) |
||
| Rad 154: | Rad 154: | ||
; '''B -- bounced''' | ; '''B -- bounced''' | ||
: Datasidorna kopplade till denna ''bio'' kan inte nås av hårdvaran och | : Datasidorna kopplade till denna ''bio'' kan inte nås av hårdvaran och måste studsas till en lägre minnesadress. Detta orsakar en kraftig prestandaförsämring eftersom data måste kopieras till/från kärnbuffertar.Vanligen kan detta lösas med bättre hårdvara — antingen en bättre I/O-styrenhet eller en plattform med IOMMU. | ||
; '''M -- back merge''' | ; '''M -- back merge''' | ||
: Det finns redan en tidigare insatt begäran som slutar precis där denna | : Det finns redan en tidigare insatt begäran som slutar precis där denna I/O börjar, så I/O-schemaläggaren kan slå ihop dem. | ||
; '''F -- front merge''' | ; '''F -- front merge''' | ||
: Samma som back merge, men denna I/O slutar där en tidigare insatt | : Samma som back merge, men denna I/O slutar där en tidigare insatt begäran börjar. | ||
; '''M -- front or back merge''' | ; '''M -- front or back merge''' | ||
| Rad 172: | Rad 166: | ||
; '''G -- get request''' | ; '''G -- get request''' | ||
: För att skicka någon typ av begäran till en blockenhet måste först en | : För att skicka någon typ av begäran till en blockenhet måste först en ''struct request''-behållare allokeras. | ||
; '''S -- sleep''' | ; '''S -- sleep''' | ||
: Det fanns inga tillgängliga begäransstrukturer, så utfärdaren måste | : Det fanns inga tillgängliga begäransstrukturer, så utfärdaren måste vänta tills en frigörs. | ||
; '''P -- plug''' | ; '''P -- plug''' | ||
: När I/O köas till en tidigare tom blockenhetskö kommer Linux att plugga | : När I/O köas till en tidigare tom blockenhetskö kommer Linux att plugga kön i väntan på framtida I/O som kan läggas till innan datan behövs. | ||
; '''U -- unplug''' | ; '''U -- unplug''' | ||
: Det finns redan begäransdata i enheten; börja skicka begäranden till | : Det finns redan begäransdata i enheten; börja skicka begäranden till | ||
drivrutinen. Detta kan ske automatiskt om en timeout har passerat | |||
(se nästa post) eller om ett antal begäranden har lagts till i kön. | |||
; '''T -- unplug due to timer''' | ; '''T -- unplug due to timer''' | ||
: Om ingen begär den I/O som köades efter att kön pluggades kommer Linux | : Om ingen begär den I/O som köades efter att kön pluggades kommer Linux | ||
automatiskt att unplugga den efter en viss tid. | |||
; '''X -- split''' | ; '''X -- split''' | ||
: På RAID- eller device-mapper-konfigurationer kan inkommande I/O gå över | : På RAID- eller device-mapper-konfigurationer kan inkommande I/O gå över | ||
en enhets- eller intern zon-gräns och måste delas upp i mindre delar | |||
för att kunna hanteras. Detta kan indikera ett prestandaproblem på grund | |||
av en dålig RAID/DM-konfiguration, men kan också vara normalt gränsbeteende. | |||
DM är särskilt dåligt på detta och kommer att klona mycket I/O. | |||
; '''A -- remap''' | ; '''A -- remap''' | ||
: För staplade enheter mappas inkommande I/O om till enheten under den i | : För staplade enheter mappas inkommande I/O om till enheten under den i | ||
I/O-stacken. Remap-åtgärden visar exakt vad som mappas om till vad. | |||
; '''R -- requeue''' | ; '''R -- requeue''' | ||
Versionen från 25 april 2026 kl. 11.13
NAMN
blkparse — producera formaterad utdata från händelseströmmar för blockenheter
SYNOPSIS
blkparse [ alternativ ]
BESKRIVNING
Verktyget blkparse försöker kombinera händelseströmmar för olika enheter på olika CPU:er och producera en formaterad utdata av händelseinformationen. Mer specifikt tar det den maskinläsbara utdatan från verktyget blktrace och omvandlar den till ett snyggt formaterat och lättläst format.
Precis som för blktrace hjälper några detaljer om blkparse till att förstå kommandoradsalternativen nedan.
- Som standard förväntar sig blkparse att köras i ett efterbehandlingsläge,
där spårningshändelserna har sparats av en tidigare körning av blktrace, och blkparse kombinerar händelseströmmar och skriver ut formaterad data.
blkparse kan köras live samtidigt med blktrace genom att ange -i - till blkparse och kombinera det med live-alternativet för blktrace. Ett exempel:
% blktrace -d /dev/sda -o - | blkparse -i -
- Du kan styra hur många händelser blkparse läser per batch via
alternativet -b. Standardvärdet är 512.
- Om du har sparat spårningshändelser i blktrace med andra utdatafilnamn
(via alternativet -o till blktrace), måste du ange samma indatafilnamn via alternativet -i.
- Formatet på utdatan kan styras via alternativen -f eller -F —
se UTDATABESKRIVNING OCH FORMATTERING för detaljer.
Som standard skickar blkparse formaterad data till standardutmatningen. Detta kan ändras via alternativet -o, eller så kan textutdata inaktiveras via alternativet -O. En sammanslagen binär ström kan produceras med alternativet -d.
ALTERNATIV
- -A hex-mask, --set-mask=hex-mask
- Sätt filtermasken till hex-mask; se blktrace(8) för masker.
- -a mask, --act-mask=mask
- Lägg till mask till nuvarande filter; se blktrace(8) för masker.
- -D dir, --input-directory=dir
- Lägg till dir före indatafilnamn.
- -b batch, --batch={batch}
- Batchstorlek för läsning från standard in.
- -i file, --input=file
- Anger basnamn för indatafiler — standard är
device.blktrace.cpu.
- Som nämnts ovan innebär -i - att köra i live-läge med blktrace
(läser data från standard in).
- -F typ,fmt, --format=typ,fmt
- -f fmt, --format-spec=fmt
- Anger utdataformat (se UTDATABESKRIVNING OCH FORMATTERING för detaljer).
- Formen -f anger ett format för alla händelser.
- Formen -F låter dig ange ett format för en viss händelsetyp.
Det enskilda tecknet typ är en av åtgärdsspecifikationerna som beskrivs i ÅTGÄRDSIDENTIFIERARE.
- -M, --no-msgs
- När -d anges, hindrar detta meddelanden från att skrivas till filen.
(Kan kraftigt minska storleken på den resulterande filen vid användning av CFQ I/O-schemaläggaren.)
- -h, --hash-by-name
- Hasha processer efter namn, inte PID.
- -o file, --output=file
- Utdatafil.
- -O, --no-text-output
- Generera inte textutdata; används endast för binär utdata (-d).
- -d file, --dump-binary=file
- Binär utdatafil.
- -q, --quiet
- Tyst läge.
- -s, --per-program-stats
- Visar data sorterad per program.
- -S event, --sort-program-stats=event
- Visar varje programs data sorterad efter programnamn eller I/O-händelse,
såsom Queued, Read, Write och Complete. När -S anges ignoreras -s. Versalerna Q, R, W, C står för KB, medan q/r/w/c står för IO.
- Om du vill sortera program efter hur mycket data de köade kan du använda:
blkparse -i sda.blktrace. -q -S Q -o sda.parse
- -t, --track-ios
- Visa tidsdeltan per IO.
- -w span, --stopwatch=span
- Visa spårningar för det angivna intervallet span, där span kan vara:
- end-time — visa spårningar från tid 0 till och med end-time (i ns)
- eller
- start:end-time — visa spårningar från tid start till och med
end-time (i ns).
- -v, --verbose
- Mer utförlig marginalinformation vid mindre fel.
- -V, --version
- Visa version.
SPÅRNINGSÅTGÄRDER
Följande spårningsåtgärder känns igen:
- C -- complete
- En tidigare utfärdad begäran har slutförts. Utdatan visar sektor och
storlek för begäran samt om den lyckades eller misslyckades.
- D -- issued
- En begäran som tidigare låg i blocklagrets kö eller i I/O-schemaläggaren
har skickats till drivrutinen.
- I -- inserted
- En begäran skickas till I/O-schemaläggaren för att läggas till i den
interna kön och senare hanteras av drivrutinen. Begäran är fullständigt formad vid denna tidpunkt.
- Q -- queued
- Markerar avsikten att köa I/O på den angivna platsen. Det finns ännu
ingen verklig begäran.
- B -- bounced
- Datasidorna kopplade till denna bio kan inte nås av hårdvaran och måste studsas till en lägre minnesadress. Detta orsakar en kraftig prestandaförsämring eftersom data måste kopieras till/från kärnbuffertar.Vanligen kan detta lösas med bättre hårdvara — antingen en bättre I/O-styrenhet eller en plattform med IOMMU.
- M -- back merge
- Det finns redan en tidigare insatt begäran som slutar precis där denna I/O börjar, så I/O-schemaläggaren kan slå ihop dem.
- F -- front merge
- Samma som back merge, men denna I/O slutar där en tidigare insatt begäran börjar.
- M -- front or back merge
- En av ovanstående.
- G -- get request
- För att skicka någon typ av begäran till en blockenhet måste först en struct request-behållare allokeras.
- S -- sleep
- Det fanns inga tillgängliga begäransstrukturer, så utfärdaren måste vänta tills en frigörs.
- P -- plug
- När I/O köas till en tidigare tom blockenhetskö kommer Linux att plugga kön i väntan på framtida I/O som kan läggas till innan datan behövs.
- U -- unplug
- Det finns redan begäransdata i enheten; börja skicka begäranden till
drivrutinen. Detta kan ske automatiskt om en timeout har passerat (se nästa post) eller om ett antal begäranden har lagts till i kön.
- T -- unplug due to timer
- Om ingen begär den I/O som köades efter att kön pluggades kommer Linux
automatiskt att unplugga den efter en viss tid.
- X -- split
- På RAID- eller device-mapper-konfigurationer kan inkommande I/O gå över
en enhets- eller intern zon-gräns och måste delas upp i mindre delar för att kunna hanteras. Detta kan indikera ett prestandaproblem på grund av en dålig RAID/DM-konfiguration, men kan också vara normalt gränsbeteende. DM är särskilt dåligt på detta och kommer att klona mycket I/O.
- A -- remap
- För staplade enheter mappas inkommande I/O om till enheten under den i
I/O-stacken. Remap-åtgärden visar exakt vad som mappas om till vad.
- R -- requeue
- Lägg tillbaka en begäran i kön.
UTDATABESKRIVNING OCH FORMATTERING
Utdatan från blkparse kan anpassas för särskilda behov — särskilt för att förenkla parsning av utdatan och/eller begränsa fälten till dem som användaren vill se. Data för fält som kan skrivas ut inkluderar:
- a
- Åtgärd, en (kort) sträng (1 eller 2 tecken) — se tabellen nedan för fler detaljer
- c
- CPU-id
- C
- Kommando
- d
- RWBS-fält, en (kort) sträng (1–3 tecken) — se avsnittet nedan för fler detaljer
- D
- 7-teckenssträng som innehåller major- och minor-nummer för händelsens
enhet (separerade med kommatecken)
- e
- Felvärde
- g
- Cgroup-identifierare för den cgroup som genererade I/O:t. Observera att
detta kräver lämpligt kärnstöd (kärnversion minst 4.14).
- m
- Minor-nummer för händelsens enhet
- M
- Major-nummer för händelsens enhet
- n
- Antal block
- N
- Antal byte
- p
- Process-ID
- P
- Visa paketdata — serie hexadecimala värden
- s
- Sekvensnummer
- S
- Sektornummer
- t
- Tidsstämpel (nanosekunder)
- T
- Tidsstämpel (sekunder)
- u
- Förfluten tid i mikrosekunder (kommandoradsalternativet -t)
- U
- Unsigned integer i nyttolasten
- z
- Absolut tid, som lokal tid i din tidszon, utan datum
Observera att användaren valfritt kan ange fältbredd och även en vänsterjusteringsflagga. Dessa föregår fältspecifikationen med ett %-tecken, följt av den valfria vänsterjusteringsflaggan (-), därefter bredden (ett decimaltal) och sedan fältet.
För att till exempel ange kommandot i ett 12-teckensfält som är vänsterjusterat:
-f "%-12C"
ÅTGÄRDSIDENTIFIERARE
Följande tabell visar de olika åtgärder som kan skrivas ut:
- A
- IO mappades om till en annan enhet
- B
- IO studsade
- C
- IO-slutförande
- D
- IO utfärdades till drivrutin
- F
- IO front-mergades med begäran i kön
- G
- Hämta begäran
- I
- IO lades in i begärandekön
- M
- IO back-mergades med begäran i kön
- P
- Plug-begäran
- Q
- IO hanterades av begärandekod
- S
- Sovbegäran
- T
- Unplug på grund av timeout
- U
- Unplug-begäran
- X
- Split
RWBS-BESKRIVNING
Detta är en kort sträng som innehåller tecken i följande ordning:
- F
- Flush
- R
- Read
- W
- Write
- D
- Discard
- B
- Barrier
- N
- Annan operation
- F
- Force Unit Access (FUA)
- A
- Readahead
- S
- Synkron
- M
- Meta
Ett av R, W, D eller N finns alltid med. Övriga tecken är valfria. Observera att F har två betydelser beroende på position.
STANDARDUTDATA
Standardhuvudet (eller de första visade fälten) innehåller:
"%D %2c %8s %5T.%9t %5p %2a %3d"
Uppdelat betyder detta:
- %D
- Visar händelsens major/minor för enheten som: %3d,%-3d.
- %2c
- CPU-ID (2-teckensfält).
- %8s
- Sekvensnummer.
- %5T.%9t
- 5-teckensfält för sekunddelen av tidsstämpeln och ett 9-teckensfält för
nanosekunderna i tidsstämpeln.
- %5p
- 5-teckensfält för process-ID.
- %2a
- 2-teckensfält för någon av åtgärderna.
- %3d
- 3-teckensfält för RWBS-data.
Detta ser ut så här i praktiken:
8,0 3 1 0.000000000 697 G W 223490 + 8 [kjournald]
Rubriken är datan i denna rad fram till 223490 (startblock). Standardutdatan för alla händelsetyper inkluderar detta huvud.
STANDARDUTDATA PER ÅTGÄRD
- C -- complete
- Om en nyttolast finns närvarande visas den inom parentes efter huvudet,
följt av felvärdet.
- Om ingen nyttolast finns visas sektor och antal block (med ett plustecken
emellan). Om alternativet -t angavs visas även den förflutna tiden. I båda fallen följs detta av felvärdet för slutförandet.
- B -- bounced
- D -- issued
- I -- inserted
- Q -- queued
- Om en nyttolast finns visas antalet nyttolastbyte följt av nyttolasten i
hexadecimal form inom parentes.
- Om ingen nyttolast finns visas sektor och antal block (med ett
plustecken emellan). Om alternativet -t angavs visas även den förflutna tiden inom parentes. I båda fallen följs detta av kommandot associerat med händelsen (inom hakparenteser).
- F -- front merge
- G -- get request
- M -- back merge
- S -- sleep
- Startsektorn och antal block visas (med ett plustecken emellan), följt
av kommandot associerat med händelsen (inom hakparenteser).
- P -- plug
- Kommandot associerat med händelsen (inom hakparenteser) visas.
- U -- unplug
- T -- unplug due to timer
- Kommandot associerat med händelsen (inom hakparenteser) visas, följt av
antalet utestående begäranden.
- X -- split
- Den ursprungliga startsektorn följt av den nya sektorn (separerade med
ett snedstreck /) visas, följt av kommandot associerat med händelsen (inom hakparenteser).
- A -- remap
- Sektor och längd visas tillsammans med den ursprungliga enheten och
sektoroffseten.
EXEMPEL
För att spåra I/O på enheten /dev/sda och tolka utdatan till ett människoläsbart format, använd följande kommando:
% blktrace -d /dev/sda -o - | blkparse -i -
(se blktrace(8) för mer information). Samma beteende kan uppnås med hjälpskriptet btrace. Kommandot
% btrace /dev/sda
har exakt samma effekt som föregående kommando. Se btrace(8) för mer information.
För att spåra I/O på en enhet och spara utdatan för senare bearbetning med blkparse, använd blktrace så här:
% blktrace /dev/sda /dev/sdb
Detta kommer att spåra I/O på enheterna /dev/sda och /dev/sdb och spara informationen i filerna sda respektive sdb i aktuell katalog. Denna spårningsinformation kan senare tolkas av verktyget blkparse:
% blkparse sda sdb
vilket skriver den tidigare inspelade spårningsinformationen i människoläsbar form till standardutmatningen.
FÖRFATTARE
blkparse skrevs av Jens Axboe, Alan D. Brunelle och Nathan Scott. Denna manualsida skapades utifrån dokumentationen för blktrace av Bas Zoetekouw.
RAPPORTERING AV FEL
Rapportera fel till <linux-btrace@vger.kernel.org>
UPPHOVSRÄTT
Copyright © 2006 Jens Axboe, Alan D. Brunelle och Nathan Scott. Detta är fri programvara. Du får vidaredistribuera kopior av den enligt villkoren i GNU General Public License <http://www.gnu.org/licenses/gpl.html>. Det finns INGEN GARANTI, i den utsträckning lagen tillåter.
Denna manualsida skapades för Debian av Bas Zoetekouw. Den härleddes från dokumentationen som tillhandahölls av författarna och får användas, distribueras och modifieras enligt villkoren i GNU General Public License, version 2.
På Debian-system finns texten till GNU General Public License i /usr/share/common-licenses/GPL-2.
SE ÄVEN
btrace(8), blktrace(8), verify_blkparse(1), blkrawverify(1), btt(1)
COLOPHON
Denna sida är en del av projektet blktrace (Linux block layer I/O tracer). Information om projektet finns på [okänt — om du vet, kontakta man-pages@man7.org] Det är inte känt hur fel för denna manualsida ska rapporteras; om du vet, skicka e-post till man-pages@man7.org. Denna sida hämtades från projektets uppströms Git-arkiv ⟨https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git⟩ den 2026-01-16. (Vid den tidpunkten var datumet för den senaste commit som hittades i arkivet 2025-12-10.) Om du upptäcker renderingsproblem i denna HTML-version av sidan, eller om du anser att det finns en bättre eller mer uppdaterad källa för sidan, eller om du har korrigeringar eller förbättringar av informationen i denna COLOPHON (som inte är en del av originalmanualsidan), skicka e-post till man-pages@man7.org
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/blkparse.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till PC Service som har sponsrat Linux.se med webbhotell.