¿Cómo utilizar de manera más eficiente los recursos de la CPU en Windows 7? [cerrado]

0

Hardware: Lenovo T420s con procesador i7 y 8 GB de RAM, 64 bits

¿Cómo puedo configurar mi computadora para maximizar / optimizar la asignación de recursos a un programa específico?

Me gustaría hacer que Dragon Naturally Speaking funcione lo más rápido posible, pero también poder hacer lo mismo para, por ejemplo, R, ArcGIS o MySQL.

Abe
fuente
¿Por qué crees que ya no estaría haciendo esto? Si hubiera un botón "ir más rápido", aparecería en la posición de encendido.
David Schwartz
@David, ¿por qué haría esta suposición? Hay muchas razones por las que un proceso podría no ejecutarse al máximo, y cuando miro el monitor del sistema, el proceso se ejecuta con CPU = 25%
Abe
@Abe: Probablemente sea porque tienes un sistema de cuatro núcleos (o doble núcleo con HT) y el programa solo está cargando un solo hilo.
David Schwartz
@Synetech: ¿Por qué sospecharías eso? Incluso los programas que no le interesan se ejecutarán hasta su finalización (suponiendo que tengan una cantidad fija de trabajo que hacer), por lo que aún necesitarán al menos la misma cantidad de CPU sin importar cómo ajuste las cosas. Pero obligar al sistema a reproducir favoritos lo hace menos eficiente.
David Schwartz
Hay un botón ir más rápido. En el Administrador de tareas, ponga en marcha la prioridad del proceso (proceso de clic derecho> prioridad).
SecurityMatt

Respuestas:

2
  • Puedes hacerlo manualmente:
    1. Abra el Administrador de tareas ( Ctrl+Shift+Escape)
    2. Haga clic con el botón derecho en el programa en la pestaña Aplicaciones y seleccione Ir al proceso
    3. Haga clic con el botón derecho en el proceso en los Procesos , seleccione Establecer prioridad y elija "Por encima de lo normal" o "Alto" (¡no elija "Tiempo real" a menos que realmente sepa lo que está haciendo!)
    4. Haga clic derecho en el proceso nuevamente y seleccione Establecer afinidad y asegúrese de que todas las casillas de verificación de la CPU estén marcadas (este es el valor predeterminado)

  • Si desea hacerlo automáticamente, puede crear un script:
    1. Cree un archivo de texto llamado, por ejemplo mysql.bat:
      start /high "MySQL" "c:\mysql\mysqld.exe --options --blah"
    2. Luego cree un acceso directo a él, asegurándose de establecer el campo Ejecutar en la pestaña Acceso directo a "Minimizado".
Synetech
fuente
1
Tenga en cuenta que esto puede tener el reverso del efecto esperado. Esto dará a otras tareas menores tiempos de espera, lo que hará que se ejecuten de manera menos eficiente y necesiten más tiempo de CPU de lo que lo harían de otra manera. También es malo en las CPU multinúcleo porque la menor eficiencia de la memoria caché de otras tareas (debido a los segmentos más pequeños) significa un acceso más lento a la memoria para las tareas que le interesan. Es mejor dejar que el planificador ejecute todas las tareas de manera eficiente que impulsar algunas a expensas de otras. Si otra tarea necesita un poco de CPU, es mejor hacer su trabajo de manera rápida y eficiente.
David Schwartz
@David, si lees toda la pregunta (en lugar de solo el título), verás que está preguntando por priorizar un par de programas específicos .
Synetech
Sí, lo entiendo. El problema es que esto hará que otros programas se ejecuten de manera menos eficiente, lo que hará que necesiten más CPU de lo que lo harían de otra manera. En realidad, esto hará que el programa preferido se ejecute peor por dos razones: los otros programas necesitarán ejecutarse más tiempo y probablemente se ejecutarán más tiempo. Los accesos a la memoria serán más lentos porque otros programas necesitarán rellenar cachés con más frecuencia. Ambos factores hacen que el programa con prioridad se ejecute más lentamente .
David Schwartz
Pero eso no fue lo que preguntó, preguntó cómo priorizar un programa. Este no es el lugar para darles una conferencia sobre la multitarea preventiva. Si usted fuera correcto en sus afirmaciones, entonces la capacidad de cambiar las prioridades para los procesos no existiría, y aún así, existe . ¿Por qué cree que muchos programas tienen una función incorporada para establecer prioridades? Algunos programas le permiten elegir ejecutarlo en alta prioridad para que los programas en segundo plano no lo ralenticen, mientras que otros le permiten elegir ejecutarlo en baja prioridad para evitar atascarse en otros programas.
Synetech
1
Preguntó cómo maximizar la asignación de la CPU a un programa específico. Elevar la prioridad es cómo se hace eso. No veo tu confusión. He respondido la pregunta que se presentó. Si cree que el problema es otra cosa, marque la pregunta para cerrarla y dígale a Abe que abra una nueva preguntando "por qué la CPU no funciona al 100%".
Synetech
2

Es probable que esto no sea posible y los intentos de hacerlo serán contraproducentes. Intentar forzar al sistema a reproducir favoritos lo hace menos eficiente. Los otros programas aún necesitarán al menos la misma cantidad de CPU que necesitan ahora, por lo que quedará la misma cantidad para los programas preferidos. Puede mejorar un poco la latencia para el programa preferido, pero a costa de más recargas de caché de los otros programas que lo ralentizan mientras se está ejecutando.

Básicamente, las personas que diseñaron su sistema operativo y su programador sabían lo que estaban haciendo. A menos que sepa algo importante que no conozcan sobre su uso específico, es mucho más probable que empeore las cosas mejor que mejor.

Cuando ve que un programa solo usa el 50% o el 25% de la CPU o un número par como ese, es casi siempre porque está cargando por completo todos los núcleos que es capaz de usar. Lograr que el programa use más núcleos generalmente requiere rediseñarlo.

Algunos programas específicos pueden ser ajustables para multi-core. Si el programa es uno de estos, y ese interruptor está apagado, encenderlo definitivamente puede ayudar. Pero la mayoría de estos programas detectan automáticamente máquinas de múltiples núcleos. Por lo tanto, generalmente no hay margen de mejora.

También puede causar catástrofes de rendimiento de esta manera. Solo pregúntale al equipo Mars Rover . Por ejemplo, imagine si el proceso que ha impulsado tiene dos hilos y el sistema tiene un núcleo. El primer subproceso está bloqueado en un recurso del sistema que actualmente tiene otro proceso. El segundo hilo puede progresar mucho. El primer subproceso se puede detener durante mucho tiempo porque el segundo subproceso puede privar al otro proceso de tal manera que no puede liberar el recurso del sistema.

Esto puede suceder incluso si el desarrollador del programa redujo específicamente la prioridad del segundo subproceso para intentar dar preferencia de CPU al primer subproceso porque estaba haciendo un trabajo importante. Los controles de prioridad de proceso estático que Windows le brinda son demasiado groseros. Esto sucederá , por ejemplo, en muchos accesos a archivos si tiene un escáner antivirus activo.

David Schwartz
fuente
pero los diseñadores sabían lo suficiente como para proporcionar la capacidad de establecer prioridades manualmente, y mis colegas y yo hacemos esto con frecuencia en nuestro servidor compartido usando torque. Hay momentos en que solo quiero que mi computadora arranque algo mientras estoy usando otra máquina
Abe
@Abe: Proporcionaron la capacidad tanto por razones heredadas, como para admitir casos en los que la latencia es más importante que el rendimiento, y en los casos en que la carga colocada por otras tareas no es fija. Si desea que su computadora arranque algo, simplemente déjelo girar. (De hecho, Microsoft advierte específicamente contra el cambio de prioridades de los procesos, entre otras razones, debido al grave riesgo de inversión de prioridades causada por la pelea por los recursos del sistema.)
David Schwartz
Explíquenos cómo se relaciona el Mars Rover con el kernel de Windows, ya que está usando un programador completamente diferente y, por lo tanto, ese párrafo no se cumple necesariamente para el kernel de Windows. No veo que Microsoft nos advierta por esa razón, y que el enlace de Wikipedia enumera soluciones que podrían (o no) haber sido implementadas en el kernel de Windows.
Tamara Wijsman
@TomWijsman: El punto es que cambiar las prioridades de la tarea puede tener serios efectos negativos y que tener todas sus tareas en la misma prioridad base elimina muchos modos de falla posibles. Cambiar de dos cosas que tienen la misma prioridad a tener diferentes prioridades es peligroso cuando ambos acceden a un recurso compartido (en este caso, el sistema GUI de Windows) de formas complejas.
David Schwartz
@DavidSchwartz: el sistema GUI de Windows se ejecuta con alta prioridad, solo la prioridad en tiempo real está por encima de eso. Los programas mencionados por el OP realmente no dependen de ningún otro recurso compartido ...
Tamara Wijsman