![Utilización máxima de CPU limitada a 1/N de CPU para la MAYORÍA de aplicaciones multiproceso en cualquier sistema operativo Win: ¿POR QUÉ?](https://rvso.com/image/1645743/Utilizaci%C3%B3n%20m%C3%A1xima%20de%20CPU%20limitada%20a%201%2FN%20de%20CPU%20para%20la%20MAYOR%C3%8DA%20de%20aplicaciones%20multiproceso%20en%20cualquier%20sistema%20operativo%20Win%3A%20%C2%BFPOR%20QU%C3%89%3F.png)
Entiendo los subprocesos múltiples y las tareas hasta cierto punto, pero sé que fuera del sistema operativo, la mayoría de las aplicaciones de Windows se limitan a usar solo 1/N de CPU para un máximo promedio. utilización.
Eso es el 50% para un doble núcleo, el 25% de 4 CPU y el 12,5% de las 8 CPU. Esto no cambia el resultado si se utiliza Procexp.exe para desasignar CPU o elegir CPU con números pares o impares.
Mi pregunta
¿Hay alguna forma de aumentar la utilización más allá de este límite restringido del sistema operativo? Entiendo si uno se impone al 100% a una App. El sistema operativo podría presentar una pantalla azul debido a una E/S de hardware que no responde dentro del período de tiempo de espera esperado o requerido, pero incluso un 50% o un 75% mejorarían mis resultados.
Sin embargo, explorer.exe, etc. en el sistema operativo puede funcionar al 50% o más (?) en ocasiones cuando se realizan tareas grandes.
- normalmente la CPU está inactiva entre un 98% y un 99,5% con solo un navegador abierto y 10 pestañas (Brave)
Estoy usando Win7 i7-4770S Haswell 3,1 GHz con 16 GB de RAM en LibreOffice SCALC.exe con una hoja de cálculo con 1,5 millones de celdas de datos CV19 de EE. UU. e hice una búsqueda/reemplazo del prefijo de texto 'para intentar convertir texto a un número de celda diariamente fechas (con algunas opciones detexto a valores) y todavía se está ejecutando (sí) y es obvio que utilicé el método incorrecto.
Si no es posible cambiar los índices de utilización del sistema operativo, ¿debería reescribir esta pregunta sobre la conversión de 400 entradas de texto a un valor de fechas '1\20\2020 a un valor para reformatearlo según mi preferencia?
- Este archivo de texto se descargó del repositorio de GitHub para los totales acumulados de mortalidad diaria del condado de EE. UU. JHU CV19 y se importó a SCALC mediante la conversión de texto a columna.
¡SCALC todavía está funcionando! , al 12,5% según PERFMON utilizando 11 subprocesos.
El problema comenzó con una búsqueda y reemplazo de 1 carácter en una hoja de cálculo de 1,5 millones de celdas. Elegí "opción de similitud", lo cual fue un error, pero el problema no es Excel ni Open Office Apps.Muchas aplicaciones son multiproceso pero están limitadas a 1/N CPU en promedio y no hay forma de cambiar esto.. Puedo probar esto con imágenes, pero algunos de ustedes sabrán que esto es cierto.
Otros no entienden la pregunta. Sí, es posible escribir o que Windows haga esto, pero no aplicaciones predefinidas.
EJEMPLO 1 La recuperación de inicio simple de un proceso de archivo grande solo tomó unos segundos y alcanzó un máximo superior al 20%. Puede alcanzar un máximo de más del 12,5% de media durante un segundo, pero supongo que no es sostenido cuando hay una limitación en el rendimiento de la memoria. (Entonces, ¿supongo que nada puede mejorar esto?)
Aquí una búsqueda reemplaza 0 con 0 en 1,5 millones de celdas. Promedió exactamente 12,5% justo antes de capturar la captura de pantalla.
Aquí casi EXACTAMENTE 1/N o 12,5% de toda la carga de trabajo de la CPU dedicada a 1 aplicación con muchos subprocesos.
Puedo duplicar esta prueba en MUCHAS OTRAS APLICACIONES en Windows con esta arquitectura. Entonces, ¿es la arquitectura: el bus de memoria caché es limitado y hay alguna solución?
Como otros han escrito en este foro, 1/N CPU limitadas o 12,50 %
Esta es la prueba.
Más pruebas en la aplicación MS multiproceso i = solo usando 1/N CPU % promedio MAX
Actualizar
Instalé WordPerfect 2020 con QUattro Pro, ejecuté exactamente el mismo proceso multiproceso y obtuve exactamente EL MISMO RESULTADO USO MÁXIMO DE CPU en las 8 CPU = 1/8 = 12,5%
Ejemplo #4
- de un proceso multiproceso volvió a utilizar todas las CPU, pero en total sólo 1/N de CPU o el 12,5% es Process Explorer de Mark Russinovich, también conocido como PROCMON.exe. que era independiente de todos los demás procesos y utilizaba pocos recursos.
Dudo que fuera la capacidad de Mark para programar subprocesos múltiples aquí. :) (Becario de EM)
Respuesta1
No todas las tareas son inherentemente capaces de dividirse en una tarea que pueda ejecutarse simultáneamente en cada núcleo de la CPU.
Cada núcleo de su CPU es un procesador completo. Es capaz de mantener información sobre el estado de ejecución de un "hilo" de hardware. Cada núcleo tiene su propio caché y manejo de datos independientemente de los demás núcleos. Es posible que compartan un caché y un bus de memoria, pero por lo demás están completamente separados.
Ese hilo se traduce aproximadamente a lo que en software se conoce como hilo.
El problema que está viendo es que la tarea particular que realiza el trabajo dentro de ese software es inherentemente de un solo subproceso.
Un único subproceso sólo es capaz de ejecutarse en un núcleo a la vez. En un procesador de 8 núcleos, eso significa que un solo subproceso puede utilizar como máximo 1/8 de su procesador, o el 12,5% según el administrador de tareas. En un procesador de 4 núcleos eso es 1/4 o 25%.
Un programa puede tener muchos subprocesos, pero esos subprocesos sólo pueden funcionar en cosas que no tienen ninguna relación entre sí. Un hilo podría estar manejando la actualización de datos en las escenas, otro podría estar actualizando la GUI, etc.
Lo que los hilos no pueden hacer es trabajar exactamente con los mismos datos al mismo tiempo sin comunicarse entre sí y es ese límite lo que estás viendo.
Para utilizar más de un núcleo de CPU, la tarea que se realiza debe dividirse y distribuirse en varios subprocesos. Esa división es un problema de programación y su implementación corresponde a los ingenieros de software. El hecho de que una tarea determinada sea multiproceso o no depende de la complejidad de esa tarea y de si se puede dividir en primer lugar.
- ¿La tarea contiene datos que se pueden dividir en conjuntos de datos independientes para poder trabajar en ellos mediante subprocesos separados?
- ¿Se ha escrito el software para dividir esa tarea particular en subprocesos separados?
Si los datos dependen completamente de que se trabaje con ellos de una manera particular, entonces no hay forma de que utilicen más de un núcleo.
Si los datos se pueden dividir pero requieren mucho más trabajo para dividirlos y volver a fusionarlos, entonces los ingenieros de software pueden decidir que no vale la pena el esfuerzo y, en su lugar, limitarse a usar un hilo/núcleo.
Si los datos se pueden dividir y el software está diseñado para hacerloentoncesVerá más de 1 núcleo en uso.
Sé que, para una serie de tareas, Excel admite cálculos de múltiples núcleos, pero depende completamente de que los datos no tengan ninguna dependencia entre sí.