¿Cuánto afecta el reloj de la CPU y la velocidad de la RAM al rendimiento del alojamiento de servidores de juegos pequeños y NAS, o es el no? de núcleos más importantes?

Es difícil saberlo porque no proporciona su carga de trabajo prevista. Específicamente:

  • Procesos / subprocesos del servidor
  • E / S de disco (ancho de banda y operaciones de E / S por segundo (IOPS))
  • Tamaño del proceso para el software del juego real (consumo medio y máximo de memoria)
  • Sistema operativo

Sin números, se convierte en brujería.

Con la esperanza de darle una respuesta, algunas cosas a tener en cuenta en función de los elementos antes mencionados:

  • Estas configuraciones tienden a usar múltiples procesos (sandboxed o no), tal vez con algunos subprocesos. La CPU difícilmente será un problema a menos que haya bastante procesamiento del lado del servidor. Los procesadores que enumeró difieren básicamente en la velocidad del reloj, por lo que no importará mucho. Si tuvieran diferentes tamaños de caché, eso importaría.
  • El disco suele ser el componente crítico: es más fácil fallar o corromperse (falla de energía), lo más probable es que se convierta en un cuello de botella. Necesitará saber cuántos datos se escriben (como elegir un SSD adecuado o adherirse a los discos duros) y cuántos datos se leen, mejor si tiene una idea de su aleatoriedad.
  • La memoria generalmente no daña, y un sistema operativo capaz puede hacer un uso excelente de abundante memoria para evitar E / S de disco. Una apuesta razonable sería el doble de memoria que espera permanecer como residente con los servidores del juego, y una cantidad adicional que los servidores podrían utilizar al máximo ( por ejemplo : una vez al día, el servidor del juego usa un 30% más de memoria para el mantenimiento interno, y una hora más tarde libera esa memoria). No olvide equilibrar sus módulos a través de sus canales de memoria y procesadores (si usa más de un zócalo de CPU).
  • Sistema operativo: debe dejar algo de espacio en su hardware para el sistema operativo. Eso incluye cierta cantidad de espacio en disco (o incluso un disco dedicado más pequeño), entre un 5% y un 10% de CPU (depende en gran medida de la carga, como el tráfico de red) y algo de memoria. Supongo que su servidor de juegos se basa en un sistema operativo específico que no mencionó.

Obtener un sistema actualizable podría simplificar algunas de sus opciones. Por ejemplo, una placa de sistema de doble zócalo, con más de 8 ranuras DIMM y tantos puertos SATA / SAS como le parezca razonable podría colocarlo en una posición más flexible. Comenzando con menos componentes y agregando cosas a medida que surja la necesidad.

Hoo boy – ¿es este un nido de avispas? Estimar el rendimiento del sistema es un negocio complicado, pero ante todo requiere una comprensión de la carga de trabajo. Con eso quiero decir ¿cómo usa la carga de trabajo la memoria, la CPU y las E / S?

Hay una serie de desafíos en la arquitectura de PC y comprender cómo interactúan es fundamental para comprender cómo se ejecutará una carga de trabajo en un sistema determinado.

El primer cuello de botella es el sistema de memoria. Por lo general, tiene un ancho de banda insuficiente y una latencia terrible. Por ejemplo, un error de limpieza en todas las cachés en un X86-64 significa al menos 300 ciclos de retraso para que los datos estén disponibles para completar una carga de registro. Esto es de lo que se tratan los hilos de hardware: ocultar la latencia de la memoria al tener algo más que hacer mientras se completa una CARGA. Si considera cuántas instrucciones son operaciones de CARGA, verá por qué la gestión de la colocación de datos en los cachés es crítica para utilizar el rendimiento que la CPU es teóricamente capaz de producir. La lucha por las líneas de caché puede dividir trivialmente el rendimiento de la CPU disponible por un entero doloroso. Tener más núcleos simplemente significa que hay más bocas que alimentar, por lo que son útiles principalmente en los casos en que el flujo de transacciones entrantes está completamente relacionado para que no interfieran al necesitar datos compartidos (lo que requiere transacciones de protocolo de coherencia en cachés o bloqueo).

Otro cuello de botella es la estructura de E / S de las PC. Con el advenimiento de PCIe, es posible crear interfaces que puedan tener acceso a suficiente ancho de banda de bus para sus archivos adjuntos, suponiendo que haya poco conflicto suficiente para ese ancho de banda en los árboles de PCIe. Esto se aplica hasta la interfaz entre el árbol de bus PCIe y el sistema de memoria. Si suponemos que no hay interferencia de coherencia, se trata de los ciclos de memoria disponibles. Escribir colas combinadas puede ayudar en la dirección entrante (leer desde un dispositivo y poner datos en la memoria), pero las lecturas aún pagan la carga completa a menos que los dispositivos sean lo suficientemente inteligentes como para hacer streaming de transacciones que pueden provocar un cortocircuito en algunos de los gastos generales de una transacción PCIe completa .

Otra parte importante de este sub rompecabezas es qué tan bien diseñadas están las interfaces del dispositivo. Tenga cuidado con los controladores responsables de muchos dispositivos, especialmente sobre buses delgados. Te estoy mirando directamente, SATA. Un controlador de disco ideal para operaciones NAS tendría un controlador por unidad con una conexión directa a cada unidad. De esa manera, todas las unidades podrían transferirse al mismo tiempo. El único problema con esto es que ahora el lado PCIe de la interfaz podría tener serios problemas para mantenerse al día. Estas siempre son compensaciones, pero lo que hay que tener en cuenta es que en cualquier tipo de entorno RAID, incluido ZFS, las transacciones de disco con frecuencia requieren mover datos hacia o desde múltiples unidades, y si esas operaciones se serializan por cualquier razón, el retraso de la transacción aumenta y el rendimiento disminuye. Así que preocúpese por las “cosas compartidas” que inducirán la serialización.

Un comentario importante sobre la memoria: cualquiera que construya un “servidor” sin ECC está jugando con FIRE. Hay una gran cantidad de evidencia recopilada por los gustos de Google y otros jugadores hiperescala de que la RAM es aterradora y poco confiable. De hecho, si nos fijamos en el sitio web de Intel, continúan con gran detalle acerca de cómo sus chips de servidor tienen ECC y que los servidores y las “estaciones de trabajo” deben usar ECC. Por qué sus chips de “escritorio” han deshabilitado el ECC, con la explicación de que los usuarios de escritorio no necesitan ECC, está más allá de mi débil comprensión. Saca tus propias conclusiones.

Estoy bastante seguro de que no respondí a su pregunta, como en “Simplemente haga X y estará bien”, pero espero aclarar los factores que uno debe tener en cuenta al intentar optimizar un sistema para una carga de trabajo específica. Esto nunca es fácil de hacer bien porque uno nunca tiene los datos que le gustaría, y la carga de trabajo nunca se mantiene igual todo el tiempo de todos modos. Entonces, lo mejor que puede hacer es darle una buena puñalada y luego * medir * con todas las herramientas disponibles. No tenga miedo de hacer una evaluación comparativa real, incluso podría considerar informar lo que encuentre para que otros puedan beneficiarse.

¡Bienvenido al Guild of Voodoo Performance Tuners!

El alojamiento de juegos y una PC NAS requieren básicamente lo contrario. Una PC de servidor de juegos necesita una CPU decente y una buena cantidad de RAM (8 GB probablemente sea excesivo, 6 GB sería genial). Para un servidor NAS, necesita un disco rápido pero no mucha RAM o una buena CPU. Para la PC servidor, solo use un Xeon de rango medio y ~ 6GB de RAM (8GB será lo más fácil). La velocidad de RAM adicional tampoco vale el costo para una PC servidor. De cualquier manera, 32 o 64 GB de RAM en la PC del servidor es excesivo, a menos que esté ejecutando posiblemente hasta 10 servidores, cada uno con el máximo establecido. 40 jugadores. Más núcleos es mejor para la virtualización y para los servidores, por lo tanto, obtenga un Xeon de alto conteo de núcleos con buen hyperthreading.

Entonces, aquí hay algunas conclusiones que he reunido entre las respuestas proporcionadas y mi propia investigación: la mayoría de los servidores de juegos solo utilizan 1 núcleo en 2 hilos, y el beneficio de múltiples núcleos es insignificante en este caso. En este caso de uso, más núcleos me permitirán realizar más tareas, pero la velocidad del procesador parece ser más importante para cada tarea individual.

La velocidad de la memoria en sí misma probablemente tendrá algún efecto en el servidor, pero los beneficios entre el uso de 1333mHz y 1600mHz son probablemente insignificantes. Además, se puede obtener más de la memoria ECC y la cantidad de dicha memoria para el uso del NAS y del Servidor que la velocidad real del reloj RAM.

Actualmente estoy debatiendo si construir dos servidores, un servidor NAS de 8 núcleos dedicado y un servidor de juegos de 8 núcleos dedicado, o un único servidor multipropósito, un servidor de 12 núcleos con FreeNAS que usa cárceles para servidores de juegos y otros beneficios. Este último puede ser más rentable y beneficioso a largo plazo, pero el primero ofrece una mejor eficiencia de espacio. O, mejor aún, podría construir el sistema de 12 núcleos ahora y actualizarlo con un servidor secundario dedicado de 12 núcleos en una fecha posterior. Decisiones decisiones.