On Jan 31, 2011, at 1:20 PM, Electrolinux wrote:
> 2011/1/31 Eduardo Silva <edsi...@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/





Responder a