Innføre runqstat – Ny Linux Kjøre Kø & Legg i Gjennomsnitt Verktøy

Få reell Gjennomsnittlig CPU-Belastning på Linux

Linux Legg i Gjennomsnitt er like gammel som den hills, og omtrent like forvirrende, så få ingeniører kan også fortelle deg hva det egentlig er, eller hvordan den er beregnet.,
Heldigvis, Brendon Gregg har en flott oppsummering inkludert dens historie, på Linux Legg Gjennomsnitt: å Løse et Mysterium, hvor du kan se kjernen av problemet:

Linux Legg inneholder Gjennomsnittlig i/O –

Det er så enkelt som det. I motsetning til alle andre UNIX-lignende systemer (Solaris, AIX, etc.), Linux teller BÅDE for kjører/kjørbart prosesser OG blokkert (uavbrutt) prosesser, som vanligvis venter for i/O. Dette er en dårlig ting, og dateres til en arkaisk 24 år gamle patch at Brendon funnet.

Hvorfor bryr vi oss?,

Vi bryr oss fordi på mixed-bruke system (både ved hjelp av både CPU og I/O), den resulterende Legg i Gjennomsnitt er svært variabel og ofte ubrukelig. Dette kan være spesielt dårlig med svært gjenget systemer som kan føre til I/O, så det er lett å ha dusinvis eller hundrevis av dem er blokkert på slow-disker.

Hva de fleste av oss egentlig ønsker er den tradisjonelle Unix-mål på Legg i Gjennomsnitt, som er det gjennomsnittlige antall kjørbart prosesser i gjennomsnitt over tid. Dette forteller oss hvordan lagt i systemet vårt, og vi kan se på køen som et mål på metning, dvs., en kontinuerlig CPU-køen betyr w er vi overbelastet.

Så, hvordan kan vi få det?

Vi virkelig ønsker CPU Kjøre kølengde, som blir > 0 når prosessene har for å vente på CPU-en. Men det er vanskelig å få nøyaktig, og Linux-kjernen er ikke veldig vennlig i dette området.

for det Første, hvilken Linux-folk kaller kjøre kø inkluderer kjører oppgaver, så det er egentlig ikke køen, men køen pluss hva er i gang. Dette er forvirrende, og dermed må du trekke fra antall Cpuer for å få en følelse av den virkelige køen.,

Flere verktøy kan få den aktuelle momentant kjøre kø størrelse. Dette er hva vmstat «r» – kolonnen og «sar -q» viser; både få dette fra /proc/stat er procs_running beregningen.

problemet er At dette er en umiddelbar teller, så det er veldig bråkete og behov for å være i gjennomsnitt for å få nyttig data, men kjernen vil ikke gjøre dette for deg. Ideell det vil være en kjerne utgang i /proc for CPU og i/O-bare legg i gjennomsnitt, men ingen har opprettet dette ennå.,

Så vi trenger et verktøy som prøver å etterligne hvordan Legg Gjennomsnittlig fungerer, ved raskt prøvetaking dette instant kjøre kø størrelse, og gjennomsnitt denne over tid.

å Innføre runqstat

runqstat gjør dette — det er en enkel kommandolinje-verktøy skrevet i Går som standard prøver denne køen størrelse hver 10ms og gjennomsnitt denne over ett sekund. Målet er en stabil og nøyaktig måling av hvor opptatt systemet er.,
Det inkluderer alternativer for å endre sample rate og gjennomsnittlig tid, pluss til minus antall Cpuer så kan du bare se på den faktiske kø størrelse hvis du vil.

Det har også et alternativ for å beregne den gjennomsnittlige blokkert telle, som i teorien kan du trekke fra Legg i Gjennomsnitt for å få et annet syn på CPU-metning (og til å se hvor mye problemer Legg i Gjennomsnitt er årsaken til deg).

Med dette verktøyet, ops-lag til slutt har en god måte å overvåke Linux-servere metning.

Finne den på Github — runqstat

Share

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *