martes, 29 de abril de 2008

Script Bash Matador de Carga en un servidor

Hola,

Bueno, resulta que en un servidor de IRCD, hay veces que se quedan colgados algunos procesos, ocupando CPU% hasta que yo me conectaba manualmente y mataba el proceso.
No era la gran cosa porque esto solo pasaba una q otra vez... pero como los usuarios se aumentaron en ese servidor, pasa mas a menudo.
Por lo que hice un script muy basico, pero que se obtiene buenos resultados.

Antes que nada hay que crear un directorio, hay que estar logueado como (root):

# mkdir /root/killcarga

# cd /root/killcarga

# nano killcarga

Y pegamos lo siguiente:

########################

#!/bin/bash

# Script en Bash para matar procesos con mucha carga de cpu
# Hecho por Emmanuel_Ar - Gulcar

cd /root/killcarga
top > top
cat top | grep K > top2

pdban=$(head -1 top2 | awk '{print $1}')
carga=$(head -1 top2 | awk '{print $10}' | cut -f1 -d '.')
pusuario=$(head -1 top2 | awk '{print $2}')

# Yo le puse q cuando pase de %30 CPU lo banee
if [ $carga -ge 30 ]; then
kill -9 $pdban
fecha=$(date)
echo "$fecha PID: $pdban % $carga usuario: $pusuario" >> log
fi

rm -fr top top2

#################

Guardamos con: ctrl +o
Salimos con: ctrl +x

Damos permiso de ejecucion:

chmod +x killcarga

Y ejecutamos:

./killcarga

########################

Tambien pueden programarlo con crontab para q se ejecute automaticamente con:

# crontab -e

Y pegamos:

*/10 * * * * /root/killcarga/killcarga >/dev/null 2>&1

Guardamos y salimos.

Con esto el servidor, cada 10 minutos se fijaria si algun proceso pasa de %30 de uso del CPU, de ser asi, lo mata.

#######################

Tambien vale comentar que este script funciona en freebsd y las variables del awk pueden cambiar segun el top de cada distribucion. Ya eso lo acomodan segun el top

[root@shells:~/killcarga] uname -a
FreeBSD shells.ircdshells.com.ar 4.11-RELEASE-p13 FreeBSD 4.11-RELEASE-p13 #0: Thu Oct 13 01:32:49 GMT 2005 root@shells.ircdshells.com.ar:/usr/obj/usr/src/sys/ i386


Bueno... si quieren cambiar, agregar lineas, comentar, etc realicen un comentario

Saludos,

lunes, 21 de abril de 2008

Instalar Driver Oficial de Ati en Debian Etch

Probada en una Ati Radeon Xpress 200 (integrada en la placa madre)

NOTA: Debes tener configurados los repositorios "non-free"

Comprobamos los Repositorios: IMPORTANTE
# cat /etc/apt/sources.list

# Disco de Instalación
# deb cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-1 (20061110)]/ etch contrib main

# Repositorio de paquetes en un servidor Francés
deb http://ftp.fr.debian.org/debian/ etch main contrib non-free

# Repositorio de paquetes en un servidor Español
deb http://ftp.caliu.info/debian/ etch main contrib non-free

deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free

1. Instalar los paquetes siguientes en una terminal (como usuario root):
# su -
password:

# aptitude install fglrx-control fglrx-driver fglrx-kernel-src module-assistant mesa-utils build-essential

2. Descargamos las fuentes del kernel
# aptitude install linux-source-2.6.18

3. Compilamos el módulo fglrx:
# cd /usr/src
# module-assistant prepare
Getting source for kernel version: 2.6.18-3-686
Kernel headers available in /lib/modules/2.6.18-3-686/build
apt-get install build-essential
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
build-essential ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

Done!

# module-assistant a-i fglrx
Updated infos about 1 packages
Getting source for kernel version: 2.6.18-3-686
Kernel headers available in /lib/modules/2.6.18-3-686/build
apt-get install build-essential
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
build-essential ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

Done!
unpack
Extracting the package tarball, /usr/src/fglrx.tar.bz2, please wait...
"/usr/share/modass/packages/fglrx-kernel-src" build KVERS=2.6.18-3-686 KSRC=/lib/modules/2.6.18-3-686/build KDREV=2.6.18-7 kdist_image
Done with /usr/src/fglrx-kernel-2.6.18-3-686_8.28.8-4+2.6.18-7_i386.deb .
dpkg -Ei /usr/src/fglrx-kernel-2.6.18-3-686_8.28.8-4+2.6.18-7_i386.deb
Seleccionando el paquete fglrx-kernel-2.6.18-3-686 previamente no seleccionado.
(Leyendo la base de datos ...
99860 ficheros y directorios instalados actualmente.)
Desempaquetando fglrx-kernel-2.6.18-3-686 (de .../fglrx-kernel-2.6.18-3-686_8.28.8-4+2.6.18-7_i386.deb) ...
Configurando fglrx-kernel-2.6.18-3-686 (8.28.8-4+2.6.18-7) ...

4. Modificamos el fichero /etc/X11/xorg.conf
# nano /etc/X11/xorg.conf

Yo tuve que añadir en la sección "Modules": Load "fglrx"

Section "Module"
Load "i2c"
Load "bitmap"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "vbe"
Load "fglrx"
EndSection

Y modificar y añadir en la sección "Device":
Driver "fglrx"
Option "VideoOverlay" "on"
Option "OpenGLOverlay" "off"

Section "Device"
Identifier "ATI Technologies Inc Radeon R350 [Radeon 9800 Pro]"
Driver "fglrx"
Option "VideoOverlay" "on"
Option "OpenGLOverlay" "off"
BusID "PCI:1:0:0"
EndSection

Guardamos el fichero, salimos y ejecutamos los comandos:
# aticonfig --initial
Found fglrx primary device section
Nothing to do, terminating.

# aticonfig --overlay-type=Xv
Warning: Option 'VideoOverlay' doesn't affect running session.
Warning: Option 'OpenGLOverlay' doesn't affect running session.
Using /etc/X11/xorg.conf

5.
Cerramos la cesión de KDE o GNOME, accedemos a una consola de texto mediante la combinación de telcas CTRL+ALT+F1 y paramos el servicio kdm o gdm según corresponda, cargamos los drivers y volvemos a iniciar kdm o gdm.

login: root
password:

# /etc/init.d/kdm stop (si utilizas Gnome: /etc/init.d/gdm stop)
# modprobe -r radeon
[drm] Module unloaded

# modprobe fglrx
[fglrx] Maximum main memory to use for locked dma buffer 930 MBytes
[fglrx] module loaded - fglrx 8.28.8 [Aug 17 2006] on minor 0

# /etc/init.d/kdm start (si utilizas Gnome: /etc/init.d/gdm start)

6. Para verificar la instalación:

$ glxinfo | grep rendering (Hay que ejecutar éste comando como usuario que ha iniciado la sesión gráfica)
direct rendering: Yes

INFORMACIÓN OTROS COMANDOS:
$ glxgears -printfps
1235 frames in 5.0 seconds = 246.903 FPS
1250 frames in 5.0 seconds = 249.992 FPS
1250 frames in 5.0 seconds = 249.992 FPS
1250 frames in 5.0 seconds = 249.992 FPS
1258 frames in 5.0 seconds = 251.592 FPS

$ glxdemo

$ glxheads
glxheads: exercise multiple GLX connections (any key = exit)
Usage:
glxheads xdisplayname ...
Example:
glxheads :0 mars:0 venus:1
Name: :0
Display: 0x805e008
Window: 0x2a00002
Context: 0x8066fe8
GL_VERSION: 2.0.6011 (8.28.8)
GL_VENDOR: ATI Technologies Inc.
GL_RENDERER: RADEON 9800 Pro Generic

$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: RADEON 9800 Pro Generic
OpenGL version string: 2.0.6011 (8.28.8)

$ fgl_glxgears
Using GLX_SGIX_pbuffer
4266 frames in 5.0 seconds = 853.200 FPS
4331 frames in 5.0 seconds = 866.200 FPS
4310 frames in 5.0 seconds = 862.000 FPS
4342 frames in 5.0 seconds = 868.400 FPS

ACTUALIZACION DE KERNEL

En el caso que actualizemos el kernel, hay que volver a parchar el nuevo kernel:

- Instalamos las fuentes del Kernel:
# aptitude install linux-source-2.6.18

- Compilamos el módulo fglrx para el nuevo Kernel:
# cd /usr/src
# module-assistant prepare
# module-assistant a-i fglrx
# aticonfig --initial
# aticonfig --overlay-type=Xv

Reiniciamos la sesion:

Ctrl + Alt + Backspace

Y ya tendria que dar, una vez logueado (como usuario):

$ glxinfo | grep rendering (Hay que ejecutar éste comando como usuario que ha iniciado la sesión gráfica)
direct rendering: Yes

Fuente: http://debiantotal.blogspot.com/2007/02/instalar-driver-ati.html

Saludos,

Emmanuel Arreguez