Rapidez de inicio de programas y otros

Germán Poó Caamaño gpoo en ubiobio.cl
Mie Mar 1 21:36:44 CLST 2006


On Tue, 2006-02-28 at 18:20 +0000, rodrigo ahumada montenegro wrote:
> El Mar 28 Feb 2006 18:25, Horst von Brand escribió:
> [...]
> > Si no dices con que comparas... y que tanto se demora el programa GUIistico
> > del caso en mostrar iconitos etc no es buena medida del rendimiento del
> > sistema de archivos, recuerdese que Windows usa la "genial" idea de que la
> > "extension" indica que es lo que el archivo contiene... Unix debe mirar
> > dentro, no basta el nombre. Y si la cascara grafica del caso es torpe,
> > demas la mayor parte de la demora es culpa de ella (bueno, incluso en caso
> > que no lo sea).
> ...recién iniciado, entro a mi sesion en kde (bien pesado, debe haber botado 
> varias cosas de la RAM), abro un terminal y escribo: ls /usr/bin
> 1 mississippi 2 mississippi 3 mississippi 4 mississippi 5 mississippi y 
> aparece el resultado. 
> 
> time dice 
> real    0m3.892s
> user    0m0.028s
> sys     0m0.072s
> 
> ovbiamente la segunda vez es casi instantáneo:
> real    0m0.155s
> user    0m0.040s
> sys     0m0.036s
> 
> /usr/bin 1938 elementos
> y
> /usr/lib/ 1661 elementos.
> asi que supongo que cargar un programa por primera vez debe demorar en el peor 
> caso 10 mississippis (1 por buscar el ejecutable en /usr/bin y otra por 
> enlazar la primera lib.so buscandola en /usr/lib...(y a esto agregar que 
> muchas son enlaces simbolicos...))

La mayor parte del tiempo estará dado en escribir en pantalla lo que
lee. Influye si usas tipografías con antialias, soporte UTF-8, algún
chiche (transparencia), etc.

> > > 	2.- ya se que al usar mas cĆ³digo compartido se puede ahorrar en uso
> > > memoria (pĆ”ginas de cĆ³digo), pero para programas grandes como firefox
> > > Āæno convendrĆ­a que sean mas monolĆ­ticos y usen menos bibliotecas
> > > compartidas?
> >
> > Si Firefox usa las mismas bibliotecas que otros programas graficos que usas
> > junto con el, te conviene que sean compartidas (== menos uso neto de RAM,
> > menos datos que cargar del disco, ...).
> 
> toda la razón... en realidad son esos programas los que tienen bibliotecas 
> propias que son poco usadas por otros programas

Para ver que archivos abre, basta aplicar strace.  No sólo bibliotecas
deben cargarse.

Por ejemplo, sólo cargar y cerrar OpenOffice (no en frío):

$ strace -T -f -c -e trace=file oowriter2
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 28.89    0.040532           9      4330      3118 access
 27.77    0.038957          16      2375      1186 open
 21.63    0.030350          10      3000        37 lstat64
 11.44    0.016049          11      1465       801 stat64
  4.70    0.006588           6      1026           fstat64
  2.69    0.003772         377        10           execve
  1.35    0.001893         126        15           unlink
  0.79    0.001107          12        93           getcwd
  0.43    0.000603          46        13        12 mkdir
  0.19    0.000266          33         8           readlink
  0.06    0.000087          87         1           rmdir
  0.05    0.000071          18         4           chdir
  0.01    0.000012          12         1           utime
  0.01    0.000008           1         8           rename
------ ----------- ----------- --------- --------- ----------------
100.00    0.140295                 12349      5154 total

Idem con firefox:

$ strace -T -f -c -e trace=file firefox
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 44.57    0.020832          22       958       374 open
 25.69    0.012005          19       644       463 access
 16.39    0.007659          17       456        61 stat64
  7.92    0.003702           6       592           fstat64
  1.60    0.000749         375         2           execve
  0.99    0.000465         155         3           rename
  0.98    0.000459         153         3           unlink
  0.75    0.000351          12        29         4 lstat64
  0.38    0.000178         178         1           chmod
  0.38    0.000177         177         1           symlink
  0.25    0.000117          23         5         5 mkdir
  0.06    0.000027          27         1           utime
  0.04    0.000017          17         1           getcwd
------ ----------- ----------- --------- --------- ----------------
100.00    0.046738                  2696       907 total

Así no es necesario especular cuantos archivos abre y cuantos
no :-)

-- 
Germán Poó-Caamaño
http://www.ubiobio.cl/~gpoo/
Concepción - Chile



Más información sobre la lista de distribución Linux