January 2010
M T W T F S S
« Dec   Aug »
 123
45678910
11121314151617
18192021222324
25262728293031
  • Usar RSS con Twitter 17/08/2011
      Tan sencillo como añadir una entrada tal como está, sustituyendo USUARIO_Twitter  por el usuario que queramos: http://search.twitter.com/search.atom?q=from:USUARIO_Twitter     […]
    admin
  • Recuperar sesión de X via VNC 21/01/2010
    En alguna ocasión puede que nos interese poder conectarnos via VNC a una sesión de X ya inicia, la cual no tiene un servido VNC asociado. La solución es así de sencilla: 1.- #apt-get install x11vnc 2.- Nos logeamos con el usuario que queremos recuperar la sesión X via ssh/telner y establecemos una contraseña del VNC $ x11vnc -storepasswd 3.- […]
    admin
  • Cambio firmware en la fonera 19/01/2010
    Puede darse el caso, que el router no funcione bien, o simplemente se haya quedado en un estado que no sea posible utilizarlo.La solución consiste en cambiar el firmare por uno publico ( dd-wrt) A continuación, os mostaré un esquema sencillo de poder hacerlo. Lo primero que tendremos que hacer es conectar por ssh al dispositivo.Como podeis […]
    admin
  • Funcionamiento de OOM_Killer 05/01/2010
    La mayoría de los kernel precompilados que vienen en las distintas distribuciones de Linux, viene habilitada la función de Magic SysRq, con ello podremos ejecutar distintas acciones cuando se requiera. Una de ellas, consiste en matar uno de los procesos actuales, con la siguiente secuencia de teclas: ALT+ Pet Sis + F El algoritmo […]
    admin
  • Incrementar tiempo del cache ARP en Windows 04/01/2010
    Por defecto, Windows XP asigna un tiempo de vida para cada entrada en el cache ARP de 2 minutos (120 sg) Para la mayoría de las situaciones, será más que suficiente, en el caso que estemos interesados en cambiarlas, tedremos que cambiar las entradas al registro, localizadas en:  HKLM\CurrentControlSet\Service\Tcpip\Parameters , las siguientes entradas DWORD: […]
    admin
  • Reset switch HP 2650 29/12/2009
    Si se desea hacer un reset hardware a un switch HP 2650: 1.- Pulsar botón RESET y CLEAR a la vez 2.- Soltar el botón RESET 3.- Una vez que veamos que el led de Self Test se ilumina, soltamos el botón de CLEAR PD: Este switch no tiene IP de gestión por defecto. […]
    admin
  • Analizador de tráfico: Tcpflow 22/12/2009
    Tcpflow es un analizador de tráfico bastante potente y sencillo de usar , que inicialmenet  ha sido desarrolado para unix, aunque existe un porting para Windows, La gran diferencia es que guarda los datos estructados en ficheros, con lo que permite una fácil interpretación de los mismos. Aquí teneis un pequeño ejemplo de lo que se puede […]
    admin
  • Incrementar velocidad en Lightroom 17/12/2009
    Una manera de mejorar el rendimiento global en Lightroom consiste en generar estáticamente todas las preview ( Rendering)  de las fotos de nuestro catálogo, con esto evitaremos que se realicen cada vez que cambiemos de fotografía. Para ello, nos iremos al módulo Libreria, Menu Libreria, Preview y marcamos la opción Render 1:1 Previews […]
    admin
  • Añadir una ruta estática en Windows 16/12/2009
    Tan sencillo como: route add 192.168.3.2 192.168.13.1 Con ello estaremos enrutando todo el tráfico hacia 192.168.3.2 a través del gateway 192.168.13.1 […]
    admin
  • Sincronizar PDA/telefónos basados en Windows Mobile/PPC con Ubuntu 9.10 04/12/2009
    Os paso una pequeña guia para poder sincronizar vuestro teléfono/PDA desde Linux/Ubunt 9.10 0.- Antes de nada, NO conectamos el dispositivo hasta que no acabemos de instalar todo el software ( Paso 4) 1.- Lo primero que haremos es instalar la aplicación synce: apt-get install synce-sync-engine synce-trayicon 2.- Si ya lo tenemos instalado, o por un descuido […]
    admin

Funcionamiento de OOM_Killer

La mayoría de los kernel precompilados que vienen en las distintas distribuciones de Linux, viene habilitada la función de Magic SysRq, con ello podremos ejecutar distintas acciones cuando se requiera.
Una de ellas, consiste en matar uno de los procesos actuales, con la siguiente secuencia de teclas: ALT+ Pet Sis + F

El algoritmo que sigue para la elección de dicho proceso está basado en la “puntuación” que obtenga, a mayor puntuación mayor es la posiblidad de ser uno de los procesos elegidos.Todo esto se puede configurar en:

/proc/PID/oom_adj y /proc/PID/oom_score

Si necesitamos que un proceso no pueda ser elegido por el OOM_killer, bastaría con asignarle el valor -17 ( Disable) , tal que así:

echo “-17″ > /proc/PID/oom_adj

Los valores que se pueden asignar van desde -17 a 16,

Por defecto, todos los procesos tienen un  valor de de ajuste de 0 Muchos os preguntareis para que sirve /proc/PID/oom_score, por cierto, este no se puede modificar.La respuesta es muy sencilla, el algoritmo de elección tiene en cuenta los valores de ajuste en /proc/PID/oom_adj, en función de este valor, y teniendo en cuenta factores como el tiempo que lleva funcionando, si accede al hardware, si es un proceso iniciado como root,  tiempo de CPU….el algoritmo da una puntua al proceso en cuestión.Para los más puristas, el algoritmo hace lo siguiente:

1.-  Score= Num_bytes_total  SQRT cpu_time

2.-  Score= Score SQRT run_time_seconds

3.-  Score= Score * 2

4.-  Si el owner del proceso es root -> Score = Score / 4

5.- Si el proceso está accediendo al hardware -> Score = Score / 4

6.- Si el proceso forma parte de una arquitectura SMP -> Score = Score / 8

7.-  Score= Score ^ oom_adj

Otro dato a tener en cuenta, es que si el kernel está compilado con soporte OOM, OOM_killler estará siempre operativo por lo que  cuando detecte algún proceso esté consumiendo demasiados recursos (puntuación alta), lo eliminará de manera automática.

Actualización: Si por curiosidad, quieres obtener las puntuaciones de  todos los procesos en ejecución:

#!/bin/bash

for file in /proc/[0-9]*/oom_score; do

pid=$(echo $file | sed ’s/^[^0-9]*\([0-9]\+\).*$/\1/’);

echo ”$(cat $file) $(ps h -p $pid -ocmd)”;

done | sort -n


Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>