Kernel Linux y renice/ionice

Ricardo Albarracin B. ralbab en gmail.com
Mar Feb 1 09:15:22 CLST 2011


El Mon, 31 Jan 2011 23:28:42 -0300
Aldrin Martoq <amartoq en dcc.uchile.cl> escribió:

> Mejor cuéntanos qué pretendes hacer...
> 
> Respecto de renice y nice; lo único que hacen es otorgar o quitar
> tiempo de CPU, dándole mas o menos tiempo a los procesos según su
> "prioridad".

Precisamente eso.... reasignar más tiempo de CPU a algunos procesos
críticos para evitar la perdida de datos en capturas de hasta 50KBPS a
través de una USB, hay un buffer que se llena y hay datos que se
pierden. La recoleción de datos llega a varios millones imagina esa
taza en 5 a 10 minutos.

> Ahora, la convención es que esto NO lo maneje el propio programa,
> sino que lo hace el administrador del sistema. Por ejemplo, está
> corriendo un proceso de cálculos diarios (PID 1044) y se come toda la
> CPU, lo que baja el rendimiento de los procesos que están atendiendo
> peticiones en línea. Entonces, el administrador tiene 2 opciones :
> - al iniciar el proceso de cálculos diarios, indicarle al sistema que
> no ocupe mucha cpu: $ nice 20 /ruta/al/proceso/calculos_diarios
> - bajar la prioridad mientras se ejecuta
> $ renice 20 1044

El caso mío es distinto al que planteas, ya que uso un sistema de
captura de datos de alto rendimiento y una opción es ir a un sistema
operativo de tiempo real, pero antes es agotar todos los recursos antes
de llegar a ese extremo, el problema lo resuelvo con máquinas más
potentes pero no es la idea, el tema es con máquinas por ejemplo como
las Atom.

> Por convención, estas son decisiones en el momento de operación del
> sistema, NO son decisiones que toma el mismo programa. Misma historia
> para el ionice (el cual desconocía). Si vas a mover esta lógica
> dentro de tu programa, tendrá que ser algo varias veces MEJOR y tal
> vez muy INTELIGENTE a lo que se estila. Bueno, si no nos cuentas en
> qué andas, no lo sabremos.

Lo que indique...

> Si miras el man, en SEE_ALSO está la referencia a getpriority(2) y
> setpriority(2). Si lees esos man, veras que basta con añadir la
> "capability" CAP_SYS_NICE a tu programa (lo cual hasta donde sé
> también se estila dejarlo fuera de tu código, al momento de
> operación).

Bueno, gracias veré esos detalles.

> Aldrin Martoq
> http://aldrin.martoq.cl/

-- 
Atentamente.
+-----------------------+-------------------------+
| Ricardo Albarracin B. | email: ralbab en gmail.com |
+-----------------------+-------------------------+


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