Dos procesos que realizan cálculos extensos. Quiero que uno obtenga ~100 % del tiempo del procesador. ¿Cómo?

Dos procesos que realizan cálculos extensos. Quiero que uno obtenga ~100 % del tiempo del procesador. ¿Cómo?

Estoy ejecutando un servidor básico de Ubuntu con dos procesos: - proceso 1: realizo cálculos del 100% del tiempo de actividad y que uso para compartir la potencia informática con la comunidad (está ejecutando @ prio 19) - proceso 2: realizo cálculos durante 5 a 10 minutos, desde de vez en cuando, que uso para calcular por mí (está ejecutando @prio -19)

Quiero que el proceso 2 se proporcione con el 100% de la potencia informática (el proceso 1 en ese momento debería acercarse al 0% de la CPU).

Intenté usar nice/renice y el proceso 1 se da con el prio 19 (el más bajo posible) y el proceso 2 se da con el prio -19 (el más alto posible). Pero lo mejor que obtengo es el 50% de la CPU para el proceso 1 y el 50% de la CPU para el proceso 2 (verificado con htop), lo que me sorprendió un poco...

Ambos procesos son multiproceso y, cuando se ejecutan solos, consumen el 100% de todos los núcleos de la CPU. Ningún otro recurso (E/S, memoria, ancho de banda, ...) puede influir en este uso.

No quiero detener/iniciar manualmente ningún proceso cuando necesito potencia informática (ambos procesos deben estar ejecutándose todo el tiempo); El 100% de la CPU para el proceso 2 debe entregarse automáticamente.

¿Qué debo hacer para lograr mi objetivo? Gracias.

Respuesta1

Gracias a @ubfan1 he explorado diferentes estrategias de programación y este es el mejor resultado que he logrado hasta ahora:

  • El proceso 1 se está ejecutando con la política SCHED_BATCH.

  • El proceso 2 se está ejecutando con la política SCHED_RR.

resultados: cuando ambos procesos se ejecutan simultáneamente: - el proceso 1 se da con ca. 5% de la CPU - el proceso 2 se da con ca. 95% de la CPU

y cuando solo el proceso 1 está realizando cálculos (el proceso 2 está esperando mi entrada para iniciar los cálculos), el proceso 1 está usando el 100% de la CPU

Si a alguien le interesa más, lea esto:

  1. http://manpages.ubuntu.com/manpages/xenial/man8/schedtool.8.html
  2. http://man7.org/linux/man-pages/man7/sched.7.html

información relacionada