52 meneos
2780 clics
Este envío tiene varios votos negativos. Asegúrate antes de menear
El porcentaje de uso de la CPU es una gran mentira, y cada vez es más gorda
Hay muchas razones por las que no deberías creerte el porcentaje de uso de la CPU; pero la cosa va a peor, hasta el punto de que es un dato irrelevante. Seguro que en más de una ocasión has notado que tu ordenador iba lento, que los programas tardaban en cargar, o que un juego de repente iba a saltos. Y es muy posible que inmediatamente hayas buscado cuánto está siendo usada la CPU, para saber si realmente está a tope o si ocurre algo más.
|
comentarios cerrados
En una medición de uso de la CPU si marca 90% puede ser perfectamente que el procesador haya trabajado realmente el 20% del tiempo y el 70% restante lo haya pasado esperando entradas de datos de la memoria.
Si lo he entendido bien, sigue pareciéndome práctica la medida porque indica el tiempo en que el procesador ha sido usado para un proceso, bien sea operando, bien sea esperando.
Aunque por una parte, lo que dice del hyperthreading es cierto, no es un core, son sólo un conjunto de registros que utiliza los mismos elementos de cómputo, en la práctica, el Hyperthreading sí que aumenta el rendimiento porque cuando un thread se queda tonto esperando por datos de la memoria, el otro puede seguir currando. Si tienes un procesador de 2 Ghz (que vamos a suponer ejecta teóricamente 2 millones de instrucciones por segundo por core) cuando te dice que con HT tienes un 30% más ... no es que ejecutes 2,6 millones ... sino que de unas reales (me invento la cifra, pero no andaré muy lejos) 0,5 millones pasas a ejecutar 0,65 (nunca se llega a toda la potencia porque la memoria no puede dar los suficientes datos a la CPU) De hecho, lo mejor serían CPUs con 8 threads por core, como las SPARC T5 que son las que más tiempo de CPU aprovechan (la última creo que es una bestia de 32 cores y 8 threads por core)
Luego salen cenutrios diciendo que da lo mismo llenar los canales de memoria o no.
Lo has entendido bien, puede ser un 70-20 o incluso peor (al final depende de cómo accedas los datos, si accedes a muy pocos datos muy fragmentados es peor, si accedes a bloques de datos continuos que aprovechen el tráfico entre memoria y CPU, mejor)
Creo que el mínimo que se transfiere son páginas de 4K, si accedes a los datos de esta manera, es el mejor rendimiento, si pillas datos de 4 en 4 bytes y dispersos peor.
Pues no, los sistemas operativos manejan muy bien los hilos de los procesadores. Lo que a veces no funciona bien es la interpretación de las herramientas que hacen algunos.
Los chinitos de la CPU se tocan los huevos porque los chinitos de la memoria están hasta arriba de curro y no dan abasto.
Pues sí, hay que ampliar la cocina para que lleguen a tiempo todos los pedidos o cerramos el restaurante.
(1) www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html
(2) www.brendangregg.com/blog/2018-02-09/kpti-kaiser-meltdown-performance.
---
Y siguiendo este camino, descubrió que problemas en la gestión de la memoria caché provocaba un aumento del 16% en el tiempo de espera de cada hilo.
---
cc. #1
* (que sea significativa como para afectar al rendimiento, me refiero)
A ver si vas a tener algún virus...
dle.rae.es/?id=Irmu2ul
Cuando bajas a la memoria a por datos subes bloques de 4K (depende del procesador pero creo que es así) si el siguiente dato que pides está en esas 4K te lo da de la cache y va como una moto pero si no está ahí se produce un fallo de cache, descartas los datos y traes otro bloque de 4K con el consiguiente perjuicio en latencia. Cuando hablo de fragmentación me refiero en la forma de acceder a los datos, no que la memoria se fragmente (que lo hace, pero eso casi no afecta)
Encima, para complicar la cosa, piensa que hay tres niveles de cache, L1, con 32K para datos y 32K para código, L2 un poco más grande y mas lenta (creo que son unos 128KB por core) y L3 que es la que se anuncia que es compartida entre todos los cores, aunque en realidad asigna entre 1 y 2 MB por core, que es la más lenta de todas.
Más bien optimizados con el culo.
Desde hace mucho se tiende a meter lo más posible en memoria, porque va rápida.
Y es cierto, va rápida, pero cuando metes GB de datos en memoria, a esta ya le cuesta moverlos y como dije antes, las memorias no evoluciona tan rápido como las CPUs.
Últimamente no se comenta, pero las CPU tiene un multiplicador de frecuencia, es decir, una velocidad interna y otra de comunicación con la memoria una los PCI. Mientras que la interna son GHz la externa son pocos cientos de MHz (lo de la memoria DDR4 a 2400 es un “truco”)
La CPU de mi casa creo que tiene un multiplicador de x40 (el bus va a 100Mhz, la CPU a 4 GHz)