lunes, 13 de septiembre de 2010

FreeBSD 8.x: Modulo coretemp

Tengo problemas con un servidor supermicro 1U que tiene un Xeon dual core CPU: Intel(R) Xeon(R) CPU E3110 @ 3.00GHz (2999.68-MHz K8-class CPU).

Este servidor tiene la funcion de spam filter. Sus uptimes no han sido revasados:

bsdsar
Time % User % Sys % Nice % Intrpt % Idle
00:00 0 0 0 0 100
01:00 0 0 0 0 100
02:00 0 0 0 0 100
03:00 0 0 0 0 100
04:00 0 0 0 0 100
05:00 0 0 0 0 100
06:00 0 1 0 0 99
07:00 0 0 0 0 100
08:00 0 0 0 0 100
08:45 0 0 0 0 100
08:50 0 0 0 0 100
08:55 0 0 0 0 100
09:00 0 0 0 0 100
09:45 0 0 0 0 100
09:50 0 0 0 0 100
09:55 0 0 0 0 100
10:00 0 0 0 0 100
10:45 0 0 0 0 100
10:50 0 0 0 0 100
10:55 0 0 0 0 100
11:00 0 0 0 0 100
11:45 0 0 0 0 100
11:50 0 0 0 0 100
11:55 0 0 0 0 100
12:00 0 0 0 0 100
12:45 0 0 0 0 100
12:50 0 0 0 0 100
12:55 0 0 0 0 100
13:00 0 0 0 0 99
13:45 3 4 0 0 94
13:50 3 3 0 0 94
13:55 2 4 0 0 94
14:00 3 3 0 0 94

Por alguna razon turbia se me congela cada 2 o 3 semanas, no es nuevo pero quiero pensar que algo hace que se caliente y le pase esto, la desventaja es que no lo tengo en mi oficina, sino en las oficinas centrales que solo visito 1 vez a la semana.

Solo una vez me toco estar presente cuando se congelo, cuando entre a el cuarto de servidores los abanicos estaban trabajando al maximo parecia que iba a despejar, el teclado no respondia, asi que no tuve otra manera mas sana de resetearlo que de botonazo, lo que nunca se debe hacer.

Bien en cuanto lo hice, los abanicos empezaron a trabajar de manera normal, se reinicio el servidor y el raid-1 no sufrio dano alguno.

Los servidores cada vez son mas inteligentes y tienen mas electronica integrada, ellos mismos balancean la velocidad de los abanicos de acuerdo a la temperatura del nucleo, la gran desventaja que siempre hacen las aplicaciones encargadas o para windows o para linux redhat.

Los otros como el caso de FreeBSD no tiene esas comodidades, por ello los programadores tienen que hacer utilerias que hagan estas tareas.

Para esto alguien en el foro de freebsd comento del modulo coretemp:

man coretemp
CORETEMP(4) FreeBSD Kernel Interfaces Manual CORETEMP(4)

NAME
coretemp -- device driver for Intel Core on-die digital thermal sensor

SYNOPSIS
To compile this driver into the kernel, place the following line in your
kernel configuration file:

device coretemp

Alternatively, to load the driver as a module at boot time, place the
following line in loader.conf(5):

coretemp_load="YES"

DESCRIPTION
The coretemp driver provides support for the on-die digital thermal sen-
sor present in Intel Core and newer CPUs.

The coretemp driver reports each core's temperature through a sysctl node
in the corresponding CPU device's sysctl tree, named
dev.cpu.%d.temperature.

SEE ALSO
sysctl(8)

HISTORY
The coretemp driver first appeared in FreeBSD 7.0.

AUTHORS
The coretemp driver was written by Rui Paulo as part
of a Google Summer of Code project. This manual page was written by
Dag-Erling Smorgrav .

FreeBSD 8.0 August 23, 2007 FreeBSD 8.0

Preguntando me comentaron que aplica a los chips nuevos, en mi caso parece que Xeon es parte de ellos, aqui un ejemplo de mi salida:

sysctl -a | grep temperature
dev.cpu.0.temperature: 41.0C
dev.cpu.1.temperature: 40.0C

Ahora necesito un script que me mande cada 5 minutos un correo con la temperatura actual, asi podre saber si en realidad la temperatura del cpu este llegando a un nivel que provoca esto, tengo que dar con el problema, este es el script con cron:

#crontab -e
*/5 * * * * /sbin/sysctl -a | grep temperature | mail -s "Temperatura Actual" root

Esto es lo que me llega:

Subject: Temperatura Actual

dev.cpu.0.temperature: 41.0C
dev.cpu.1.temperature: 40.0C

No soy un experto en scripts, pero ya vere como hacerle para que cuando llegue a cierta temperatura me mande un aviso de "Peligro" y prevenir que se congele el equipo.

Para activar este modulo tenemos 2 opciones o lo incluimos en el kernel o lo cargamos como modulo, yo prefiero lo 1ro.

device coretemp

Hacen todos los pasos para compilar el kernel, instalarlo y arrancarlo.

O si prefieren lo segundo, abren el /boot/loader.conf y agregan esta linea:

coretemp_load="YES"

Esto es para que cada que reinicien se cargue el modulo, si lo quieren cargar en tiempo real ya saben besederos:

kldload coretemp

Listo.

Si existen mas maneras de llevar a cabo esto me avisan!!!

No hay comentarios: