Una sobrecarga de la ejecución del programa en Linux vs sin metal incorporado

5

Digamos que tengo algunos ARM Cortex-A de varios núcleos.

Ahora tengo un Linux, con el parche RT_PREEMPT (llamado Linux en tiempo real ). Ejecuto procesos con afinidad establecida en un núcleo y prioridad alta (por encima de 50).

Gracias al parche en tiempo real, ni siquiera el programador del kernel puede anticiparse a mi proceso, y gracias a la afinidad puede ejecutarse todo el tiempo en un solo núcleo (y sistema operativo en otros).

En tales condiciones, ¿hay alguna diferencia (es decir, en gastos generales) de ejecutar dicho código en Linux vs bare-metal?
¿El rendimiento será el mismo? Si no, ¿por qué?

    
pregunta zupazt3

1 respuesta

3

La sobrecarga no se relaciona con la preferencia. La preferencia detiene su proceso y ejecuta otro proceso. Si desactivas eso por ejemplo. Un núcleo de CPU, tiene el núcleo de CPU solo para su proceso.

Sin embargo, hay una sobrecarga si realiza la E / S a través de las funciones de E / S de Linux, por ejemplo. Controlando las líneas de E / S directamente a través de su proceso. Pero para cualquier E / S razonablemente complicada, tuvo que implementar una función con una sobrecarga similar y puede asumir que la gente de Linux es mejor que usted en eso: más experiencia y más casos de prueba.

Por lo tanto, la única forma de ganar la carrera aérea es con funciones de E / S muy básicas (p. ej., golpear un protocolo exótico y rápido) implementándose en "su kernel" en lugar de ejecutarlo a través de las distintas capas de abstracción del Linux GPIO y haga lo mismo en "su proceso de espacio de usuario".

    
respondido por el Janka

Lea otras preguntas en las etiquetas