¿Es necesario un kernel de 1000 HZ Linux si tengo un temporizador de alta resolución y sin tic?

13

Estoy tratando de mejorar el rendimiento en mi servidor. Tengo algunos procesos que necesitan poca fluctuación (menos de 10 ms de variación).

Tengo un promedio de carga de 4 como máximo en un i7-920 (4 núcleos físicos, 8 con HT). Hay alrededor de 10 procesos que van del 40% al 90% de un modo de usuario principal. El uso del sistema es del 3% en total. El uso total de la CPU es 80% máximo.

¿Establecer el kernel de 100hz a 1000hz mejorará el jitter si los temporizadores de alta resolución y sin tic ya están configurados?

Esta página parece indicar que todavía hace algo. https://lkml.org/lkml/2009/4/28/401

¿Qué tal cambiar de voluntario (PREEMPT_VOLUNTARY) a preferencial (PREEMPT)?

Beto
fuente
Detalles de distribución del sistema operativo / versión?
ewwhite
Ubuntu 11.10 64bit servidor Linux 3.3 kernel.
Bob
Tiene mucha carga de modo de usuario; El tiempo del sistema es relativamente insignificante. No sugeriría bailar alrededor de los granos de atún allí. ¿O la obtención de una programación en tiempo real es lo que espera lograr?
yrk
Entonces, ¿está diciendo que si el uso del sistema es bajo, nada de esto hace una diferencia en la capacidad de respuesta?
Bob

Respuestas:

4

Estoy tratando de mejorar el rendimiento en mi servidor. Tengo algunos procesos que necesitan poca fluctuación (menos de 10 ms de variación).

Cualquier tiempo real no mejorará el rendimiento, de hecho, haría que todo el sistema funcione sin problemas pero un poco más lento. En otras palabras, es el rendimiento frente a la latencia. Si realmente es lo que necesita, entonces hay varias opciones:

  • Use 300 Hz o incluso 1KHz, PREEMPRE, y no use tickless
  • Use nice, schedtoolpara asignar prioridades / clases apropiadas de acuerdo a sus necesidades
  • Prueba RT o BFS
poige
fuente
¿Qué hay de malo en usar tickless?
Bob
1
@Bob, es bueno para ahorrar energía, pero en caso de que le importe la latencia, se recomienda que esté apagado, por ejemplo, ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt
poige
3

Si el jitter bajo es importante para usted, sí, es posible que desee usar 1000hz y PREEMPT.

Si esos procesos son realmente sensibles al tiempo, probablemente necesitará más parches / núcleos orientados en tiempo real, o al menos algunos parámetros de programación a nivel de proceso, como rtprio.

Los usos típicos son los servidores de audio; consulte, por ejemplo, los consejos de jackaudio

koollman
fuente
3

1) No utilice tickless, sigue siendo altamente experimental y no se recomienda a nadie más que a los desarrolladores que trabajan en él, también está destinado a ayudar a ahorrar energía.

2) Se supone que el sistema totalmente preemible aumenta la capacidad de respuesta del escritorio, mientras que la prioridad voluntaria es para uso general (combinación de capacidad de respuesta y rendimiento). Si su servidor tiene SMP (múltiples núcleos), probablemente debería optar por no preventivo, ya que la mayoría del trabajo se ejecutará en sus núcleos y sin interrupciones, lo que generalmente 1) toma tiempo 2) caché de basura

3) 1000Hz es un valor de escritorio que introduce gastos generales, pero permite, por ejemplo, jugar juegos y otras cosas. 300 hz es el valor que se recomienda para el video (por lo que las cosas pueden reprogramarse y aún no perderá fotogramas), mientras que 100Hz proporciona el mejor rendimiento (aunque no está orientado a cosas de red de baja latencia).

Si desea ir tan estable como sea posible (sin usar parches RT), debe ir: tics periódicos (estabilidad) frecuencia de temporizador no preconcebible (estabilidad) (hasta usted, 1000 para la mejor capacidad de respuesta y bajas frecuencias, 100 para mejor rendimiento pero resolución de 10 ms en el temporizador, por ejemplo, las cosas se ejecutarán al menos 10 ms)

Espero que esto ayude un poco.

Pruzinat
fuente