systemadmin.es > Rendimiento > plist-sz del sar: Procesos y threads

plist-sz del sar: Procesos y threads

Analizando un sistema con sar podremos ver la columna plist-sz que corresponde al número de tareas en ese momento, por ejemplo:

# sar -q
Linux 3.2.0-4-686-pae (ironport) 	21/01/15 	_i686_	(1 CPU)

15:25:01      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
15:35:01            0       235      0.13      0.10      0.06         0
15:45:01            0       234      0.01      0.06      0.05         0
15:55:01            0       233      0.02      0.06      0.05         0
16:05:01            0       234      0.03      0.04      0.05         0
16:15:01            0       235      0.00      0.02      0.05         0
16:25:01            0       235      0.08      0.05      0.05         0
16:35:01            0       234      0.01      0.04      0.05         0
16:45:01            0       235      0.01      0.03      0.05         0
(...)

Pero veremos que no corresponde al número de procesos del equipo:

# ps aux | wc -l
127

En caso que alguna aplicación este usando threads, cada thread es también una tarea que se debe ejecutar por separado, por lo que se debe también diferenciar en el sar.

# ls -d /proc/[0-9]*/task/* | wc -l
231

Para poder ver que los números cuadren podemos usar el /proc, dentro de cada proceso existe una directorio task con todos los threads del proceso, y dentro de cada identificador de thread encontraremos un conjunto de ficheros similar al de un proceso:

# cd /proc/17576
# ls
attr	   clear_refs	    cpuset   fd      loginuid	mounts	    oom_adj	   personality	smaps  status
autogroup  cmdline	    cwd      fdinfo  maps	mountstats  oom_score	   root		stack  syscall
auxv	   comm		    environ  io      mem	net	    oom_score_adj  sched	stat   task
cgroup	   coredump_filter  exe      limits  mountinfo	ns	    pagemap	   sessionid	statm  wchan
# cd task/
# ls
17576  17580  17584  17588  17592  17596  17600  17604	17608  17612  17616  17620  17624  17628  17632  17636	17641
17577  17581  17585  17589  17593  17597  17601  17605	17609  17613  17617  17621  17625  17629  17633  17637
17578  17582  17586  17590  17594  17598  17602  17606	17610  17614  17618  17622  17626  17630  17634  17638
17579  17583  17587  17591  17595  17599  17603  17607	17611  17615  17619  17623  17627  17631  17635  17640
# cd 17613
# ls
attr	clear_refs  cpuset   exe     io        maps	  mounts   oom_score	  personality  sessionid  stat	  syscall
auxv	cmdline     cwd      fd      limits    mem	  ns	   oom_score_adj  root	       smaps	  statm   wchan
cgroup	comm	    environ  fdinfo  loginuid  mountinfo  oom_adj  pagemap	  sched        stack	  status

Podemos usar estos directorios del /proc para identificar los procesos con más threads:

# ls -d /proc/[0-9]*/task/* | sort | cut -f-3 -d/ | uniq -c | sort -n
(...)
      3 /proc/2964
      4 /proc/18837
      4 /proc/2696
     10 /proc/2123
     17 /proc/3500
     65 /proc/17576

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>