[LUG.ro] Los 497 días del uptime

Sebastián D. Criado lugro@lugro.org.ar
Tue, 26 Oct 2004 14:56:15 -0300


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Les cuento un caso curioso.

Si tienen la dicha de que un server este uptime mas de 497 días, con el
kernel 2.4 (supuestamente era un error conocido de la serie 2.2)van a
tener el siguiente problema, se pondrá a 0 de nuevo.
volvera a empezar.

Es un error de overflow de números enteros de 32 bits que sucede en
muchos Unix y en las versiones 2.4 del kernel Linux también.

Es debido a que el timer del sistema se actualiza cada 10 ms. Se le
pueden pasar parametros al kernel para cambiarlo

2^32 = 4294967296.

4294967296 / 100 = 42949672,96 seg 
que es igual a 715827,882666667 min
que es igual a 11930,464711111 horas 
que es igual a 497,102696296 dias 
o en lectura humana 497 días, 2 horas, 27 minutos y 53 segundos

Esto estaba definido en los headers del kernel en 

include/linux/kernel.h:       long uptime;     /* Seconds since boot */

Supuestamente en la serie 2.4 estaba un long integer, pero en la versión
2.4.18 sigue estando como long, según pude verificar.

Se los comento por que me encontré con un servidor que le doy
seguimiento, esperando que llegara a los 500 días y vi que nada, paso de
nuevo a 0.
- -- 

Sebastián D. Criado - scriado{en}ciudad.com.ar
L.U.G.R.o - http://www.lugro.org.ar
GNU/Linux Registered User # 146768
- -------------------------------------------------------------------
"Si el Universo fuera un programa estaría hecho en C, y correría sobre
un sistema UNIX"
                                                   Anónimo.

			
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBfo+/8hmHQ8ZCg0IRAjNEAKCzqrqHYw3sTMevi2/20mLBJodPggCgt0ZU
1i3hpNHfvSN1tEQecMML3Hc=
=a6jG
-----END PGP SIGNATURE-----