Kernel Linux y renice/ionice

Aldrin Martoq amartoq en dcc.uchile.cl
Lun Ene 31 23:28:42 CLST 2011


On Jan 31, 2011, at 1:20 PM, Electrolinux wrote:
> 2011/1/31 Eduardo Silva <edsiper en gmail.com>
>> hola estimado,
>> Respuesta: man renice , en el manpage aparece el sgte ejemplo:
>>  renice +1 987 -u daemon root -p 32 [...]
> Gracias estimado, pero ya había visto el man y este ejemplo es sobre dos
> procesos en ejecución y su modificación en consola, el ejemplo que busco es
> desde un trozo de código en C y manipular o reasignar las prioridades,


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".

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

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.



>  pero
> quien lo logra es el root y no puedo dar esos privilegios a la aplicación.
> Sigo en la busqueda.... gracias de todas maneras.

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).




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







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