Estaba pensando en elegir con la mira en la placa madre y el proce, pero al parecer es mejor hacerlo al revés
Pero antes recordemos los objetivos:
- Bajo consumo
- FreeNas
- soporte ECC (por FreeNAS)
- Plataforma Intel (por FreeNAS)
Y continuando con el proyecto «NAS» ahora veremos las características que hay que tener en cuenta para elegir un buen procesador
Ahora el proyecto ha sufrido una pequeña modificación donde ya no será solo un servidor NAS sino que un pequeño servidor de visualización donde usare PCIE passthoug para el NAS y para un router o firewall. Adicional unas 4 vm extra por lo que se añaden los siguientes requerimientos:
- Soporte AES-NI (aunque ya estaba debido a los requerimientos de ZFS)
- soporte de Virtualización (que casi todos los procesadores actuales traen por defecto)
- soporte para IOMMU
Una vez definido todo esto tenemos cono características relevantes al momento de elegir un procesador:
Performance
Este es el top y lo más básico a revisar en un proce, su performance, existen varias páginas de benchmark o comparativas que nos pueden ayudar.
En este post (y creo que también en el futuro) no entrare en mayores detalles en cuanto a este punto ya que siento que se sale demasiado del foco del blog
Gráficos
Cuando montamos un equipo casero por lo general (y sobre todo si es un equipo gamer) compramos una tarjeta gráfica dedicada, sin embargo en entornos de servidores por lo general no se usan este tipo de tarjetas ya que no se requiere mayores prestaciones en vídeo.
Es por este motivo que toma relevancia en saber si el procesamiento gráfico vendrá integrado en el procesador o no, pudiendo estar integrado directamente en la placa madre
en caso que no tengamos ningún procesador gráfico tenemos que considerar 1 puerto PCIe para una tarjeta de video
Soporte Memorias
Tanto nuestro procesador como la placa madre deben ser compatibles, en mi caso me tope con que el procesador que tengo en la mira soporta tanto DDR3L-1333/1600 Mhz y DDR4-1866/2133 Mhz, sin embargo la placa soporta 2400/2133/1866/1600 MHz ECC DDR4, si compro una ram ddr4 de 1600Mhz el equipo dará problemas, en mi caso compraré ddr4 de 2400 Mhz y el equipo funcionará a 2133 Mhz ya que el limite será el procesador
Soporte lineas PCIe
Este punto no lo encuentro tan relevante ya que el total de lineas PCIe se reparten entre el procesador y el chipset de la placa madre pero para algunas características especificas es necesario saber este dato
Soporte instrucciones
Para utilizar la virtualización este paso es fundamental ya que aquí nos indica si tiene soporte o no para la virtualización la gran mayoría de procesadores existentes tienen la posibilidad de virtualización pero siempre hay que asegurarse, ademas existen varias opciones que nos pueden ayudar en una tarea u otra (en mi caso como como IOMMU).
Si queremos conocer las características que soporta nuestro equipo actual en linux tenemos 2 opciones dmidecode y /proc/cpuinfo
sudo dmidecode -t processor # dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.7 present. Handle 0x0400, DMI type 4, 40 bytes Processor Information Socket Designation: CPU1 Type: Central Processor Family: Xeon Manufacturer: Intel ID: D7 06 02 00 FF FB EB BF Signature: Type 0, Family 6, Model 45, Stepping 7 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) CMOV (Conditional move instruction supported) PAT (Page attribute table) PSE-36 (36-bit page size extension) CLFSH (CLFLUSH instruction supported) DS (Debug store) ACPI (ACPI supported) MMX (MMX technology supported) FXSR (FXSAVE and FXSTOR instructions supported) SSE (Streaming SIMD extensions) SSE2 (Streaming SIMD extensions 2) SS (Self-snoop) HTT (Multi-threading) TM (Thermal monitor supported) PBE (Pending break enabled) Version: Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz Voltage: 1.2 V External Clock: 7200 MHz Max Speed: 3600 MHz Current Speed: 2300 MHz Status: Populated, Enabled Upgrade: Socket LGA2011 L1 Cache Handle: 0x0700 L2 Cache Handle: 0x0701 L3 Cache Handle: 0x0702 Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Core Count: 6 Core Enabled: 6 Thread Count: 12 Characteristics: 64-bit capable Multi-Core Hardware Thread Execute Protection Enhanced Virtualization Power/Performance Control Handle 0x0401, DMI type 4, 40 bytes Processor Information Socket Designation: CPU2 <--->
Como pueden ver en el output los «flags» indican todas las opciones que posee este procesador
También lo podemos hacer con un sudo cat /proc/cpuinfo | grep flags
#sudo cat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts
en un datasheet de cualquier procesador tenemos el apartado de tecnologías avanzadas como podemos en el ejemplo de abajo usando este modelo Xeon E5-2630
si quieren ver un listado con todos los flags (o tecnologías) soportadas pueden visitar este link del kernel Linux, no voy a dar la explicación larga de cada uno de los flags pero si vamos a convertir el «texto largo» a flag con una breve descripción (al menos de lo que encuentre), o sea, desde la pagina de intel vamos a descubrir a que flag hace mención cada una de las tecnologías avanzadas y en que afecta al equipo. Para esto pondré primero la característica seguido por el flag entre paréntesis y finalizando con la descripción.
Hyper-Threading Intel® (HT): Esta tecnología permite al procesador operar de forma mas rápida, gracias a esta tecnología es que tenemos los «hilos»
virtualización Intel® (VT-x) (VME): como imaginaran, esta característica tiene que estar si o si cuando queremos virtualizar, existen algunas características adicionales para un soporte completo de virtualizacion (que ya vamos a ver) pero esta es la base
virtualización Intel® para E/S dirigida (VT-d) (VMX): permite la asignación directa de máquinas virtuales a funciones virtuales, incluyendo la E/S de disco IOMMU (I/O Memory Management Unit) o SR-IOV (Single-Root Input/Output Virtualization)
Intel® VT-x con tablas de páginas extendidas (EPT_AD):
Intel® 64 : La tecnología que permite el uso de mas de 4Gb de ram
Conjunto de instrucciones:
Extensiones de conjunto de instrucciones: son un listado de funciones que puede realizar el procesador pudiendo ser sse (XMM) sse2 (XMM2) (SSE4A) «pni» SSE-3 (XMM3) Supplemental SSE-3 (SSSE3) «sse4_1» SSE-4.1 (XMM4_1) «sse4_2» SSE-4.2 (XMM4_2)
Intel SpeedStep® (EST) : Es una tecnología de administración de la energía donde el voltaje aplicado y la velocidad del reloj de un microprocesador se mantienen en los niveles mínimos necesarios hasta que se necesite más energía de procesamiento
Estos son los que he encontrado algo de información, me quedan en el tintero:
- Estados de inactividad
- Intel SpeedStep® mejorada
- monitoreo térmico
- Intel® Flex Memory Access
- Intel® Identity Protection
- Nuevas instrucciones de AES Intel®
- Intel® Trusted Execution
y ya con esto doy por finalizado este post, se que le faltan cosas y quizás mas adelante las vaya agregando pero para lo que yo necesito creo que esta bien
Fuentes: