Comprensión renice
Estoy tratando de dar a una aplicación vinculada a la CPU la prioridad de programación más baja conrenice 19
(Linux 3.11). Sin embargo, no parece funcionar como se esperaba o tengo un problema de comprensión.
Permítanme describir dos formas en que lo he intentado. Esperaba que de ambas maneras obtendría los mismos resultados, pero no lo hago. Considera la aplicaciónloop
ser un circuito ocupado:int main() { for(;;) ; return 0; }
.
./loop &
tantas veces como CPU (por ejemplo, tengo 4 CPU).corrió otra instancia deloop
y lo reniced a 19El resultado fue el esperado. Los no renicadosloop
las instancias tienen casi el 100% de CPU cada una, y la instancia reniced tiene aproximadamente el 1%.
./loop &
tantas veces como las CPU.Terminal 2: ejecutó otra instancia deloop
y renice a 19El resultado no fue el esperado. losloop
la instancia iniciada en la Terminal 2 tenía 100% (aunque con amabilidad 19), mientras que laloop
Las instancias en la Terminal 1 compartieron el resto de los recursos.
¿Por qué el experimento 2 no se comporta como el experimento 1?