Check the new version here

Popular channels

[aporte] "cuello de botella" [PC]

bueno, en este post vamos a hablar de cuello de botella, antes de empezar a hablar sobre el tema quiero aclarar que el termino "cuello de botella" es un termino muy particular, se puede ver de muchos puntos de vista y sacar distintas conclusiones. es bastante complejo y también depende de muchos factores, así que vamos a empezar hablando de cosas básicas y profundizaremos a medida que haga falta.

vamos a empezar con una definición del termino "cuello de botella"


dicha definición es tomada del libro "Every Computer Performance Book: How to Avoid and Solve Performance Problems on The Computers You Work With"
del autor "Bob Wescott"


"One consequence of the forced flow law is that the device utilizations are proportional to their respective total service demands.


The device with the highest total service demand Di has the highest utilization1 and is called the bottleneck device. This device is the key limiting factor in achieving higher throughput. Improving this device will provide the highest payoff in terms of system throughput. Improving other devices will have little effect on the system performance. Therefore, identifying the bottleneck device should be the first step in any performance improvement project."


TRADUCCION:


"una de las consecuencias de la ley de flujo forzado, es que los usos de los dispositivos son proporcionales al total de sus respectivas demandas de servicio.


El dispositivo con la mayor demanda de servicios global, tiene la mayor utilización, y se llama el dispositivo de cuello de botella. Este dispositivo es el factor limitante clave en el logro de un mayor rendimiento. La mejora de este dispositivo proporciona la rentabilidad más alta en términos de rendimiento del sistema. La mejora de otros dispositivos tendrá poco efecto sobre el rendimiento del sistema. Por lo tanto, identificar el dispositivo cuello de botella debería ser el primer paso para cualquier mejora el rendimiento del proyecto."


dicho esto vamos a definir lo que seria el rendimiento del sistema, otro de los puntos claves para entender el concepto de "cuello de botella", el rendimiento de una pc se puede medir de diferentes maneras, el proceso de medir el rendimiento de una pc se denomina "benchmarking", el cual se basa en evaluar distintos componentes, o sistemas completos con diferentes programas y comparar los resultados obtenidos con otros resultados de referencia, hay muchas maneras de realizar este proceso y muchas aplicaciones distintas, algunos test son sintéticos (programas específicos para evaluar rendimientos, pero que no tienen ninguna utilidad) o reales, se basan en progromas/aplicaciones que se usan habitualmente, particularmente vamos a hablar de las pruebas en juegos, que es lo que mas nos interesa, un benchmarking o prueba de rendimiento en juegos, se mide en FPS, (cuadros por segundo), mientras mas FPS se consigan, significa que tenemos un mejor rendimiento.


habiendo aclarado estas cosas podemos empezar a hablar de "cuello de botella"


- que seria el cuello de botella en una pc gamer?


- simplemente, cualquier elemento que limite los fps de un juego, estaría haciendo cuello de botella


- que componente puede hacer cuello de botella en una pc?


- cualquier componente que ponga un limite de rendimiento al sistema puede hacer cuello de botella, cpu, ram, gpu, etc



- cuando hay cuello de botella?


- si nos ponemos a buscar detalladamente, siempre hay alguna parte de la pc que va a hacer cuello de botella, es prácticamente imposible utilizar el 100% de las partes de una pc al 100%, queda a criterio del usuario evaluar cuales son las partes mas importantes que se quieren aprovechar al 100%, ademas no hay 2 aplicaciones que usen la misma cantidad de recursos, por lo cual tratar de armar una pc que utilice 100% de todos los recursos serviría solamente para 1 aplicación y el resto utilizaría de manera distinta los recursos pudiendo tener de nuevo un cuello de botella. pero eso ya seria para un maníaco.

en la practica no es necesario un análisis tan delicado, en juegos normalmente el cuello de botella se produce en primer lugar en el gpu,este componente es la parte mas critica de una pc gamer y en el 90% de los casos va a ser el que limite los fps, en segundo lugar, el cpu, y como ultimo, no es muy común, pero puede ser la ram, (no en la velocidad, sino en la capacidad, 1 gb de ram haría cuello de botella en el 99% de los juegos modernos)


- como identificar el componente del cuello de botella?


- la forma mas fácil es viendo el uso de cada componente, se puede comprobar relativamente facil con programas de monitorizacion de recursos, incluso windows tiene incluido algunos programas para esto, obviamente dicha comprobación debe hacerse mientras se están ejecutando los programas/juegos que se usan habitualmente, si algún componente esta en 100% de uso, es el componente que hace cuello de botella, mientras mas grande sea la relación de uso entre los componentes, podemos decir que el "cuello de botella" es peor, por ejemplo si se usa 25% de cpu, 25% de ram y 100% de gpu, es peor que si se usara 50%cpu, 50% de ram y 100% de gpu


- evaluar la gravedad del cuello de botella?


- esto siempre es a criterio del usuario, algunos creen que si la pc tira un juego fluido, no tienen cuello de botella, pero haciendo un análisis, podes estar tirando un juego a 50 fps, lo cual se vería bastante fluido, pero cuando vez el uso de los recursos te encontras con que tenes usando el 100% del gpu, 50% del cpu, y 50% de ram, entonces si hay cuello de botella, obviamente no es tan grave como una pc que tira un juego a 10 fps, pero esta pc en vez de tirar 50 fps, podría tirar 60 fps, o 100 fps, simplemente cambiando el gpu por uno mas potente, o agregando otro gpu, o podes simplemente conformarte con los 50 fps


- el cuello de botella lo produce el hardware o el software?


- hay 3 tipos de posibilidades, el primer caso, de un cuello de botella en el hardware, se da por ejemplo en los últimos 0.5gb de ram de la gtx 970, el echo es porque esa parte de la ram es mas lenta, y genera una perdida de rendimiento en el gpu, normalmente no hay de estos casos, el segundo caso, cuando el software no aprovecha los recursos de forma eficiente, este caso era típico hace un tiempo, pero ahora ya no es muy común, el echo es que al tener un cpu de 2, 4, 6 o 8 cores, algunas aplicaciones no hacían uso de todos los cores, de modo que tenían 1 o 2 cores funcionando al 100% y los otros en 0%, en este caso, el cpu no hace cuello de botella, sino el software que no lo utiliza al cpu al 100%. 
por ultimo, lo que normalmente sucede en cualquier pc, es cuando una aplicación, o juego, utiliza el 100% de un componente, y un % menor del resto, algunos dirán que eso es problema del software que no utiliza bien los recursos, pero eso es falso, porque si se cambia la parte ocupada al 100% por otra mejor, el mismo software empezara a utilizar de forma automática un % mayor de las otras partes. el motivo de que suceda esto es muy simple, si un cpu al 100% puede generar 150 fps, pero le pones un gpu que puede generar como máximo 75 fps, el software no le hace generar 75 de sobra al cpu, lo hace trabajar solo el 50%, y generar solo los 75 fps que necesita, pero si el gpu fuera capaz de generar 150 fps, ambas partes se usarían al 100%


- si tengo cuello de botella, pero un rendimiento alto debo preocuparme?


- en absoluto, si estamos hablando de juegos, una vez alcanzado un limite de fps altos, no va a ser apreciable la diferencia, pero si hablamos de realizar algún trabajo, cualquier parte que puedas cambiar para mejorar el rendimiento, equivale a menor tiempo para realizar ese trabajo, y eso siempre es apreciable


- entonces, porque se habla de cuello de botella cuando el rendimiento es alto?


- puede ser por 2 motivos, el primero es porque hay veces que cada mejora de rendimiento es apreciable, como el tiempo que se tarda en renderizar un vídeo, el segundo motivo, se puede usar para comprar 2 procesadores alta, a simple vista, usando un gpu de gama media o alta, se ve que ningún cpu hace cuello de botella y pensarías que ambos cpu son buenos, pero analizamos lo que pasaría si se usara un gpu mas potente, o varios gpu, el motivo es eliminar el cuello de gpu para evaluar de forma correcta el rendimiento del cpu


- un monitor hace cuello de botella?


- efectivamente, los monitores tiene un cierto numero máximo de fps que pueden mostrar, tener una pc que genere 100 fps, pero un monitor capaz de mostrar 60 fps, seria un desperdicio de fps que nunca se van a mostrar en el monitor, de todas formas es relativo, porque tener 100 fps, aunque no los veas en el monitor, es bueno, en caso de que haya un bajón de fps de 100 a 60, ni lo notarias, pero si de 60 bajan a 40 o 30, es bastante molesto.


- el cpu hace cuello de botella pero el gpu no?


- esa frase es totalmente falsa, de la misma forma en que un cpu afecta al rendimiento del sistema, lo puede hacer un gpu, cualquier criterio que quieran utilizar para decir que el cpu hace cuello de botella pero el gpu no, es valido de forma inversa.


- el cpu limita el uso del gpu a nivel de hardware, pero el gpu limita los fps?


- esa es otra frase completamente falsa, el cpu es muy difícil que limite el rendimiento del gpu a nivel de hardware, normalmente el cpu limita los fps de la misma forma que el gpu, una prueba muy simple de esto, es que cuando se usan aplicaciones que solo dependen del gpu, como la minería, o renderizados acelerados por gpu, se puede sacar todo el provecho de un gpu de gama alta con un cpu de gama media/baja, el cual el mismo cpu, al tratar de jugar, limitaría los fps del juego.


- de que factores depende el cuello de botella?


- como había mencionado antes, el cuello de botella depende de muchos factores, principalmente porque no hay 2 aplicaciones que requieran el mismo uso de recursos, podes tener una aplicación o un juego que exija mucho el gpu y otra que exija el cpu, también depende de las configuraciones, por ejemplo el mismo juego, si lo jugas a una resolución de 4k, usara el 100% del gpu y 20% del cpu, si lo jugas a 1080p, usara el 100% del gpu y el 60% del cpu, si lo jugas a 720p usara el 100% del cpu y 100% del gpu.


en definitiva, ir redondeando y cerrando el tema, podemos concluir en que cualquier limite establecido por un componente de la pc, sea el cpu, gpu, ram, etc. se puede llamar cuello de botella, ese cuello de botella puede ser mas grave o menos grave, puede ser en un punto de rendimiento alto, o en un punto de rendimiento bajo. puede que ser importante o no. pero en definitiva, el que decide, cuando, como, porque, la gravedad, etc, es cada usuario, nadie tiene una formula secreta para saber cuando tal componente va a hacer cuello de botella, o llamarle de una forma diferente en cada caso.


están todos invitados a comentar sus opiniones y discutir sobre el tema siempre y cuando sea con buenos fundamentos y sin insultos.

un saludo a todos.
0
0
0
1
0No comments yet