Descripción general y pruebas comparativas de PC "Elbrus 401 - PC". Cuarta parte: puntos de referencia

La parte final del artículo está dedicada a comparar el rendimiento de una nueva computadora rusa con competidores extranjeros y sus propios predecesores.

Vista frontal y lateral de la unidad del sistema Elbrus 401-PCResultados de la prueba de Pgbench simplificados (Postgresql)

Precaución: ¡muchas letras e imágenes!



Recordamos los contenidos de las partes anteriores:

  1. revisión de hardware :
    • proceso de adquisición;
    • hardware
  2. revisión de software :
    • lanzamiento del sistema operativo;
    • software regular;
  3. Resumen de herramientas de desarrollo :
    • características de la arquitectura;
    • lenguaje de máquina;
    • herramientas de desarrollo;
  4. rendimiento de evaluación comparativa:

Que tengas una buena lectura!

Descargo de responsabilidad


El autor estuvo profundamente equivocado durante mucho tiempo, creyendo que esta computadora fue comprada por la compañía para sus propias necesidades, además de la tecnología explotada de una generación anterior. Y solo en el momento de la recepción, quedó claro que el nuevo producto está destinado a una entrega posterior como parte del complejo. Por lo tanto, en lugar de la lectura inicialmente pensada de la documentación, el conocimiento práctico de todas las sutilezas, la selección cuidadosa de las herramientas de prueba y otras actividades meditativas, tuvimos que actuar rápidamente, si no de forma caótica. El grado de insuficiencia también ha aumentado gracias a la emergencia anterior y posterior al Año Nuevo, en cuya posible eliminación el autor participó en paralelo.

« . .   , ». (nutanix)

No nos propusimos lograr algún tipo de resultado "verdaderamente correcto", que revela con precisión las ventajas o desventajas únicas de una plataforma en particular. Solo quería tener una idea común sobre el poder de cómputo del nuevo Elbrus en el contexto de muestras previamente conocidas de productos electrónicos domésticos y occidentales, desde la perspectiva de un usuario común que usa programas listos en forma ensamblada o los compila a partir de códigos fuente sin usar conocimiento esotérico sobre optimización y portabilidad. Por lo tanto, el artículo no tendrá sensaciones como "Elbrus rompió Xeon al encriptar de acuerdo con el algoritmo GOST" o "Elbrus en modo de emulación x86 funciona incluso más rápido que ejecutar código nativo" (que se puede leer aquí y allá en Internet, y siempre sin divulgación por alguna razón detalles). Sin embargo, por el bien de la verdad y la intriga, vale la pena señalarque en una serie de pruebas el protagonista de esta revisión realmente mostró resultados varias veces más altos que una computadora similar basada en Core i7.

Prueba de participantes


Dado que los valores absolutos de los resultados obtenidos en los puntos de referencia suelen ser valores muy abstractos, incluso cuando los algoritmos de prueba se basan en el código del programa de aplicaciones reales, se decidió realizar una serie de mediciones idénticas en varias plataformas informáticas que son lo más diferentes posible y al mismo tiempo cubren casi la totalidad una gama de tecnología relevante para un propósito similar.

Computadora con arquitectura Intel x86‑64 basada en Atom
Vista de la placa base Intel D2500CC y la unidad del sistema Chieftec IX-01B desde el noresteVista suroeste de la placa base Intel D2500CC

Quizás el rival ideal para Elbrus sería un Intel Celeron o Atom moderno con cuatro núcleos y una frecuencia baja, o un análogo bajo la marca AMD; pero por lo que había en los contenedores, solo había un Atom D2500 de doble núcleo soldado en una placa base Intel D2500CC de formato mini-ITX. La configuración de esta computadora compacta y obviamente no demasiado juguetona, probablemente, no necesita explicaciones adicionales; ella solo tenía un componente atípico: un disco duro de 3.5 pulgadas (aunque la serie inicial), pero dado que el rendimiento de E / S no era el foco del estudio, este hecho puede descuidarse. Para garantizar la máxima similitud programática, se eligió el kit de distribución Debian 7.9.0 para la arquitectura x86‑64 con el kernel Linux 3.2.0 como sistema operativo (especialmenteque instalar y actualizar versiones anteriores de Debian no es una búsqueda para los débiles de corazón).

La computadora de arquitectura x86‑64 basada en Intel Core i7 El segundo participante natural fue una computadora del polo opuesto de funciones y velocidad: la minitorre de escritorio Dell OptiPlex 990 con un procesador Core i7‑2600 y una placa base original basada en el chipset Q67. El sistema funcionaba en su modo diario, con la función Turbo Boost deshabilitada, pero con Hyper-Threading habilitado, ejecutando openSUSE 13.2 para la arquitectura x86‑64 con el kernel de Linux 3.16.7. Computadora Elbrus-90mikro basada en el MTsST R500
Vista frontal y lateral de la unidad del sistema Dell OptiPlex 990Vista de la unidad del sistema Dell OptiPlex 990 con la pared lateral retiradaDell OptiPlex 990




‑90   «»   ‑90   «»  ‑90   «»

Sin embargo, sería incorrecto hacer comparaciones solo con la corriente principal, ya que el nuevo Elbrus-4C es principalmente un reemplazo de los antiguos representantes de la línea de productos Elbrus, que incluye no solo computadoras con arquitectura E2K, sino también SPARC. Desafortunadamente, nuestra empresa no cuenta con el moderno equipo de arquitectura SPARC V9, como el MTsST R1000, pero "tenemos la fortuna" de jugar con toda la cría R500, de la generación SPARC V8, que todavía es de 32 bits. El primer representante de la vieja guardia fue la computadora Elbrus-90mikro en el formato de una mini torre ordinaria con dos procesadores R500 soldados, una tarjeta de video discreta de su propio diseño, un disco duro ordinario y una unidad óptica. El sistema operativo de esta computadora es MSVS 3.0 para la arquitectura SPARC con el kernel Linux 2.4.25, el compilador GCC 3.3.6 y la biblioteca GNU LibC 2.2.5.

Otra computadora de arquitectura SPARC V8 basada en RAR (vista ejemplar, foto del sitio ICST)
‑90   «»‑90   «»

Otra computadora también está equipada con un par de procesadores R500, pero está hecha en el diseño modular Euromechanics 6U, tiene solo 512 MB de RAM y una tarjeta flash de nivel industrial como unidad principal (el modelo Meltron P7 se refiere con orgullo como "SSD", pero el rendimiento real en este la computadora está más cerca de las viejas unidades flash lentas). La diferencia fundamental con el participante anterior es que el sistema operativo Elbrus (OS 311-03) está instalado aquí, con fecha de principios de 2011, con el núcleo Linux 2.6.16, el compilador LCC 1.16.12 (se declara la compatibilidad con GCC 3.4.6) y la biblioteca GNU LibC 2.16.0. Como se verá más adelante, estas diferencias programáticas del MSWS a veces conducen a una diferencia significativa en la velocidad, con las escalas inclinadas en una dirección u otra. Por lo tanto, ambas series de resultados se enumeran a continuación.marcado respectivamente "R500 / E" para una computadora con un sistema Elbrus y "R500 / M" para una computadora con un sistema MSVS.

Coremark


Como ya se mencionó brevemente, el software incluye una colección bastante extensa de utilidades de prueba para verificar el correcto funcionamiento del equipo y las bibliotecas del sistema, así como para medir el rendimiento. Algunas de estas utilidades son desarrolladas por la compañía MTsST, y algunas son programas bien conocidos de terceros autores. Entre estos últimos, también hay versiones especialmente adaptadas para Elbrus: por ejemplo, CoreMark requiere que cada plataforma implemente su propia interfaz, teniendo en cuenta las características del compilador y las bibliotecas, las llamadas al sistema y las estructuras de datos, el subprocesamiento múltiple y las herramientas de medición de tiempo. Sin embargo, esta transferencia no ofrece ventajas ocultas, especialmente porque los resultados de la ejecución principal se verifican con el generador de perfiles.

La prueba CoreMark fue creada por el Consorcio para medir microprocesadores integrados (EEMBC) y consta de varias tareas sintéticas, que incluyen el procesamiento de matrices y listas vinculadas, el cambio de estado de una máquina de estado y el cálculo de una suma de verificación. Aparentemente, debido a que es necesario registrarse para descargar los códigos fuente y publicar los resultados, esta prueba no ganó mucha popularidad: actualmente hay 406 entradas en la base de datos .

CoreMark

El modoi7‑2600D2500E2S-800R500 / ER500 / M
un núcleo15'2183'5952'260602434
todos los núcleos88'5707'1088'8501'214850


El resultado logrado por el procesador Elbrus-4C en modo de subproceso único es ligeramente mayor que el antiguo AMD Athlon XP-M con la misma velocidad de reloj, y cuando se usan los cuatro núcleos, está cerca del Athlon 64 X2 QL-65 de doble núcleo, Intel Atom 330, D525 , D2500, Core 2 Duo E4300, cuya frecuencia es al menos dos veces mayor.

El R500 demostró un comportamiento extraño con el sistema operativo Elbrus: al usar dos subprocesos o dos procesos, ambos compartían un núcleo por igual, y solo el tercer y subsiguientes subprocesos o procesos también se distribuían al segundo núcleo, y la saturación ocurría solo en un grado de paralelismo igual a 8. Por lo tanto, la línea punteada también muestra resultados adicionales con el número de subprocesos que excede el número de núcleos de una computadora: como puede ver, todos los demás participantes de la prueba tienen estas líneas discontinuas en el almacenamiento vayutsya en una línea horizontal - la forma en que debe ser, cuando cada hilo consume todos los recursos disponibles. No fue posible averiguar las razones de la anomalía: quizás estas son las características de la configuración del programador de tareas en el sistema Elbrus en esa computadora.

7 - Cremallera


La idea de incluir una prueba de archivador incorporada en el programa de prueba maduró después de leer una revisión en CNews en 2014, que también comparó el rendimiento del Core i7-2600 (sin Hyper-Threading, pero con Turbo Boost, aparentemente) y Elbrus-4C, aunque con frecuencia. 700 MHz, así como Elbrus-2C +, que tiene solo dos núcleos y una frecuencia de 500 MHz, pero hay cuatro núcleos más de procesamiento de señal ElCore9 DSP de Elvis (sin embargo, no estuvieron involucrados en esa prueba). A juzgar por los valores dados allí, el autor lanzó " 7z b"Y dividió el resultado por el número de núcleos. Publicamos los resultados en su forma original, y en el diagrama, como medida de la velocidad, se selecciona el número estimado de operaciones de enteros en todos los núcleos por unidad de tiempo (MIPS), y la tabla muestra la velocidad absoluta de procesamiento de datos y la calificación relativa de un núcleo, teniendo en cuenta la carga real del procesador en otro modo de funcionamiento

7-Zip Benchmark

Indicadori7‑2600D2500E2S-800R500 / ER500 / M
compresión, MB / s17'2001'3002'144228247
desembalaje, MB / s211'28224'73838'8943'2272'430
calificación, MIPS18'7811'8232'920269241
calificación del núcleo2'6621'000843263243


Aquí podemos observar cómo el nuevo "Elbrus" casi no va a la zaga de Atom, incluso en modo de un solo subproceso, y el rendimiento total de todos los núcleos supera su rendimiento de manera significativa, una vez y media.

Ambas computadoras basadas en R500 mostraron reticencia a escalar en dos hilos esta vez. Además, por alguna razón, el 7 - Zip en el sistema MSVS no pudo determinar el grado de carga de los núcleos durante el desempaquetado; era necesario tomarlo al 99% por analogía con la compresión y calcular la calificación manualmente.

Openssl


De manera similar a la prueba anterior, la decisión de conducir OpenSSL surgió naturalmente después de un encuentro repetido con tesis como "Los procesadores domésticos son muy efectivos en criptografía, especialmente en algoritmos GOST" (qué implementación de los algoritmos se usa, por desgracia, no se especifica). Las búsquedas de archivos que contienen la palabra " gost " en su nombre han arrojado un resultado bastante modesto:

/usr/include/nettle/gosthash94.h
/usr/include/php/ext/hash/php_hash_gost.h

El OpenSSL 0.9.8zc más común suministrado con el sistema tampoco podía presumir de nada. Por lo tanto, para las pruebas, se eligieron algoritmos más populares de hashing, cifrado simétrico y cálculo de firma digital.

OpenSSL Speed    MD5  OpenSSL Speed    MD5  

OpenSSL Speed    SHA-1  OpenSSL Speed    SHA-1  

OpenSSL Speed    SHA-512  OpenSSL Speed    SHA-512  

Algoritmoi7‑2600D2500E2S-800R500 / ER500 / M
MD5615/3546320/635125/50019/1030/59
SHA-1534/2181192/381165/6586.3 / 1317/34
SHA-512301/1227119/23789/3550.7 / 1.4-

Aquí y abajo están los valores máximos, expresados ​​en megabytes "decimales" por segundo. La fracción indica los resultados cuando se usa un núcleo y todos los núcleos. Un guión significa que este algoritmo no es compatible con la versión normal de OpenSSL: para el antiguo sistema Elbrus es 0.9.8b, para MSVS es 0.9.7b (sí, ¡no somos vulnerables a Heartbleed!).

OpenSSL Speed     RC4   128   OpenSSL Speed     RC4   128   

OpenSSL Speed     AES   CBC  IGE   256   OpenSSL Speed     AES   CBC  IGE   256   

Algoritmoi7‑2600D2500E2S-800R500 / ER500 / M
RC4797/4060202/40161/2465.8 / 1224/12
AES-CBC81/35143/7932/1282.1 / 4.15.1 / 10
AES-IGE78/34120/4043/170--

Mientras que la criptografía simétrica generalmente toma el mismo tiempo para encriptar y desencriptar mensajes de igual volumen (con la posible excepción de los costos de generar el estado inicial), los algoritmos asimétricos manejan datos de un tamaño fijo, pero requieren un conjunto o número de pasos diferente para generar y verificar firma digital Por lo tanto, los resultados adicionales se presentan por separado y se expresan en el número de operaciones por segundo.

Algoritmoi7‑2600D2500E2S-800R500 / ER500 / M
RSA-4096, firma105/47722/116.6 / 270.8 / 1.70.8 / 1.5
Prueba RSA-40966496 / 30'176700/1400453/179056/12649/98
DSA-2048, firma2396 / 11'200267/534157/63420/4018/37
Verificación DSA-20482052/9531220/440136/53417/3415/29
ECDSA-p384, firma4896 / 22'480782/1560273/108555/108-
ECDSA-p384, verificación1135/4994157/31249/19821/10-
Intercambio ECDH-p3841367/6014187/37458/23325/12-

El rendimiento general de Elbrus-4C en estas pruebas también está en el nivel Atom D2500, lo que demuestra una ventaja o un retraso de algoritmo a algoritmo. Los resultados del R500 con el sistema operativo Elbrus se dan para 4 transmisiones: fue en este modo que alcanzó el máximo, sin perder mucho con su hermano bajo el control de MSWS en hashing y encriptación, pero se rehabilitó ligeramente con criptografía asimétrica.

Unixbench


Este conjunto de pruebas sintéticas, que cubre varios aspectos del funcionamiento de la computadora, desde operaciones aritméticas elementales hasta llamadas a sistemas y operaciones de disco, se desarrolló por primera vez a principios de los años 80 y, evolucionando gradualmente, sobrevivió hasta nuestros días, sin perder popularidad como una herramienta multiplataforma evaluación integrada del rendimiento del sistema en general y componentes individuales en particular.

Pruebai7‑2600D2500E2S-800R500 / ER500 / M
Dhrystone 23240 / 13'735595/1190185/73867/13259/118
Wheatstone820/5344171/382126/50527/5223/46
Execl886/5630257/52482/31447/8588/136
Archivo, 1024/20003040/2994451/683287/37344/4737/32
Archivo, 256/5001983/1890307/479185/23234/3430/23
Expediente, 4096/80004273/5664807/1112618/90455/5738/42
Tubo1747/8922419/851209/82459/115107/181
Contexto585/4865214/428175/68851/9962/116
Tenedor1260/4537264/57063/22278/8583/120
Shell, 11968/6990458/703210/55145/65123/183
Shell, 85465/7113670/684490/56268/68166/166
Syscall2978/6584781/1183333/108279/152133/223
total1920/5550403/682203/51952/7666/92

Cabe señalar que en el paquete de software Elbrus 401 - PC había una versión de UnixBench 5.1.2, pero por coherencia, la versión actual 5.1.3 se usó en todas partes, especialmente porque la versión estándar mostró los mismos indicadores (como parte del error de medición).

Pgbench (Postgresql)


Fue difícil omitir el artículo sobre la  aceleración de Postgresql en IBM Power8 , que describió el proceso de optimización del código del programa para esta arquitectura en particular y dio una evaluación positiva del desarrollo del proyecto en su conjunto, sin captar el deseo de verificar hasta qué punto se presenta la técnica más modesta de los fantásticos indicadores de alto rendimiento presentados allí . Otra cosa es que los personales seleccionados para la pruebaLas computadoras no afirman ser un servidor de base de datos serio, no solo porque tienen muchos menos núcleos de procesador y subprocesos de ejecución, sino también menos caché, RAM y un sistema de disco "no". Sin embargo, el volumen de la base de prueba (menos de 0.5 GB) se ajusta al marco de un almacenamiento de datos personales que es apropiado en una computadora personal y, además, cabe completamente en la RAM de la mayoría de las máquinas seleccionadas. Por lo tanto, esta prueba puede considerarse una medida integral de la velocidad de toda la computadora como un todo, que, a diferencia de UnixBench, tiene una naturaleza realista, aunque unilateral, de la carga.

El sistema operativo de la computadora "Elbrus 401 - PC" incorpora Postgresql 9.2.3, y se decidió hacer de esta versión un punto de referencia para todos los demás participantes, sin olvidar las versiones más actuales. Después de copiar el repositorio de desarrolladores a partir del 3 de  diciembre de 2015 , intentamos ensamblar de forma independiente la versión actual, en lo sucesivo denominada "9.6devel", pero incluso en la etapa de configuración resultó que cada arquitectura requiere una implementación específica de plataforma de spinlocks (lo que es, y cómo se diferencia de otros tipos de bloqueos utilizados por Postgresql, se describe en el artículo mencionado anteriormente), y para E2K no está en la línea principal, por supuesto. Como alternativa, puede usar el modo "-‐ deshabilitar-spinlocks " .”Sin embargo, como advierte la documentación, a costa de una caída tangible, aunque no catastrófica, de la productividad. Además, si la versión 9.6devel autoensamblada resultó ser más lenta que la estándar 9.2.3, entonces la versión 9.2.3, que también se recopiló de fuentes públicas, fue incluso más lenta que la versión 9.6. Y el reinicio de la versión estándar 9.2.3 después del final de todas las otras pruebas confirmó que la caída del rendimiento no puede explicarse solo por las características de la unidad SSD (aunque no podría haberlo hecho sin ellas en la prueba combinada de lectura y escritura). Por lo tanto, la conclusión sugiere que los programadores de MCST hicieron las enmiendas necesarias a la versión regular, es decir, realizaron la transferencia completa y, por lo tanto, denotaremos esta versión con el sufijo " e2k ", y la versión autoensamblada sin spinlocks con el sufijo "ds ".

Por el contrario, no surgieron problemas al construir la versión 9.2.3 de fuentes públicas en la plataforma SPARC, ya que es oficialmente compatible. Sin embargo, un intento de consolidar el éxito con la versión 9.6devel falló en la etapa de compilación, ya que las barreras de memoria (un mecanismo para garantizar un orden estricto de las operaciones de memoria en procesadores con ejecución extraordinaria de instrucciones) ahora solo se admiten en SPARC V9. Se produjo el mismo error al crear la versión 9.4.5 (la rama estable principal en ese momento), aunque la documentación aún admite la arquitectura anterior.
La metodología de prueba fue lo más sencilla posible: el DBMS se lanzó con la configuración predeterminada inmediatamente después de la inicialización del repositorio, se creó allí una base de datos de prueba, que se completó con la utilidad Pgbench para 32 flujos paralelos, y luego se ejecutó una serie de inicios Pgbench durante 60 segundos cada uno con un número cambiante de clientes simulados, cada uno de los cuales trabajó en su propio hilo (por lo que los resultados fueron más altos que cuando varios clientes compartieron el mismo hilo). El número de solicitudes transmitidas dentro de cada sesión permaneció predeterminado (10 solicitudes por conexión), y dado que los clientes estaban operando en la misma máquina que el servidor, el tiempo dedicado a establecer conexiones no se tuvo en cuenta.

El escenario de carga principal de Pgbench imita el conjunto de pruebas TPC - B desarrollado por el Data Processing Performance Council en la década de 1990 y consiste en varias consultas para obtener y modificar datos. Obviamente, el cuello de botella en este caso es el subsistema de disco, que no es significativo para nosotros. Por lo tanto, también realizamos pruebas de solo lectura (solo SELECCIONAR), como ya se mencionó, toda la base de datos al mismo tiempo cabe en la RAM; Además, fue este escenario el que utilizaron los autores de los parches para Power8 y sus predecesores del campamento x86‑64 para demostrar sus mejoras.

Pgbench   TPC-BPgbench   SELECT-only

El guióni7‑2600D2500E2S-800R500 / ER500 / M
Tpc-b307/542248/285991/99116/1687/87
SELECCIONAR82'304 / 83'2804076/40768732/8732650/650766/766

La tabla de resultados contiene los indicadores máximos alcanzados, expresados ​​en el número de solicitudes procesadas por segundo: la fracción indica los valores obtenidos con la versión 9.2.3 y en todas las versiones probadas en general. Este máximo generalmente corresponde al número de clientes atendidos en paralelo, igual al número de núcleos de procesador cuando se trata de leer datos solamente; cuando los datos también se escriben en el disco, el máximo se logra con más paralelismo, aparentemente debido al reordenamiento de los comandos por el disco (o la memoria caché del sistema, si la prueba lo permite).

La correlación de los resultados de los primeros tres participantes es bastante esperada: Elbrus 401 - PC estaba por delante de todos en modo mixto debido a su rápida SSD, y esto una vez más recordó que el procesador central no es el único importante para la capacidad de respuesta de la computadora. La imagen durante el muestreo de datos es completamente diferente, pero no se puede dejar de notar que el procesador Elbrus-4C está a la par con el Atom D2500 incluso con el número de hilos dentro del número de núcleos de este último, a pesar de la ventaja de más del doble en frecuencia; aparentemente, la diferencia en la cantidad de caché en el segundo nivel (8 MB frente a 1 MB) juega un papel importante. ¡No ayer, la fórmula de éxito inventada "Mucha memoria y un disco rápido" no pierde su relevancia!

Los resultados fragmentarios de una computadora basada en el R500 con el sistema operativo Elbrus requieren una explicación por separado. Ya sea por falta de RAM o por otras circunstancias, la utilidad Pgbench simplemente dejó de mostrar signos de vida después de ejecutarse en modo de 2 secuencias para escribir o de 3 secuencias para leer. Además, la situación no mejoró incluso con una disminución en el volumen de la base de prueba (debido a una disminución en el parámetro del factor de escala; el resultado se indica mediante una línea de puntos en el diagrama) y, en consecuencia, la aparición de una cantidad suficiente de memoria libre. Sin embargo, lo que es característico es que la pila de llamadas del programa "dormido" tenía el siguiente aspecto:

#0  0x00.... in __lll_lock_wait_private () from /lib/libc.so.6
#1  0x00.... in __lll_lock () from /lib/libc.so.6
#2  0x00.... in free () from /lib/libc.so.6
#3  0x00.... in doCustom ()
#4  0x00.... in main ()

¡Oh, estas cerraduras!

En cuanto al rendimiento deplorable en las pruebas de grabación de esta computadora, sería ingenuo esperar un alto rendimiento de una tarjeta flash.

Al comentar los resultados en su conjunto, se puede observar que una diferencia tan revolucionaria en el rendimiento entre las versiones probadas de Postgresql, que se mostró en el artículo mencionado anteriormente, no fue posible notar en nuestro experimento: aparte de la versión para E2K ensamblada independientemente en una forma no óptima, las diferencias estaban dentro del margen de error mediciones, incluso a una carga mixta, cuando la velocidad del disco duro se predijo estadísticamente deficiente para la duración seleccionada de la prueba.

Además, los planes eran probar el DBMS "Linter VS" (que no debe confundirse con " Linter "), que es nativo de MSVS, aunque no es parte del paquete de software normal , cuya versión  707.3.4 se basa en Postgresql 8.4.3 con extensiones originales para admitir obligatoriamente control de acceso. Sin embargo, la utilidad opcional Pgbench no está incluida en el paquete de entrega de este producto, y una versión autoensamblada de códigos de fuente públicos resultó ser incompatible con el modelo de derechos y privilegios utilizado.

LCC, GCC


La creación de Postgresql resultó ser un buen punto de referencia en sí mismo: este no es un proyecto muy pequeño, por lo que la configuración y la compilación parpadean en la pantalla en poco tiempo, pero al mismo tiempo no es demasiado grande para que el proceso se prolongue durante mucho tiempo o falle debido a la falta de dependencias o plataforma incompatibilidades El único inconveniente desde el punto de vista de las pruebas exhaustivas es que Postgresql está escrito completamente en C: no hay un solo módulo en C ++.

Se midió el tiempo total de compilación de la versión 9.2.3 en modo multiproceso con varios niveles de optimización: los resultados que se muestran en la tabla se expresan en horas, minutos y segundos según el tiempo astronómico, y el tiempo total del procesador del usuario en todos los hilos se muestra entre paréntesis (los costos del sistema son relativamente pequeños y es muy probable que estén asociados con la E / S de archivos, lo que no es muy interesante para nosotros en este contexto). El tiempo para configurar el ensamblaje no se tuvo en cuenta: aunque puede ser significativo e incluso comparable al tiempo de compilación, la configuración generalmente se realiza solo una vez en una etapa particular del proyecto, mientras que el compilador a menudo se activa cuando se realizan cambios. Además, ten en cuentaque al compilar una versión estable con la configuración predeterminada, no se compilan utilidades opcionales como Pgbench, en lugar de compilar la versión actual desde el repositorio.

i7‑2600D2500E2S-800R500/ER500/M
-O00:00:17 (0:01:15)0:03:00 (0:05:08)0:02:00 (0:06:17)0:25:51 (0:42:09)0:14:18 (0:23:53)
-O10:00:24 (0:02:12)0:04:31 (0:07:56)0:05:25 (0:15:18)1:33:35 (2:02:02)0:19:14 (0:33:10)
-O20:00:32 (0:03:01)0:06:02 (0:10:47)0:13:12 (0:34:50)1:38:30 (2:46:51)0:27:31 (0:46:57)
-O30:00:38 (0:03:37)0:07:02 (0:12:41)0:33:04 (1:22:04)2:17:38 (4:05:42)0:30:20 (0:51:40)

Estos resultados demuestran solo qué tan rápido se compilará una versión particular de un proyecto particular con la configuración predeterminada: una versión específica del compilador a tiempo completo en una plataforma particular. Los representantes de la arquitectura x86‑64 usaron el compilador GCC 4.8.3 y 4.7.2, respectivamente, una computadora que ejecutaba MSWS usó GCC 3.3.6 para la arquitectura SPARC, y los participantes con el sistema operativo Elbrus tenían LCC 1.16.12 y 1.19.18, respectivamente Además, el compilador optimizador LCC para la arquitectura SPARC y para la arquitectura E2K son dos compiladores completamente diferentes que realizan una cantidad diferente de trabajo y producen un código de rendimiento diferente. Por lo tanto, una comparación directa es imposible aquí, y no se pueden sacar conclusiones sobre la velocidad del equipo en función de los resultados de esta prueba. Otra cosaque sería bueno investigar la efectividad de las optimizaciones, pero para esto necesitamos una calificación notable, para que no resulte quemedimos la tasa de incremento y sacamos conclusiones basadas en esta escala cósmica.

Java Micro Benchmark


Teniendo una idea muy vaga de Java, el autor decidió probar todos los resultados de Google en orden, y lo primero que hizo fue mirar este proyecto, que resultó ser bastante compacto y fácil de ejecutar. Implementa estimaciones básicas del rendimiento del procesador y del disco duro, que también se combinan en los escenarios "Escritorio" y "Servidor": el primero crea una carga de manera más consistente y el segundo intenta asumir muchas tareas al mismo tiempo.

El guióni7‑2600D2500E2S-800
CPU, millones3927196356
Disco2546164126
Escritorio3238181241
Servidor7568378405

Si no presta atención a la evaluación del rendimiento del disco, los resultados parecen plausibles: la relación aproximada de 10: 1 entre Core i7 y Elbrus-4C, observada en otras pruebas (con aplicaciones nativas), también es visible aquí, y hay una mayor diferencia en el escenario "Servidor" ”Podría explicarse por las características de la carga o las propiedades objetivas de las plataformas de prueba. Sin embargo, la misma proporción de la velocidad de las operaciones de archivo, a pesar de que la computadora Elbrus 401 - PC está equipada con un SSD rápido, y el resto de las computadoras tienen discos regulares de nivel de entrada, hace dudar de la idoneidad de la prueba en sí o de la fórmula de cálculo de la calificación. De hecho, mirando el registro detallado de la secuencia de comandos de disco, puede ver que la velocidad de lectura del disco duro Seagate Barracuda 7200.9 supuestamente asciende a 325 MB / s en cada una de las dos transmisiones en el Atom D2500, y la velocidad de lectura de WD Caviar Blue generalmente da miedo: 1650 MB / s en cada una de las ocho transmisiones en el Core i7. Dichos indicadores exceden la velocidad de la interfaz SATA - 2 a través de la cual se conectan los discos y, por lo tanto, ni siquiera pueden reflejar la velocidad de acceso al búfer de disco, excepto quizás a la memoria caché del sistema.

Pruebas posteriores mostrarán que la evaluación del rendimiento del procesador en Java Micro Benchmark, aparentemente, se implementa incorrectamente. Este caso nos recuerda una vez más que escribir los puntos de referencia correctos no es tan fácil, y creer ciegamente que el primero en llegar, sin consultar con otras fuentes, sería un error.

Speckjvm


La Standardized Performance Assessment Corporation (SPEC), el desarrollador de la CPU SPEC de referencia y muchos otros, parece no necesitar presentación, y la profesionalidad de sus programadores está fuera de toda duda. Por lo general, sus productos cuestan mucho dinero, pero para SPECjvm98 y SPECjvm2008 hicieron una excepción y la distribuyeron de forma totalmente gratuita: era un pecado no usarlo.

Pruebai7‑2600D2500E2S-800
compilador533,1134,244,54
comprimir292,9421,482,74
cripto269,8719,143.10
derby427,7724,855.00
mpegaudio184,7912,482,29
scimark.large45,885.461.13
scimark.small414,4220,434.02
serial207.0513,861,45
inicio32,315.190,69
flujo solar110,516.850,89
xml621,6636,765.25
total206,5015,032,30

Ahora la relación entre Core i7 y Elbrus-4C es de aproximadamente 100: 1, y en todas las pruebas por unanimidad, sin excepción. ¡Bueno, el Elbrus de 4 núcleos aquí está irremediablemente detrás incluso del Atom de 2 núcleos! Teniendo en cuenta la experiencia anterior sin éxito de la evaluación comparativa de Java, fue difícil creer en este resultado: parece que la carga va solo al procesador y la memoria, y la imagen es muy diferente de los programas nativos.

La hipótesis de que Core i7 se beneficia del uso de la versión más reciente de Java - 1.7.0, mientras que Elbrus solo tiene 1.6.0 a su disposición - fue refutada probando la misma versión 1.6.0 en Atom; sin embargo, la JVM en el último caso fue la versión 23.25 versus 20.0 (el autor no sabe qué tan importante es esto). También se verificó el supuesto de que demasiada memoria asignada para Java es tan mala como demasiado pequeña: de acuerdo exactamente con la documentación, se asignaron 512 MB por núcleo, pero el resultado solo oscilaba dentro del margen de error en comparación con cuando destacó el doble, y cuando cuatro veces.

Repetimos, no hay necesidad de dudar de las calificaciones de los desarrolladores de la prueba: al menos saben que "Java es tan grave que necesita ser calentado antes del lanzamiento", esta preparación dura 2 minutos para cada prueba, que no se encontró en ninguna otra revisión de Java punto de referencia Parece que el calentamiento no tiene ningún efecto, y la máquina virtual continúa interpretando el pseudocódigo, en lugar de traducirlo a las instrucciones de la máquina.

Aunque, para ser sincero, al principio aún surgió cierta desconfianza cuando resultó que la prueba no es compatible con las versiones más recientes de Java, como 1.8.0, y que los diagramas de resultados de la prueba se guardan en formato JPEG. Pero investigaciones posteriores mostraron que el rendimiento de Java aparentemente es realmente lo que es.

Actualización a partir del 5 de febrero de 2016.Para finalmente confirmar o refutar la hipótesis de que no hay transmisión binaria en Elbrus, intentamos prohibir su uso en una computadora con Core i7 en los comentarios, pasando el parámetro adicional " -Djava.compiler = NINGUNO " a la máquina virtual . Desgraciadamente, esto hizo imposible el benchmark SPECjvm, porque la serie de pruebas del compilador es una parte integral de él. El proceso simplemente se congela en la primera ejecución (prueba): la carga en el procesador central cae a cero, y no sucede nada en 12 horas, mientras que en modo normal se tarda 2 horas en completar toda la prueba.

Scimark


Esta prueba se usa como parte de SPECjvm2008, pero es conocida en sí misma. El sitio web de los autores sugiere iniciar SciMark 2.0 directamente en el navegador como un applet, pero se advierte que este método puede estar asociado con alguna degradación del rendimiento. Por lo tanto, y también porque Firefox en el sistema Elbrus no tiene un complemento correspondiente, elegimos la versión de consola de la prueba.

Tamaño de la tareai7‑2600D2500E2S-800
predeterminado, total1715.45 / 76.60206,0617,92
FFT (1K)996,14 / 23,80123,8516,89
SOR (100)1435,35 / 153,27375,4832,87
Monte carlo745,65 / 15,9297,124.24
Matmult escaso (1000, 5000)1579.66 / 85.78206,6115,15
LU (100)3820.45 / 104.22227,2520,44
grande, total1562.90 / 78.49176,9014,65
FFT (1M)171,20 / 21,6926,689.11
SOR (1000)1314.13 / 151.12365,3328,46
Monte carlo745,40 / 16,0395,944.25
Matmult escaso (100k, 1M)1329.01 / 90.91180,8513,26
LU (1000)4254.75 / 112.73215,6818,20

Como puede ver, la diferencia fundamental de dos órdenes de magnitud se manifiesta en esta prueba. Pero también debe tenerse en cuenta que esta prueba se realiza de forma independiente solo en modo de subproceso único, en contraste con el trabajo como parte de SPECjvm. Además, la duración de la ejecución de la prueba es mucho más corta, y esto nos permitió experimentar con los parámetros de JVM: ejecutar con una indicación explícita del modo clienteservidor , establecer el inicio y la cantidad máxima de memoria asignada; todo esto no afectó el resultado de ninguna manera.

Actualización a partir del 5 de febrero de 2016.Para Core i7, después de la fracción, también se indican los resultados obtenidos con la transmisión desactivada. Es fácil ver que el equilibrio de fuerzas en este caso cambia al habitual 4: 1 - 6: 1. Esto significa que la razón de la baja productividad de Java en la plataforma Elbrus realmente radica en el hecho de que el código de bytes siempre es interpretado por la máquina virtual y no traducido a las instrucciones de la máquina del procesador, según sea necesario.

Java linpack


De hecho, esta prueba en particular se probó primero, gracias a la palabra familiar "Linpack" en el título. Sin embargo, la versión encontrada era de 1997, no sabía cómo distribuir la carga entre los núcleos del procesador y tenía valores de parámetros codificados relevantes para ese período "prehistórico", como resultado de lo cual la duración de la ejecución se calculó en fracciones de un segundo máximo. Por lo tanto, este programa parecía inútil y ni siquiera vale la pena mencionarlo. Pero los resultados conflictivos de otras pruebas nos obligaron a reconsiderar el veredicto y tener en cuenta al menos dicha evidencia. Al menos para aumentar de alguna manera la importancia estadística, simplemente promediamos las lecturas de 100 lanzamientos (de hecho, las fluctuaciones graves solo se produjeron en el Core i7; parece que la granularidad de la medición del tiempo fue insuficiente para capturar claramente intervalos tan pequeños).

Indicadori7‑2600D2500E2S-800
MFLOPS236,33 / 70,4414,692,25

Estos resultados finalmente nos convencieron de que Java en la forma en que ahora está disponible en Elbrus solo es adecuado para escribir una interfaz de usuario u otras cosas mínimamente relacionadas con el rendimiento de la computadora: por ejemplo, la GUI del instalador SPECjvm se comportó de manera bastante responsable.

Actualización a partir del 5 de febrero de 2016. Para Core i7, después de la fracción, también se indica el resultado obtenido con una interpretación forzada. La relación sigue siendo muy grande (30: 1), pero no olvide que esta prueba no puede considerarse precisa debido a la frívola duración.

SunSpider, JetStream, Peacekeeper


Después de comparar Java, el siguiente paso lógico fue probar el rendimiento de JavaScript, especialmente porque esta tecnología es mucho más común en la vida de un usuario típico, a menos que se haya bloqueado completamente el acceso a casi todos los sitios web en Internet. Sin embargo, aquí fallamos. Cuando se lanzó en Elbrus, la prueba de SunSpider inmediatamente después del calentamiento produjo una tabla de resultados, donde se indicaba enfrente de cada escenario que se había estrellado. Su sucesor recomendado, JetStream, se colocó en el medio de la primera de las tres ejecuciones. La prueba Futuremark Peacekeeper también esencialmente dejó de hacer nada cuando se trataba de procesar fotos en paralelo. Por lo tanto, estamos publicando resultados parciales de JetStream,para tener al menos una idea del nivel de rendimiento de los scripts en el navegador.

i7‑2600D2500E2S-800
Latency80,4512,80
3d-cube45,737,080,74
3d-raytrace64,407,111,17
base6450,2212,110,83
cdjs60,2912,70/
code-first-load78,5913,875,55
code-multi-load77,0312,964,73
crypto-aes66,6711,971,20
crypto-md572,2911,580,71
crypto-sha163,7810,040,50
date-format-tofte100,6015,611,84
date-format-xparb70,159,901,79
mandreel-latency145,8010,16
n-body107,8014,770,33
regex-dna108,3027,950,50
splay-latency294,3054,033,57
tagcloud77,2811,091,63
typescript59,169,251,86
Throughput244,1636,68
bigfib.cpp246,6048,82
mandreel219,4023,81NaN
splay195,2031,150,70
Geometric Mean150,4723,18

Al comparar los resultados de diferentes participantes, debe recordarse que aunque Firefox es una aplicación multiproceso, los scripts de una página se ejecutan en un hilo. Además, Elbrus se probó con Firefox 3.6.28 estándar, mientras que otras computadoras tenían una versión de navegador moderna (38.5.0 y 42.0.0) con un motor de JavaScript optimizado. Sin embargo, dicho duelo no se puede llamar injusto, ya que es poco probable que obtenga una versión más actualizada del navegador en la plataforma Elbrus, a menos que lo construya usted mismo, pero esta tarea claramente no es para el usuario promedio, dado el tamaño del proyecto y la compleja cadena de sus dependencias.

Mplayer


El reproductor multimedia en el sistema operativo Elbrus no está completamente ausente, lo está, pero solo con una interfaz de línea de comando, y por lo tanto no se menciona en el menú del entorno gráfico. La versión mplayer 1.1 podía, en modo puramente de programa, sin la ayuda de un acelerador de hardware de una tarjeta de video, reproducir material dinámico de calidad Full HD codificado en formato MPEG - 4.10 (AVC). Es cierto que para esto era necesario especificar el parámetro -lavdopts threads = 4 al iniciar el reproductorpara decodificar para usar todos los núcleos. Dos transmisiones no fueron suficientes: a veces el video "se ralentizó". En el modo de subproceso único, ya comenzaba a parecer un disparo en cámara lenta: mplayer emitió casi de inmediato una advertencia de que el sistema era débil y no podía hacer frente. Pero para reproducir video de definición normal (SD), la potencia de un núcleo es más que suficiente: la carga suele ser del 10%.

Inicialmente, planeamos ilustrar cuantitativamente el comportamiento anterior con las estadísticas de mplayer resultantes con la opción -benchmarkSin embargo, los valores mostrados parecían, por decirlo suavemente, extraños. Por ejemplo, en modo de subproceso único, Elbrus-4C gasta casi el 98% del núcleo en decodificar pistas de video Full HD; las migajas restantes van a decodificar el sonido y enviar todo esto a la pantalla y a la tarjeta de audio. Cuando se usan 2 transmisiones, mplayer informa un costo total del 85%, y cuando 4 transmisiones, luego el 15%. Incluso si estos indicadores deben multiplicarse por el número de subprocesos, algo claramente no está convergiendo aquí. Por lo tanto, debe limitarse a las impresiones verbales: reproducir video HD no es un problema para el nuevo Elbrus. Y este es realmente un gran progreso en el contexto de la R500, que junto con el adaptador MGA en nuestros experimentos anteriores apenas logró 352 × 288 MJPEG a una velocidad de 8–9 fotogramas por segundo.

En casos extremos, el paquete de software incluye un convertidor FFmpeg 1.0, que le permite convertir video de un formato a otro: cambiar el tipo de contenedor, comprimirlo con otro códec, etc.

FIO, DD


El sentido de medir el rendimiento de E / S del disco, como ya se mencionó, no lo hemos visto. En primer lugar, porque las unidades de la serie Kingston SSDNow mS200 aún no han sido probadas solo por las vagas. En segundo lugar, porque hacerlo bien no es tan simple y el resultado seguirá siendo mixto. Y el hecho de que el nuevo Elbrus no tenía problemas muy fatales con el controlador de disco estaba claro. Solo para asegurarnos de esto, lanzamos la utilidad fio 2.3 para leer con un tamaño de bloque grande (16 MB era suficiente para la saturación) y obtuvimos un pico al nivel de 185 MB / s. Para la prueba, las grabaciones de datos bien comprimibles utilizaron un simple

dd if = / dev / zero of = myfile oflag = direct bs = 16M count = 64

y obtuve el resultado 63 MB / s. La velocidad de grabación de datos incompresibles (video) por el mismo método fue de 34 MB / s. Sí, esto es mucho menos que lo mencionado en estudios de terceros de este modelo de unidad, pero para las tareas cotidianas realizadas en esta computadora, sin duda será suficiente. Cuáles son las razones de este comportamiento es otra pregunta, ya que es imposible explicar todo con las limitaciones de la interfaz SATA - 2 sola, y la carga del procesador no supera el 10-15%.

iPerf


Tampoco es posible evaluar inequívocamente el rendimiento del subsistema de red, y nuevamente nos contentamos con medir simplemente el rendimiento máximo, utilizando iPerf 3.1.1. El socio en este negocio para Elbrus 401 - PC fue la computadora descrita anteriormente basada en Core i7 con un controlador de red Intel 82579LM integrado que se ejecuta bajo openSUSE 13.2; las computadoras fueron cableadas directamente. La configuración de IPerf para TCP permaneció por defecto, y para UDP se utilizó un búfer de 60 KB.

DirecciónTCPUDP
envío, Mbps725820
recibir, Mbps665n / a

No fue posible verificar UDP para la entrada, ya que openSUSE, ubicado en el extremo opuesto del cable, tradicionalmente limita la banda de salida UDP a 10 Mbps, independientemente de la velocidad de la interfaz; Como vemos, el sistema operativo Elbrus no tiene tales restricciones ocultas.

Conclusiones


Los procesadores de arquitectura Elbrus-2000 (E2K) tienen una organización original que permite paralelizar la carga entre los dispositivos ejecutivos de cada núcleo en la etapa de compilación de programas. Esta característica es tanto sus fortalezas como sus debilidades, porque rara vez es posible poner en práctica una base teórica prometedora, especialmente cuando se trata de programas de propósito general que no están optimizados específicamente para Elbrus. Además, la optimización estática no tiene poder cuando se enfrenta a lenguajes de programación dinámicos.

Otra característica distintiva del E2K es la tecnología integrada para la ejecución segura de programas, debido al control de hardware duro de acceder a la memoria que revela errores típicos cuando se utilizan punteros y administración manual de memoria. Si cree en la descripción, esto es solo una panacea, al mismo tiempo cura sus programas de casi todos los males del manejo descuidado de la memoria, más precisamente, lo ayuda a encontrar todas esas áreas problemáticas incluso en la etapa de desarrollo, y no después de ponerlo en operación comercial.

El fabricante también declara la posibilidad de ejecutar programas compilados para la arquitectura x86 / x86‑64 directamente "sobre la marcha" a través de la traducción binaria, lo que promete amplias posibilidades para usar sistemas operativos populares (Windows, * nix) y toda la variedad de programas de aplicaciones abiertas y cerradas código fuente Es una pena que no hayamos podido probar esta funcionalidad; aunque, si recuerda todos los problemas de seguridad que x86 trae consigo, debería preguntar cómo bloquear esta compatibilidad transparente de una vez por todas.

El rendimiento total de los cuatro núcleos del procesador Elbrus-4C, que funciona a 800 MHz, corresponde aproximadamente al del Intel Atom D2500 de doble núcleo a un poco más del doble de la frecuencia (1866 MHz), en cualquier caso con la naturaleza de la carga que se probó. nosotros programas Sin embargo, en la vida cotidiana, las tareas de subproceso único generalmente prevalecen y, por lo tanto, muchos núcleos lentos le darán al usuario la impresión de un sistema menos receptivo. Es prematuro soñar con videojuegos dinámicos en una computadora así, aunque los experimentos para lanzar Doom 3 parecen haber tenido éxito. También es posible reproducir películas Full HD, pero en ausencia de aceleración de hardware, toda la carga recae en el procesador central. Sin embargo, para el trabajo de oficina, la capacidad disponible es suficiente en exceso; Además, como hemos visto,la comodidad no está establecida por un solo procesador. Y solo la versión antediluviana del navegador web es desconcertante, porque pocos sitios en Internet son compatibles con esta reliquia.

No tuvimos quejas serias sobre la composición de componentes de la computadora Elbrus 401 - PC, porque los componentes se seleccionaron principalmente como dignos. Más bien, me gustaría tener más libertad para configurar el pedido, hasta la completa exclusión de todo lo que es innecesario para un cliente en particular. No dañaría la capacidad de instalar el sistema operativo por su cuenta, marcando el disco de acuerdo con sus preferencias.

En resumen, al autor realmente le gustó el nuevo "Elbrus", especialmente en comparación con lo que la industria informática rusa podría ofrecer antes. Sí, incluso si no es Core i7 (o Xeon E7, para ser precisos), incluso la gran corporación de AMD con sus miles de millones de presupuestos de investigación y producción aún no puede superar ni superar a Intel. Sí, deje que el precio "muerda" por el momento, asustando a los consumidores comunes e incluso a los negocios; ahora solo un gran optimista puede soñar con conquistar el mercado civil. Pero el progreso ya es visible, especialmente desde que el "Elbrus-8C" apareció claramente en el horizonte, que tiene más núcleos, más megahercios y, me gustaría creer, por menos de dólares. Esperamos que algún día tengamos la oportunidad de escribir un artículo sobre él, y aún mejor si otros propietarios de equipos domésticos comienzan a compartir su experiencia.La plataforma solo entonces tiene la oportunidad de convertirse en masa cuando aprende a abrirse.

Post scriptum


Hoy, 02/09/2016, un representante de la compañía MCST nos llamó por teléfono y se ofreció a trabajar juntos para eliminar los "puntos oscuros", en particular, para comprender la tecnología de traducción binaria del código x86, para investigar el rendimiento de la nueva versión de la máquina Java, para seleccionar puntos de referencia adicionales para demostrar las fortalezas de Elbrus ", Así como realizar pruebas exhaustivas con la participación de otras muestras de equipos patentados. Hasta ahora, este es un acuerdo preliminar, por lo que es demasiado pronto para hacer predicciones sobre en qué podría convertirse esta empresa, pero no esperamos adiciones fragmentarias al material actual, sino un nuevo artículo o incluso una serie de artículos, dependiendo de cuánto material se tipee. Tenga paciencia: todo esto está destinado precisamente a efectos de publicación.

Actualización a partir del 3 de marzo de 2016.El primer resultado de la colaboración es " Anexo a la revisión: preguntas y respuestas ".

Source: https://habr.com/ru/post/es390099/


All Articles