Benchmarks para servidores en Linux: recopilación de herramientas de código abierto

Continuamos hablando sobre herramientas para evaluar el rendimiento de la CPU en máquinas Linux. Hoy en el material: temci, uarch-bench, likwid, perf-tools y llvm-mca.

Más benchmarks:

Benchmarks para servidores en Linux: recopilación de herramientas de código abierto
Foto — Lukas Blazek — Unsplash

temci

Esta es una herramienta para evaluar el tiempo de ejecución de dos programas. En esencia, permite comparar el tiempo de ejecución de dos aplicaciones. El autor de la utilidad es un estudiante de Alemania, Johannes Bechberger, quien la desarrolló como parte de su trabajo de licenciatura en 2016. Hoy en día, la herramienta se distribuye bajo la licencia GNU General Public License.

Johannes quería crear una herramienta que permitiera medir el rendimiento del sistema computacional en un entorno controlado. Por eso, una de las características principales de temci es la capacidad de configurar el entorno de prueba. Por ejemplo, en: cambiar la configuración del controlador de frecuencia de la CPU, deshabilitar hyper-threading y las cachés L1 y L2, desactivar el modo turbo en procesadores Intel, entre otros. Para el benchmarking, temci utiliza herramientas time, perf_stat y getrusage.

Así es como se ve el funcionamiento de la utilidad en el primer caso:

# compare the run times of two programs, running them each 20 times
> temci short exec "sleep 0.1" "sleep 0.2" --runs 20
Benchmark 20 times                [####################################]  100%
Report for single runs
sleep 0.1            (   20 single benchmarks)
     avg_mem_usage mean =           0.000, deviation =   0.0
     avg_res_set   mean =           0.000, deviation =   0.0
     etime         mean =      100.00000m, deviation = 0.00000%
     max_res_set   mean =         2.1800k, deviation = 3.86455%
     stime         mean =           0.000, deviation =   0.0
     utime         mean =           0.000, deviation =   0.0

sleep 0.2            (   20 single benchmarks)
     avg_mem_usage mean =           0.000, deviation =   0.0
     avg_res_set   mean =           0.000, deviation =   0.0
     etime         mean =      200.00000m, deviation = 0.00000%
     max_res_set   mean =         2.1968k, deviation = 3.82530%
     stime         mean =           0.000, deviation =   0.0
     utime         mean =           0.000, deviation =   0.0

Según los resultados del benchmarking, el sistema genera un informe conveniente con diagramas, tablas y gráficos, lo que diferencia a temci de soluciones similares.

Entre las desventajas de temci se destaca su "juventud". Debido a esto, no admite todas las configuraciones de hardware y software. Por ejemplo, es difícil de ejecutar en macOS, y en sistemas con procesadores ARM algunas funciones no están disponibles. En el futuro, la situación podría cambiar, ya que el autor está desarrollando el proyecto activamente, y el número de estrellas en GitHub está aumentando gradualmente; no hace mucho, temci incluso fue discutido en los comentarios en Hacker News.

uarch-bench

Una utilidad para evaluar el rendimiento de funciones de bajo nivel de la CPU, desarrollada por el ingeniero Travis Downs. (Travis Downs). Recientemente, él ha estado escribiendo en su blog Performance Matters en GitHub Pages, donde habla sobre herramientas de benchmarking y otras cosas relacionadas. En general, uarch-bench apenas está comenzando a ganar popularidad, pero ya es bastante mencionado mencionado por los residentes de Hacker News en hilos temáticos como la herramienta preferida para benchmarking.

Uarch-bench permite evaluar el rendimiento de la memoria, la velocidad de carga paralela de datos y el trabajo con la limpieza de los registros YMM.. Los resultados de los benchmarks generados por el programa se pueden encontrar en el repositorio oficial al final de la página.

Cabe destacar que uarch-bench, al igual que temci, desactiva la función Intel Turbo Boost (que aumenta automáticamente la frecuencia del procesador bajo carga) para que los resultados de las pruebas sean consistentes.

Por ahora, el proyecto se encuentra en las primeras etapas de desarrollo, por lo que uarch-bench no cuenta con documentación detallada y puede haber errores en su funcionamiento — por ejemplo, se conocen dificultades con el arranque en Ryzen. Además, solo se admiten benchmarks para arquitecturas x86. El autor promete agregar más funcionalidad en el futuro e invita a unirse al desarrollo.

likwid

Es un conjunto de herramientas para evaluar el rendimiento de máquinas Linux con procesadores Intel, AMD y ARMv8. Fue creado bajo la égida del Ministerio Federal de Educación e Investigación de Alemania en 2017 y se entregó al open source.

Entre las herramientas de likwid se destaca likwid-powermeter, que muestra información de los registros RAPL sobre la potencia consumida por el sistema, así como likwid-setFrequencies — que permite controlar la frecuencia del procesador. La lista completa se puede encontrar en el repositorio.

El instrumento es utilizado por ingenieros que realizan investigaciones en el campo de HPC. Por ejemplo, el grupo de especialistas del Centro de Cálculo Regional de la Universidad de Erlangen-Núremberg (RRZE) en Alemania. También participa activamente en el desarrollo de este conjunto de herramientas. está trabajando perf-tools

Benchmarks para servidores en Linux: recopilación de herramientas de código abierto
Foto — Clem Onojeghuo — Unsplash

Esta herramienta para el análisis del rendimiento de servidores Linux

es obra de Brendan Gregg. Él es uno de los desarrolladores presentó del marco de trazado dinámico para depuración de aplicaciones en tiempo real. DTrace En la base de perf-tools están las subsistemas del núcleo perf_events y ftrace. Sus utilidades permiten analizar la latencia de entrada/salida (iosnoop), rastrear los argumentos de las llamadas al sistema (unccount, funcslower, funcgraph y functrace) y recopilar estadísticas de 'aciertos' en la caché de archivos (cachestat). En este último caso, el comando es el siguiente:

Alrededor de la herramienta se ha formado una comunidad bastante amplia (

# ./cachestat -t
Counting cache functions... Output every 1 seconds.
TIME HITS MISSES DIRTIES RATIO BUFFERS_MB CACHE_MB
08:28:57 415 0 0 100.0% 1 191
08:28:58 411 0 0 100.0% 1 191
08:28:59 362 97 0 78.9% 0 8
08:29:00 411 0 0 100.0% 0 9

casi 6 mil estrellas en GitHub). Y hay empresas que utilizan activamente perf-tools, como por ejemplo). Y hay empresas que utilizan activamente perf-tools, por ejemplo Netflix. Pero la herramienta continúa siendo mejorada y modificada (aunque últimamente las actualizaciones son bastante raras). Por lo tanto, pueden surgir errores en su funcionamiento; el autor menciona que a veces perf-tools provoca un kernel panic.

llvm-mca

Una utilidad que pronostica cuántos recursos computacionales requerirá el código máquina en diferentes CPU. Ella evalúa Instrucciones Por Ciclo (IPC) y la carga en el hardware que genera cada aplicación.

llvm-mca fue presentado en 2018 como parte del proyecto LLVM, que se dedica al desarrollo de un sistema universal para el análisis, transformación y optimización de programas. Se sabe que los autores de llvm-mca se inspiraron en la solución para análisis de rendimiento de software IACA de Intel y buscaban crear su alternativa. Y según los usuarios, los resultados de la herramienta (su formato y cantidad) realmente recuerdan a IACA — un ejemplo se puede encontrar aquí. Sin embargo, llvm-mca solo acepta la sintaxis AT&T, por lo que probablemente necesitarás usar convertidores para trabajar con ella.

De qué hablamos en nuestros blogs y redes sociales:

Benchmarks para servidores en Linux: recopilación de herramientas de código abierto «Modelo matemático de Wall Street» o cómo optimizar costos en la nube

Benchmarks para servidores en Linux: recopilación de herramientas de código abierto Cómo asegurar un sistema Linux: 10 consejos
Benchmarks para servidores en Linux: recopilación de herramientas de código abierto Minimización de riesgos: cómo no perder tus datos

Benchmarks para servidores en Linux: recopilación de herramientas de código abierto Libros para quienes ya están en la administración de sistemas o planean comenzar
Benchmarks para servidores en Linux: recopilación de herramientas de código abierto Selección: cinco libros y un curso sobre redes

Benchmarks para servidores en Linux: recopilación de herramientas de código abiertoEn 1cloud.ru ofrecemos un servicio gratuito de «DNS-hosting». Puedes gestionar los registros DNS desde un panel de control único.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster