Linux kernel

El kernel de Linux no ha sido diseñado para cumplir restricciones en tiempo real, sin embargo hay algunas técnicas que pueden ayudar a ajustar el kernel al cumplimiento de ciertos plazos. Cuatro núcleos han sido evaluados (algunos disponibles aquí):

Las siguientes pruebas se realizarán con un kerneel vanilla compilado con la opción PREEMPT. Se hará uso del código de cylictests y también vamos a torturar al kernel con stress para obtener las latencias máximas.

Torturando el kernel

Para este propósito vamos a utilizar stress Linux command line tool.

Mientras se ejecuta el autopiloto y usando:

stress --cpu 8 --io 8 --vm 2 --vm-bytes 128M

Se puede observar que la carga del sistema es 17 aproximadamente:

root@beaglebone:~# uptime
 03:20:20 up 14 min,  3 users,  load average: 17.07, 7.86, 3.21

Vamos a revisar más profundamente los hilos y las operaciones de entrada y salida:

stress --cpu 64 --io 64 --vm 2 --vm-bytes 128M

Con ésto, el comando uptime devuelve:

root@beaglebone:~# uptime
 03:27:10 up 21 min,  3 users,  load average: 129.08, 81.93, 36.63

Ejecutando cyclictests

Ahora que hemos estresado el procesador se utilizará cyclictests para medir las latencias (us):

root@beaglebone:~# cyclictest -t1 -p 80 -n -i 10000 -l 10000
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 0.47 0.65 0.44 1/98 1312           

T: 0 ( 1307) P:80 I:10000 C:   3892 Min:     19 Act:   26 Avg:   67 Max:   13743

results matching ""

    No results matching ""