Como bien sabéis, admiro mucho al equipo de Blender e intento estar al día con sus noticias. Esta última que he visto es sobre un PC para Blender, es decir, cómo elegir los componentes que mejor le vienen a un PC destinado a correr Blender. El que quiera leer el post original, aquí lo tiene, yo lo que voy a hacer es comentar sobre el post original ;)
Lo primero que comenta el autor y le doy toda la razón es que tener el PC más caro no significa que por arte de magia tus capacidades con Blender van a mejorar … os lo digo por experiencia ROFL. Bromas de lado, hay gente que se cree que al invertir mucho dinero en un PC (o en una parte del PC) van a mejorar en sus estudios, juegos, relaciones sociales, … Pues no. El PC es una herramienta simple y llanamente y no te va a convertir en un artista, genio o guaperas.
Hecha esta aclaración, el autor original se mete a hablar en el tema tecnológico: HW y SW del PC. Empieza por el sistema operativo diciendo que Linux es mucho más estable y gestiona mejor la memoria que MS-Windows, pero que recomienda usar MS-Windows 7 porque es más fácil de configurar. Yo soy de la opinión contraria … la cantidad de dolóres de cabeza que me ha podido dar MS-Windows.
A continuación, el autor recomienda el procesador más rápido y que tenga muchos cores. Vuelvo a discrepar aquí. El autor se ha basado en lo que mucha gente suele pensar: “burro grande, ande o no ande“. Esto no es del todo cierto. En el mundo de render, tienes que tener en cuenta cómo funciona el motor de render que estás usando, el tamaño de las texturas, calidad de render, efectos, luces, … Todo esto “consume” una u otra propiedad de la CPU. Por ejemplo:
- si usas texturas muy grandes con mucho detalle/calidad … te van a consumir mucha RAM, luego el bus CPU RAM es muy importante y el número de cores afecta a este ancho de banda. Si tienes muchos cores, el ancho de banda por core es menor luego va a caer el rendimiento.
- la frecuencia de la CPU en el caso del mundo de render es muy importante, pero hay otro dato muy importante relacionado con esto: CONSUMO y REFRIGERACIÓN. Es decir, una CPU con un poco más de frecuencia puede consumir MUCHO más y refrigerarla puede ser MUCHO más complicado. Todo esto se dispara en el momento que nos metemos con render-farms: no es lo mismo refrigerar 8 cores que 8000.
Para que os hagáis una idea:
- 2 x quad-core a 80 W son 160 W que te consumen los dos procesadores de un PC/servidor/WS dual-socket, a esto hay que sumar todos los demás componentes.
- (2 x quad-core 80 W) x 8000 = 1280000 W lo que te consumen SÓLO las CPUs de un render farm con 8000 nodos. ¿Queréis sumar todos los demás componentes? ;)
Os recomiendo que calculéis la relación FLOPS/W. Para calcular los FLOPS sólo tenéis que realizar la siguiente multiplicación:
4 x (# de cores) x (frecuencia)
por ejemplo, si tenéis un procesdor a 2.6 GHz y con 4 cores. los FLOPS que tenéis son:
4 x 4 cores x 2.66 GHz = 42.56 GFLOPS
Vamos, que lo que interesa es el procesador que tenga más FLOPS a menor consumo porque muchas veces el aumento de GHz no implica un aumento espectacular de rendimiento, pero sí de consumo.
Siguiente punto: RAM. La memoria, hasta ahora no era el gran problema del mundo del render, se solían poner 2 GB/socket. Pero eso ya ha cambiado … ahora hablamos de HD, stereoscopía, 2k, 4k, … Y eso supone unas texturas muy importantes. Otra cosa a tener en cuenta es que en un nodo exclusivamente de render no hay interfaz gráfica de usuario, no etá corriendo Blender ni cualquier otra aplicación así que te ahorras unos cuantos MBytes. En una estación de trabajo corriendo Blender, entorno gráfico y otras aplicciones … te recomiendo que le metas más RAM. Personalmente iría por encima de los 8 ó 16 GB. Otra razón para meterle bien de RAM es que si consigues que Linux (estoy dando por hecho que estás usando Linux ;) te meta en caché las texturas … evitas ir al disco duro: ese gran cuello de botella. En este punto, coincidimos el autor y yo :)
Volvemos a coincidir el autor original y yo en el tema de tarjeta gráfica. Hasta ahora, la tarjeta gráfica NO influye en el tiempo de render … A MENOS que uses un motor de render capaz de usar la GPU como coprocesador matemático vectorial. Blender, por ejemplo no lo soporta por ahora así que PARA RENDER, no te afecta. La tarjeta gráfica afecta a la hora de modelar, pero no de renderizar. Si usas un motor de render capaz de usar la GPU … eso ya es otra historia y tienes que ver qué GPUs/GPGPUs soporta dicho motor de render. Además, tienes que tener en cuenta cosas como si la tarjeta gráfica (o GPGPU) que estás usando utiliza ECC RAM o no, consumo, calor, …
Almacenamiento … este es el mayor problema que puede tener la informática hoy en día. Es el cuello de botella eterno, a ver si se imponen ya los SSD porque así no vamos a ninguna parte. La cosa es muy sencilla: si tienes dinero para SSD … ponlo. Si no tienes dinero para SSD … amplía la RAM. Lo malo de los discos duros es que son DEMASIADO lentos para los procesadores y memorias existentes. Cada vez que la CPU pide un dato y lo tiene que buscar al disco duro … se hace eterno. Ahora que lo pienso, os he dicho que si podéis poner SSD que los pongáis … CUIDADO: si tenéis un sólo chipset de entrada/salida en lugar de dos, el cuello de botella puede estar en el chipset ya que tendrá que manejar:
- red
- disco duro
- tarjeta gráfica
La tarjeta gráfica irá a PCIe x16 Gen 2 lo más seguro por lo que estará consumiendo un mbuen ancho de banda, dejando poco para los demás dispositivos de entrada/salida. Tened cuidado con eso. Lo que más os va a consumir disco duro son las texturas, cuanto más detalle … más grande la textura así que más ancho de banda requerirá. Lo bueno del render es que es ancho de banda lo que consume y muy poca entrada/salida por lo que discos SATA II pueden valer.
Siguiendo con almacenamiento, si las texturas son muy grandes, un sistema RAID os puede venir muy bien para mejorar el ancho de banda, volumen y la protección de datos. Pero claro, requiere más inversión. No, no, no, no, … Nada de RAID por software. RAID por software consume ciclos de CPU (ya, ya sé que consume pocos ciclos de CPU para las CPUs existentes hoy en día) por lo que tardará más. Yo recomiendo un RAID por hardware.
Sistema de ficheros. Os recomiendo un sistema de ficheros con journaling, que sea capaz de trabajar con ficheros grandes y que tenga unas cuantas herramientas de depuración. Vamos que os recomiendo XFS ;) XFS es un sistema de ficheros muy potente que tiene una ventaja muy interesante para los entornos de render que es que está paralelizado. ¿Qué significa esto? Muy sencillo, si tienes un PC con más de un core y un sistema RAID bien montado, XFS te permite hacer lecturas paralelas por lo que consigues más ancho de banda :) Además de eso, tiene muchas herramientas a nivel de sistema de ficheros.
Hablando de Render, os dejo una imagen que es realista a más no poder:
Aquí tenéis el original.