Cuvinte cheie: cpu, sysctl, freebsd, load_average, (găsi documente înrudite)
- BEST_PEOPLE (2: 5077 / 15.22) ---------------------- BEST_PEOPLE (RU.UNIX.BSD) -
De la. Valentin Nechayev 2: 5020/400 24 Jan 01 16:52:34
Sb. # 091; FreeBSD # 093; Controlul sarcinii CPU
-------------------------------------------------------------------------------
* Redirecționat din zona "RU.UNIX.BSD"
De la: [email protected] (Valentin Nechayev)
>>> Există o utilitate de tip top sau vmstat care ar urmări
>>> încărcarea procesorului și a memoriei, dar datele nu s-au afișat pe ecran,
>>> Și în orice dosar?
Pentru a începe cu - `sysctl -a | mai puțin "și să ia în considerare cu atenție.
Nu mai puțin de jumătate din date vor fi acolo.
AI> durata de funcționare arată cifra medie, nu este clar cât de computabil și că,
AI> de fapt, arătând.
Nu știi? În această formulare - sunt de acord.))
uptime-ul arată media pentru: 1, 5, 15 minute, respectiv - există trei numere -
numărul de procese gata pentru execuție, adică nu în
unele hibernare. Dacă tragi o dată pe minut - este suficient.
AI> Interval, bine, să spunem, 1 minut. Sau 5. Cum îmi doresc.
AI> Scrie cel puțin inactivul pentru procesor și cantitatea de Inact și Free for memory.
AI> Desigur, este de dorit ca acest lucru să nu fie un instantaneu instant al statului
AI> sisteme,
AI> și cifrele medii pentru perioada dintre intrările din fișier.
Idl pentru procesor este considerat după cum urmează. Din kvm cantitatea
ticks statclock'a, în care procesul a fost în fiecare dintre cele cinci state.
În kernel există contoare incrementale ale acestor căpușe-la-stat.
După eliminarea în două momente diferite a valorilor acestor contoare și împărțirea diferenței de valori
contra inactiv, prin suma tuturor valorilor diferenței dintre aceste valori, obțineți
ponderea procesorului în modul inactiv, ținând cont de eroarea metodei de măsurare în sine
"clipește statclock'a." Cât timp petreceți între imagini -
afacerea dvs., dar limita este de 2 ** 22 secunde (
2 luni) pentru procesor.
Iată un program care elimină valorile contoarelor ocupate de CPU
și întreruperile care au avut loc (parțial răsturnate de la systat / vmstat.c):
=== tăiat ===
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define nume de nume NVAL (indx) # 091; (indx) # 093; .n_value
# define NPTR (indx) (void *) NVAL ((indx))
#define NREAD (indx, buf, len) kvm_ckread (NPTR ((indx)), (buf), (len))
static void rdtsc (nesemnate lung *, nesemnate lung *);
static struct nlist namelist # 091; # 093; = # 123;
#define N_CPTIME 0
# 123; "_cp_time" # 125;
#define N_INTRCNT 1
# 123; "_intrcnt" # 125;
#define N_EINTRCNT 2
# 123; "_eintrcnt" # 125;
#define N_INTRNAMES 3
# 123; "_intrnames" # 125;
#define N_EINTRNAMES 4
# 123; "_eintrnames" # 125;
# 123; „“ # 125;
# 125;
int
principal (vid)
# 123;
kvm_t * kd;
char errbuf # 091; 80 # 093 ;;
lung p_time_cnts # 091; CPUSTATES # 093 ;;
nesemnate lung tsc_edx, tsc_eax;
struct timeval TVnow;
int i, nintr;
statică const char * p_time_names # 091; # 093; = # 123;
"t_sys", "t_intr", "t_user", "t_nice", "t_idle"
# 125;
* intrinsec lungi;
char ** intrnames;
char * intrnamebuf;
char * cp;
char obuf # 091; 1000 # 093 ;;
char * opos;
char * olim;
olim = obuf + sizeof obuf;
opos = obuf;
gettimeofday ( tvnow, NULL);
rdtsc ( tsc_edx, tsc_eax);
snprintf (opos, olim-opos, "timp =% lu.% ld tsc =% lu:% lu",
tvnow.tv_sec, tvnow.tv_usec, tsc_edx, tsc_eax);
opos + = strlen (opos);
kd = kvm_openfiles (NULL, NULL, NULL, O_RDONLY, errbuf);
dacă (kd == NULL) # 123;
errx (1, "% s", errbuf);
# 125;
dacă (kvm_nlist (kd, namelist)! = 0)
err (1, "kvm_nlist () nu a reușit");
dacă (! namelist # 091; 0 # 093; .n_type)
errx (1, "nu există un meniu după kvm_nlist ()");
if (kvm_read (kd, namelist # 091; N_CPTIME # 093; .n_value, p_time_cnts,
sizeof (p_time_cnts))! = dimensiunea (p_time_cnts))
errx (1, "kvm_read () nu a reușit");
pentru (i = 0; i
p_time_names # 091; i # 093 ;, p_time_cnts # 091; i # 093; );
opos + = strlen (opos);
# 125;
nintr = (numelistul # 091; N_EINTRCNT # 093; .n_value - numelistul # 091; N_INTRCNT # 093; .n_value)
/ sizeof (lung);
intcnts = (lung *) calloc (nintr, sizeof (lung));
intrnames = (char **) calloc (nintr, sizeof (lung));
intrnamebuf = (char *) malloc (
namelist # 091; N_EINTRNAMES # 093; .n_value - namelist # 091; N_INTRNAMES # 093; .n_value);
dacă (! intcnts ||! intrnames ||! intrnamebuf)
errx (1, "fără memorie");
dacă (kvm_read (kd, namelist # 091; N_INTRNAMES # 093; .n_value; intrnamebuf;
namelist # 091; N_EINTRNAMES # 093; .n_value - namelist # 091; N_INTRNAMES # 093; .n_value)
== 0)
errx (1, "kvm_read (intrnamebuf)");
pentru (cp = intrnamebuf, i = 0; i
intrări # 091; i # 093; = p1 = cp;
în timp ce (p1 * p1) # 123;
dacă (* p1 == '')
* p1 = '_';
p1 ++;
# 125;
cp + = strlen (cp) + 1;
# 125;
dacă (kvm_read (kd, namelist # 091; N_INTRCNT # 093; .n_value, intnnts,
nintr * sizeof (lung))! = nintr * sizeof (lung))
errx (1, "kvm_read (intnnts)");
pentru (i = 0; i
continua;
snprintf (opo, olim-opos,
"i.% s =% ld", intrări # 091; i # 093;, intcnts # 091; i # 093; );
opos + = strlen (opos);
# 125;
#if 0
printf ("% sn", obuf);
#else
openlog ("syscounters", LOG_PID, LOG_DAEMON);
syslog (LOG_NOTICE, "% s", obuf);
# endif
retur 0;
# 125;
static gol
rdtsc (nesemnate lung * tsc_edx, nesemnate lung * tsc_eax)
# 123;
asm ("rdtsc". "= d" (* tsc_edx), "= a" (* tsc_eax));
# 125;
=== tăiere la capăt ===
/ netc
--- ifmail v.2.15dev5
* Origine: Lucky Netch Incorporated (2: 5020/400)
Revizuirea Lost Chron. Jocuri făcute fără iubire și diligență, ca un balon - coaja este, dar înăuntru este gol. Lo.
Revizuirea Podului "Sus" și "fund" în The Bridge - conceptele sunt relative. Mergând sub arc, puteți ușor să traversați.
Revizuirea SimCity Când SimCity a fost lansat cu o lună în urmă, tsunami-ul de furie a oamenilor - osh stupid - a fost difuzat pe Net.
Revizuirea strategiei . Denumirea strategiei Tactici: cel de-al doilea război mondial aproape că nimeni nu știe. Dar o privire la scenariul ei.
Revizuirea jocului pentru Scrib. Conform tradiției stabilite în cartea de informații a jocului, oferim un exemplu de mai multe jocuri similare.
Revizuirea jocului pentru Walki. Zombi și produse pe bază de licență - care, în sine, nu sunt cei mai buni reprezentanți ai biosferei jocului.