estrés-ng (estrés de próxima generación)
Stress-ng probará un sistema informático de varias formas seleccionables. Fue diseñado para ejercitar varios subsistemas físicos de una computadora, así como las diversas interfaces del núcleo del sistema operativo. Características estresantes:
- Más de 350 pruebas de estrés
- Más de 80 pruebas de esfuerzo específicas de CPU que ejercitan punto flotante, entero, manipulación de bits y control de flujo
- Más de 20 pruebas de estrés de memoria virtual
- Más de 40 pruebas de estrés del sistema de archivos
- Más de 30 pruebas de estrés de caché de memoria/CPU
- portátil: se basa en Linux (Debian, Devuan, RHEL, Fedora, Centos, Slackware OpenSUSE, Ubuntu, etc.), Solaris, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Minix, Android, MacOS X, Serenity OS, GNU/Hurd, Haiku, Subsistema de Windows para Linux, Cygwin y SunOs/Dilos/Solaris. con gcc, musl-gcc, clang, icc, icx, tcc y pcc.
- probado en alfa, armel, armhf, arm64, hppa, i386, loong64, m68k, mips32, mips64, power32, ppc64el, risc-v, sh4, s390x, sparc64, x86-64
Stress-ng originalmente tenía como objetivo hacer que una máquina trabajara duro y provocara problemas de hardware, como excesos térmicos y errores del sistema operativo que solo ocurren cuando un sistema está siendo golpeado con fuerza. Utilice Stress-ng con precaución, ya que algunas de las pruebas pueden hacer que un sistema se caliente en hardware mal diseñado y también pueden causar una excesiva paliza del sistema que puede ser difícil de detener.
Stress-ng también puede medir las tasas de rendimiento de las pruebas; Esto puede resultar útil para observar cambios de rendimiento en diferentes versiones de sistemas operativos o tipos de hardware. Sin embargo, nunca se pretendió utilizarlo como un conjunto de pruebas de referencia preciso, por lo que NO lo utilice de esta manera.
La ejecución de stress-ng con privilegios de root ajustará la configuración de falta de memoria en los sistemas Linux para hacer que los factores estresantes no se puedan eliminar en situaciones de poca memoria, así que use esto con prudencia. Con el privilegio adecuado, estresar puede permitir ajustar la clase de ionice y los niveles de ionice; nuevamente, esto debe usarse con cuidado.
bolas de tar
Los archivos tar de cada versión de stress-ng se pueden descargar usando la URL:
https://github.com/ColinIanKing/stress-ng/tarball/version
donde versión es el número de versión relevante, por ejemplo:
https://github.com/ColinIanKing/stress-ng/tarball/V0.13.05
Ejecutando la última instantánea de estrés-ng en un contenedor
docker run --rm ghcr.io/colinianking/stress-ng --help
o
docker run --rm colinianking/stress-ng --help
Paquetes de Debian para Ubuntu
Versiones recientes de estrés-ng están disponibles en el ppa estrés-ng de Ubuntu para varias versiones de Ubuntu:
https://launchpad.net/~colin-king/+archive/ubuntu/stress-ng
sudo add-apt-repository ppa:colin-king/stress-ng
sudo apt update
sudo apt install stress-ng
Construyendo estrés
Para compilar, las siguientes bibliotecas garantizarán una compilación de estrés completamente funcional: (tenga en cuenta que libattr no es necesario para las versiones más recientes de disto).
Debian, Ubuntu:
- gcc g++ libacl1-dev libaio-dev libapparmor-dev libatomic1 libattr1-dev libbsd-dev libcap-dev libeigen3-dev libgbm-dev libcrypt-dev libglvnd-dev libipsec-mb-dev libjpeg-dev libjudy-dev libkeyutils-dev libkmod-dev libmd-dev libmpfr-dev libsctp-dev libxxhash-dev zlib1g-dev
RHEL, Fedora, Centos:
- gcc g++ eigen3-devel Judy-devel keyutils-libs-devel kmod-devel libacl-devel libaio-devel libatomic libattr-devel libbsd-devel libcap-devel libgbm-devel libcrypt-devel libglvnd-core-devel libglvnd-devel libjpeg-devel libmd -desarrollar mpfr-devel libX11-devel libXau-devel libxcb-devel lksctp-tools-devel xorg-x11-proto-devel xxhash-devel zlib-devel
RHEL, Fedora, Centos (compilaciones estáticas):
- gcc g++ eigen3-devel glibc-static Judy-devel keyutils-libs-devel libacl-devel libaio-devel libatomic-static libattr-devel libbsd-devel libcap-devel libgbm-devel libcrypt-devel libglvnd-core-devel libglvnd-devel libjpeg- desarrollo libmd-devel libX11-devel libXau-devel libxcb-devel lksctp-tools-devel mpfr-devel xorg-x11-proto-devel xxhash-devel zlib-devel
USO:
- gcc gcc-c++ eigen3-devel keyutils-devel libaio-devel libapparmor-devel libatomic1 libattr-devel libbsd-devel libcap-devel libgbm-devel libglvnd-devel libjpeg-turbo libkmod-devel libmd-devel libseccomp-devel lksctp-tools-devel desarrollo-mpfr desarrollo-xxhash desarrollo-zlib
ClaroLinux:
- devpkg-acl devpkg-eigen devpkg-Judy devpkg-kmod devpkg-attr devpkg-libbsd devpkg-libjpeg-turbo devpkg-libsctp devpkg-mesa
Linux alpino:
- build-base eigen-dev jpeg-dev judy-dev keyutils-dev kmod-dev libacl-dev libaio-dev libatomic libattr libbsd-dev libcap-dev libmd-dev libseccomp-dev lksctp-tools-dev mesa-dev mpfr-dev xxhash -dev zlib-dev
Broches:
- Stress-ng no está diseñado para romperse con snapcraft. Hacerlo va estrictamente en contra de los deseos del responsable del proyecto y del desarrollador principal.
NOTA: la compilación intentará detectar dependencias de compilación y creará una imagen con la funcionalidad deshabilitada si las bibliotecas de soporte no están instaladas.
En el momento de la compilación, stress-ng detectará las características del kernel que están disponibles en el sistema de compilación de destino y habilitará las pruebas de estrés de manera adecuada. Stress-ng ha sido probado en Ubuntu, Debian, Debian GNU/Hurd, Slackware, RHEL, SLES, Centos, kFreeBSD, OpenBSD, NetBSD, FreeBSD, Debian kFreeBSD, DragonFly BSD, OS X, Minix, Solaris 11.3, OpenIndiana y Hiaku. Los puertos a otros sistemas operativos similares a POSIX/UNIX deberían ser relativamente fáciles.
NOTA: SIEMPRE ejecute make clean
después de obtener los cambios del repositorio de git para forzar que la compilación regenere el archivo de configuración de compilación. Se admiten compilaciones paralelas usando make -j.
Para construir sobre sistemas BSD, se requiere gcc y GNU make:
CC=gcc gmake clean
CC=gcc gmake
Para construir en sistemas OS X, simplemente use:
Para construir sobre MINIX, se requieren gmake y clang:
CC=clang gmake clean
CC=clang gmake
Para construir en SunOS, se requiere GCC y GNU make, compilar usando:
CC=gcc gmake clean
CC=gcc gmake
Para construir sobre Dilos, se requiere GCC y GNU make, compilar usando:
CC=gcc gmake clean
CC=gcc gmake
Para construir sobre Haiku R1/beta5:
# GCC
make clean
make
# Clang
CC=clang make clean
CC=clang make
Para crear una imagen estática (por ejemplo, para Android), utilice:
# path to Android NDK
# get NDK from https://developer.android.com/ndk/downloads
export NDK=$HOME/android-ndk-r27c
export PATH=$PATH:$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin
export TARGET=aarch64-linux-android
# Define Android API level
export API=27
export CC=$TARGET$API-clang
make clean
STATIC=1 make
Para compilar con el compilador Tiny C:
Para compilar con el compilador C portátil PCC, utilice:
Para construir con la biblioteca musl C:
Para compilar con el compilador Intel C, use icc:
Para compilar con el compilador Intel C icx, use:
Para realizar una compilación cruzada usando gcc, use una compilación estática, especifique la cadena de herramientas (tanto CC como CXX). Por ejemplo, una construcción cruzada mips64:
make clean
STATIC=1 CC=mips64-linux-gnuabi64-gcc CXX=mips64-linux-gnuabi64-g++ make -j $(nproc)
Para realizar una compilación cruzada para qnx, por ejemplo, una compilación cruzada de aarch64 qnx:
make clean
CC=aarch64-unknown-nto-qnx7.1.0-gcc CXX=aarch64-unknown-nto-qnx7.1.0-g++ STATIC=1 make
Opción de compilación: DEBUG, compilación con depuración (-g) habilitada:
Opción de compilación: LTO, optimización del tiempo de enlace (~1-2 % de mejora del rendimiento en factores estresantes informáticos):
Opción de compilación: PEDANTIC, habilite indicadores de compilación pedantes:
make clean
PEDANTIC=1 make
Opción de compilación: GARBAGE_COLLECT, advierte sobre código no utilizado:
make clean
GARBAGE_COLLECT=1 make
Opción de compilación: INESPERADO=1, advierte sobre un código de salida #ifdef inesperado:
make clean
UNEXPECTED=1 make
Contribuyendo al estrés:
Envíe parches a [email protected] o solicite fusiones en https://github.com/ColinIanKing/stress-ng
Guía de referencia de inicio rápido
La guía de referencia de Ubuntu Stress-ng contiene una breve descripción y ejemplos prácticos.
Ejemplos
Ejecute 4 CPU, 2 memorias virtuales, 1 disco y 8 estresores de bifurcación durante 2 minutos e imprima las medidas:
stress-ng --cpu 4 --vm 2 --hdd 1 --fork 8 --timeout 2m --metrics
stress-ng: info: [573366] setting to a 120 second (2 mins, 0.00 secs) run per stressor
stress-ng: info: [573366] dispatching hogs: 4 cpu, 2 vm, 1 hdd, 8 fork
stress-ng: info: [573366] successful run completed in 123.78s (2 mins, 3.78 secs)
stress-ng: info: [573366] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s CPU used per
stress-ng: info: [573366] (secs) (secs) (secs) (real time) (usr+sys time) instance (%)
stress-ng: info: [573366] cpu 515396 120.00 453.02 0.18 4294.89 1137.24 94.42
stress-ng: info: [573366] vm 2261023 120.01 223.80 1.80 18840.15 10022.27 93.99
stress-ng: info: [573366] hdd 367558 123.78 10.63 11.67 2969.49 16482.42 18.02
stress-ng: info: [573366] fork 598058 120.00 68.24 65.88 4983.80 4459.13 13.97
Ejecute Matrix Stressor en todas las CPU en línea durante 60 segundos y mida la temperatura:
stress-ng --matrix -1 --tz -t 60
stress-ng: info: [1171459] setting to a 60 second run per stressor
stress-ng: info: [1171459] dispatching hogs: 8 matrix
stress-ng: info: [1171459] successful run completed in 60.01s (1 min, 0.01 secs)
stress-ng: info: [1171459] matrix:
stress-ng: info: [1171459] acpitz0 75.00 C (348.15 K)
stress-ng: info: [1171459] acpitz1 75.00 C (348.15 K)
stress-ng: info: [1171459] pch_skylake 60.17 C (333.32 K)
stress-ng: info: [1171459] x86_pkg_temp 62.72 C (335.87 K)
Ejecute una combinación de 4 factores estresantes de E/S y verifique si hay cambios en los metadatos SMART del disco:
sudo stress-ng --iomix 4 --smart -t 30s
stress-ng: info: [1171471] setting to a 30 second run per stressor
stress-ng: info: [1171471] dispatching hogs: 4 iomix
stress-ng: info: [1171471] successful run completed in 30.37s
stress-ng: info: [1171471] Device ID S.M.A.R.T. Attribute Value Change
stress-ng: info: [1171471] sdc 01 Read Error Rate 88015771 71001
stress-ng: info: [1171471] sdc 07 Seek Error Rate 59658169 92
stress-ng: info: [1171471] sdc c3 Hardware ECC Recovered 88015771 71001
stress-ng: info: [1171471] sdc f1 Total LBAs Written 481904395 877
stress-ng: info: [1171471] sdc f2 Total LBAs Read 3768039248 5139
stress-ng: info: [1171471] sdd be Temperature Difference 3670049 1
Llamadas al sistema de referencia utilizando VDSO:
stress-ng --vdso 1 -t 5 --metrics
stress-ng: info: [1171584] setting to a 5 second run per stressor
stress-ng: info: [1171584] dispatching hogs: 1 vdso
stress-ng: info: [1171585] stress-ng-vdso: exercising vDSO functions: clock_gettime time gettimeofday getcpu
stress-ng: info: [1171585] stress-ng-vdso: 9.88 nanoseconds per call (excluding 1.73 nanoseconds test overhead)
stress-ng: info: [1171584] successful run completed in 5.10s
stress-ng: info: [1171584] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s CPU used per
stress-ng: info: [1171584] (secs) (secs) (secs) (real time) (usr+sys time) instance (%)
stress-ng: info: [1171584] vdso 430633496 5.10 5.10 0.00 84375055.96 84437940.39 99.93
stress-ng: info: [1171584] vdso 9.88 nanoseconds per call (average per stressor)
Genere y mida errores de sucursales utilizando métricas de rendimiento:
sudo stress-ng --branch 1 --perf -t 10 | grep Branch
stress-ng: info: [1171714] 604,703,327 Branch Instructions 53.30 M/sec
stress-ng: info: [1171714] 598,760,234 Branch Misses 52.77 M/sec (99.02%)
Ejecute permutaciones de factores estresantes de E/S en un sistema de archivos ZFS, excluyendo el factor estresante rawdev con verificación de errores del registro del kernel:
stress-ng --class io --permute 0 -x rawdev -t 1m --vmstat 1 --klog-check --temp-path /zfs-pool/test
Solo x86: mida la potencia utilizando las interfaces RAPL en 8 factores estresantes de matriz 3D simultáneos con la verificación habilitada. Tenga en cuenta que leer RAPL requiere permiso de root.
sudo stress-ng --matrix-3d 8 --matrix-3d-size 512 --rapl -t 10 --verify
stress-ng: info: [4563] setting to a 10 secs run per stressor
stress-ng: info: [4563] dispatching hogs: 8 matrix-3d
stress-ng: info: [4563] matrix-3d:
stress-ng: info: [4563] core 6.11 W
stress-ng: info: [4563] dram 2.71 W
stress-ng: info: [4563] pkg-0 8.20 W
stress-ng: info: [4563] psys 16.90 W
stress-ng: info: [4563] uncore 0.06 W
stress-ng: info: [4563] skipped: 0
stress-ng: info: [4563] passed: 8: matrix-3d (8)
stress-ng: info: [4563] failed: 0
stress-ng: info: [4563] metrics untrustworthy: 0
stress-ng: info: [4563] successful run completed in 11.38 secs
Medida de residencia en el estado C:
stress-ng --intmath 0 -t 1m --c-states
stress-ng: info: [6998] setting to a 1 min run per stressor
stress-ng: info: [6998] dispatching hogs: 8 intmath
stress-ng: info: [6998] intmath:
stress-ng: info: [6998] C0 99.98%
stress-ng: info: [6998] C1 0.00%
stress-ng: info: [6998] C1E 0.01%
stress-ng: info: [6998] C3 0.00%
stress-ng: info: [6998] C6 0.01%
stress-ng: info: [6998] C7s 0.00%
stress-ng: info: [6998] C8 0.00%
stress-ng: info: [6998] POLL 0.00%
stress-ng: info: [6998] skipped: 0
stress-ng: info: [6998] passed: 8: intmath (8)
stress-ng: info: [6998] failed: 0
stress-ng: info: [6998] metrics untrustworthy: 0
stress-ng: info: [6998] successful run completed in 1 min
Errores y regresiones encontradas con estrés-ng
estrés-ng ha encontrado varios errores/regresiones del Kernel, QEMU y errores de libc; Se han implementado las correcciones apropiadas para abordar estos problemas:
2015:
- CLAVES: asegúrese de liberar la edición de matriz asociada si la edición es válida
- proc: corrige el error -ESRCH al escribir en /proc/$pid/coredump_filter
- Error de división SMP
2016:
- fs/locks.c: El kernel falla durante la prueba de estrés de bloqueo Posix
- sched/core: arregla una carrera entre try_to_wake_up() y una tarea activada
- devpts: corrige la desreferencia del puntero nulo en la asignación de memoria fallida
- arm64: no impone una alineación estricta de 16 bytes con el puntero de pila
2017:
- ARM: dts: meson8b: agregue zona de memoria reservada para corregir congelaciones silenciosas
- ARM64: dts: meson-gx: Agregar zonas de memoria reservadas de firmware
- ext4: bloquea el bloque xattr antes de realizar la suma de verificación
- rcu_preempt detectó bloqueos en CPU/tareas
- ERROR: no se puede manejar la desreferencia del puntero NULL del kernel
- ADVERTENCIA: se ha detectado posible dependencia de bloqueo circular
2018:
- Illumos: ofdlock(): aserción fallida: lckdat->l_start == 0
- debugobjects: use la lista libre global en __debug_check_no_obj_freed()
- ext4_validate_inode_bitmap:99: comm stress-ng: mapa de bits de inodo dañado
- virtio/s390: arreglar carrera en ccw_io_helper()
2019:
- mm/page_idle.c: arreglado, vaya porque end_pfn es mayor que max_pfn
- mm: compactación: evite el uso del 100% de la CPU durante la compactación cuando se finaliza una tarea
- mm/vmalloc.c: precarga una CPU con un objeto para dividir
- perf evlist: use unshare(CLONE_FS) en subprocesos sb para permitir que setns(CLONE_NEWNS) funcione
- riscv: rechaza llamadas al sistema no válidas por debajo de -1
2020:
- RISC-V: No permitir solicitud de asignación de página de escritura + ejecución únicamente en mmap
- riscv: establece max_pfn en el PFN de la última página
- crypto: hisilicon - actualiza el parámetro del módulo del controlador SEC
- net: atm: corrige la actualización del índice de posición en lec_seq_next
- sched/debug: corrige la corrupción de la memoria causada por múltiples lecturas pequeñas de indicadores
- ocfs2: ratelimit el aviso de 'tiempos máximos de búsqueda alcanzados'
- El uso de perf puede bloquear el kernel con un desbordamiento de pila.
- estrés-ng en el kernel focal habilitado para gcov activa OOPS
- Corrupción de list_del de errores del kernel en s390x por estrés-ng mknod y enlace simbólico de estrés-ng
2021:
- sparc64: Se corrigió el filtrado de código de operación en el manejo de cargas sin fallas
- abrir un archivo con O_DIRECT en un sistema de archivos que no lo admite dejará un archivo vacío
- bloqueo/atómico: sparc: arreglar arch_cmpxchg64_local()
- btrfs: soluciona el agotamiento de la matriz de fragmentos del sistema debido a asignaciones simultáneas
- btrfs: reelaborar la asignación de fragmentos para evitar el agotamiento de la matriz de fragmentos del sistema
- btrfs: soluciona el punto muerto con asignaciones simultáneas de fragmentos que involucran fragmentos del sistema
- bloqueo/atómico: sparc: arreglar arch_cmpxchg64_local()
- tubería: realice notificaciones FASYNC para cada IO de tubería, no solo cambios de estado
- io-wq: eliminar la asignación GFP_ATOMIC fuera de la ruta de salida programada
- mm/swap: considera el máximo de páginas en iomap_swapfile_add_extent
- bloquear: bucle: arreglar el punto muerto entre abrir y eliminar
- tmpfs: O_DIRECT | O_CREATE open informa un error de apertura pero en realidad crea un archivo
2022:
- copy_process(): Mueve fd_install() fuera de la sección crítica sighand->siglock
- minix: corrige error al abrir un archivo con O_DIRECT
- arch/arm64: Arreglar la inicialización de la topología para la programación central
- ejecutando estrés-ng en Minux 3.4.0-RC6 en amd64 afirmar en vm/region.c:313
- La prueba de dejar de compartir desencadena un error de página no controlada
- request_module DoS
- Regresión del punto de referencia NUMA en Linux 5.18
- Desbordamiento en mas_spanning_rebalance() y prueba
- mm/huge_memory: no golpees swp_entry_t durante la división de THP
- AppArmor: -42,5% de regresión de estrés-ng.kill.ops_per_sec debido al compromiso
- fuente de reloj: suspende el mecanismo de vigilancia temporalmente cuando se detecta una latencia de lectura alta
2023:
- qemu-system-m68k segfaults en el código de operación 0x4848
- rtmutex: asegúrese de que el camarero superior esté siempre despierto
- mm/swap: corrige la carrera swap_info_struct entre swapoff y get_swap_pages()
- block, bfq: Corrige el error de división por cero en cero wsum
- riscv: mm: asegúrese de que el valor de VM_WRITE y VM_EXEC sea legible
- Revertir "mm: vmscan: hacer que la losa global se reduzca sin bloqueo"
- Bloqueo/bloqueo en mm/swapfile.c:718 add_to_avail_list al hacer ejercicio estrés-ng
- mm: corrige la condición de carrera de reescritura de zswap
- x86/fpu: configure la función X86_FEATURE_OSXSAVE después de habilitar OSXSAVE en CR4
- kernel/fork: tenga cuidado con el contexto de llamada de __put_task_struct()
- arm64: dts: ls1028a: agregue información de caché l1 y l2
- mapa de archivos: agregue filemap_map_order0_folio() para manejar el folio orden0
- mm: encogedor: agregue infraestructura para asignar encogedor dinámicamente
- mm: encogedor: hace que la losa global se encoja sin bloqueo
- bcachefs: Borrar btree_node_just_writing() cuando el nodo se reutiliza o se desaloja
- rastreo: corrige el bloqueo incompleto al deshabilitar eventos almacenados en el búfer
- mm: migrar: se corrige la asignación de página incorrecta durante la migración de página
- mm: mmap: asignar MAP_STACK a VM_NOHUGEPAGE
2024:
- fs: mejora la robustez de dump_mapping()
- rastreo: garantiza la visibilidad al insertar un elemento en tracing_map
- conector/cn_proc: revertir "conector: arreglar el recuento de proc_event_num_listeners no borrado"
- powerpc/pserie: corrige la precisión del tiempo robado
- OpenBSD: libm: error de segmentación en sincosl
- abrir y cerrar /dev/dri/card0 en una instancia QEMU KVM apagará el sistema, 6.10.0-rc6+
- uprobes: previene mutex_lock() bajo rcu_read_lock()
- El sistema se bloquea con el kernel RT en AMD64.
- ADVERTENCIA: CPU: 17 PID: 118273 en kernel/sched/deadline.c:794 setup_new_dl_entity+0x12c/0x1e8
- kernel ups en pick_next_task_fair en kernel 6.8.1-1002-realtime
- kernel ups en aafs_create en kernel 6.8.1-1002-realtime
- mm: optimizar el bucle redundante
- MultiVM: los invitados de capa 2 que ejecutan Stress-ng se atascan al iniciar después de provocar un bloqueo
- powerpc/qspinlock: Soluciona el punto muerto en la cola MCS
- Regresión del kernel con indicadores de montaje ext4 y ea_inode y ejercicio de xattrs
- sched_ext: Las tareas TASK_DEAD deben cambiarse a SCX en ops_enable
- programación/fecha límite: arreglar la fuga de referencia de task_struct
- sched_ext: divide el DSQ global por nodo NUMA
- llamar a getcpu con una dirección desalineada provoca pánico en el kernel
- cygwin: pread/pwrite: previene el error EBADF después de fork()
- Cygwin 3.5.4-1: el manejo de señales destruye los valores 'dobles largos'
- cygwin: timer_delete: corregir el valor de retorno
- cygwin: cambie pthread_sigqueue() para aceptar la identificación del hilo
- seguridad/claves: arreglar losa fuera de límites en key_task_permission
- sched_ext: No mantenga presionado scx_tasks_lock por mucho tiempo
- sched/numa: corrige la posible desreferencia del puntero nulo en task_numa_work()
- Reiserfs entra en pánico usando el factor estresante fsize.
Mejoras del kernel que utilizaron estrés-ng
2020:
- selinux: completa la inserción de funciones hashtab
- selinux: almacena transiciones de roles en una tabla hash
- sched/rt: optimiza las restricciones del programador RT del grupo de verificación
- sched/fair: maneja el caso de task_h_load() que devuelve 0
- programación/fecha límite: desacelerar los subprocesos impulsados por PI mientras se ponen en cola
- mm: solucionar el problema de rendimiento de madvise NECESITARÁ
- powerpc/dma: Arreglar dma_map_ops::get_required_mask
- El cierre de estrés provoca que el kernel oops v5.6-rt y v5.4-rt
2021:
- Revertir "mm, slub: considere el resto de la lista parcial si falla adquirir_slab()
- mm: memoria: agregue orig_pmd a la estructura vm_fault
- selftests/powerpc: Agregar prueba de parches de mitigación
- dm crypt: Evite la contención de spinlock de percpu_counter en crypt_page_alloc()
- mm/migrate: optimiza las actualizaciones de la orden de degradación del tiempo de conexión en caliente
- powerpc/rtas: mejoras en rtas_busy_delay()
2022:
- sched/core: Contabilización del tiempo de inactividad para todas las tareas excepto la tarea inactiva
- ipc/mqueue: utilice get_tree_nodev() en mqueue_get_tree()
2023:
- mm/swapfile: agregue cond_resched() en get_swap_pages()
- módulo: agregue estadísticas de depuración para ayudar a identificar la presión de la memoria
- módulo: evitar la asignación si el módulo ya está presente y listo
- sched: Intercalar temporizadores de ancho de banda cfs para mejorar el rendimiento de un solo subproceso con baja utilización
- mm/khugepaged: eliminar try_to_freeze() redundante
2024:
- mm/vmalloc: eliminó la contención de bloqueo de dos a una vez
- mm: cambia mm->get_unmapped_area() a una bandera
- mm: siempre en línea _compound_head() con CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
- mm: optimiza el bucle redundante de mm_update_owner_next()
Presentaciones
- Presentación Stress-ng en ELCE 2019 Lyon
- Vídeo de la presentación anterior.
- Sesión de tutoría de la Fundación Linux, mayo de 2022
- Presentación Recetas de granos, septiembre de 2023
- Fundación Linux, ELISA, junio de 2024
Citas
- Herramienta de prueba de rendimiento del kernel de Linux
2015:
- Mejora de los modelos energéticos de la nube para optimizar la eficiencia de los centros de datos
- Tejo: un esquema de detección de anomalías supervisado para bases de datos NewSQL
- CoMA: Monitoreo de recursos de contenedores Docker
- Una investigación de la relación de utilización de CPU entre el host y los invitados en una infraestructura de nube
2016:
- Aumento del determinismo de plataforma PQOS DPDK
- Hacia una gestión de datos energéticamente eficiente en HPC: el enfoque de unidad Open Ethernet
- Análisis del rendimiento de la CPU y la memoria en la asignación dinámica y dedicada de recursos utilizando XenServer en un entorno de centro de datos.
- ¿Cuánta energía consume su servidor? Estimación de la potencia del enchufe de pared mediante mediciones RAPL
- DevOps para aplicaciones de IoT que utilizan redes móviles y la nube
- Un simulador de carga de trabajo de funciones de red virtual
- Caracterización y reducción de la variabilidad del rendimiento entre plataformas mediante la virtualización a nivel de sistema operativo
- ¿Cuánta energía consume su servidor? Estimación de la potencia del enchufe de pared mediante mediciones RAPL
- UIE: Estimación de interferencia centrada en el usuario para aplicaciones en la nube
2017:
- Autoescalado de Contenedores: el impacto de las Métricas Relativas y Absolutas
- Probando el subsistema de Windows para Linux
- Análisis práctico del protocolo Precision Time bajo diferentes tipos de carga del sistema.
- Hacia la predicción de costos de máquinas virtuales en las nubes teniendo en cuenta la energía
- Algoritmos y arquitecturas para procesamiento paralelo
- Conceptos y herramientas avanzados para el suministro de energía renovable de Centros de Datos
- Monitoreo y modelado de servidores informáticos abiertos
- Análisis experimental y numérico para la posible reutilización del calor en centros de datos refrigerados por líquido.
- Modelado y Análisis de Desempeño Bajo Interferencia en la Nube
- Mida y reduzca eficazmente las latencias del kernel para restricciones de tiempo real
- Monitoreo y análisis de las relaciones de carga de CPU entre el host y los invitados en una infraestructura de red en la nube
- Medición de los impactos del parche Preempt-RT
- Identificación confiable de bibliotecas mediante técnicas VMI
- Elastic-PPQ: un sistema autónomo de dos niveles para el procesamiento de consultas de preferencias espaciales a través de un flujo de datos dinámico
- Integración de OpenEPC dentro de 5GTN como prueba de concepto de NFV
- Instrumentación binaria dinámica con reconocimiento del tiempo
- Informe de experiencia: minería de registros mediante procesamiento de lenguaje natural y aplicación a la detección de anomalías
- Caracterización de interferencias de procesos de criticidad de tiempo mixta en un sistema Linux multinúcleo
- Orquestación de la nube a nivel de aplicación
2018:
- Emulación multinúcleo en entorno virtualizado
- Stress-SGX: Cargue y estrese sus enclaves para divertirse y obtener ganancias
- quiho: Pruebas de regresión de rendimiento automatizadas utilizando perfiles de utilización de recursos inferidos
- Análisis de optimización de la memoria del hipervisor y de la máquina virtual
- Pruebas en tiempo real con Fuego
- FECBench: un marco extensible para identificar fuentes de interferencia en el rendimiento en el espectro de recursos del borde de la nube
- Cuantificación de la interacción entre las propiedades estructurales del software y el hardware en la arquitectura ARM Big.LITTLE
- RAPL en acción: experiencias en el uso de RAPL para mediciones de potencia
2019:
- Aislamiento del rendimiento de cargas de trabajo ubicadas conjuntamente en una arquitectura de software para vehículos basada en contenedores
- Análisis y detección de exploits basados en caché
- kMVX: detección de fugas de información del kernel con ejecución multivariante
- Escalabilidad de Kubernetes ejecutándose sobre AWS
- Un estudio sobre medidas de rendimiento para aplicaciones en contenedores con uso intensivo de CPU y escalamiento automático
- Scavenger: un administrador de recursos de carga de trabajo por lotes de caja negra para mejorar la utilización en entornos de nube
- Estimación del rendimiento de las aplicaciones en la nube basándose en perfiles de microevaluaciones
- Detección de anomalías en NFV mediante el método de aprendizaje no supervisado basado en árboles
2020:
- Compensaciones de rendimiento y energía para aplicaciones paralelas en sistemas multiprocesamiento heterogéneos
- C-Balancer: un sistema para la programación y creación de perfiles de contenedores
- Modelado de características latentes de máquinas virtuales y predicción del rendimiento de aplicaciones mediante factorización matricial no negativa semisupervisada
- Equilibrio de carga semidinámico: aprendizaje distribuido eficiente en entornos no dedicados
- Un análisis del rendimiento de las tecnologías de seguridad asistidas por hardware
- Ingeniería de software en la nube ecológica para el procesamiento de big data
- Detección en tiempo real de ataques al canal lateral de caché mediante el monitor de contador de rendimiento
- Subvirtiendo la arquitectura de medición de integridad de Linux
- Evaluación del rendimiento en tiempo real mediante solicitud de interrupción rápida en un kernel de Linux estándar
- Bajo consumo de energía en plataformas post-Moore para investigación de HPC
- Gestión de la latencia en el entorno Edge-Cloud
- Desmitificando la latencia de programación de Linux en tiempo real
2021:
- Streamline: un ataque de canal encubierto rápido y sin descarga de caché que permite la colusión asincrónica
- Análisis experimental en Hadoop MapReduce: una mirada más cercana a las técnicas de detección y recuperación de fallas
- Características de rendimiento de BlueField-2 SmartNIC
- Evaluación de la latencia en sistemas integrados multiprocesamiento para redes inteligentes
- Trabajo en progreso: sincronización de la diversidad como mecanismo de protección
- Arquitecturas secuenciales de aprendizaje profundo para la detección de anomalías en cadenas de funciones de redes virtuales
- WattEdge: un enfoque holístico para mediciones empíricas de energía en Edge Computing
- PTEMagnet: reserva de memoria física detallada para recorridos de páginas más rápidos en nubes públicas
- El precio de la crisis y el espectro: gastos generales de energía de las mitigaciones a nivel del sistema operativo
- Un estudio empírico de ataques térmicos a plataformas perimetrales
- Sage: Depuración de rendimiento práctica y escalable basada en ML en microservicios
- Un enfoque generalizado para la asignación práctica de tareas utilizando un bucle de control MAPE-K]
- Hacia una monitorización independiente de la nube en tiempo de ejecución
- FIRESTARTER 2: Generación dinámica de código para pruebas de estrés del procesador
- Comparación de rendimiento entre un clúster de Kubernetes y un sistema integrado
- Exploración del rendimiento de los sistemas de virtualización
- Engañar al hardware para convertirlo en software de seguridad eficiente
2022:
- Un método general para evaluar la sobrecarga al consolidar servidores: degradación del rendimiento en máquinas virtuales y contenedores
- FedComm: Comprensión de los protocolos de comunicación para el aprendizaje federado basado en el borde
- Lograr el aislamiento en sistemas de borde industriales de criticidad mixta con contenedores en tiempo real
- Diseño e implementación de un sistema de predicción de fallas basado en aprendizaje automático en infraestructura en la nube
- Los componentes básicos de TSN en Linux
- uKharon: un servicio de membresía para aplicaciones de microsegundos
- Evaluación del desarrollo de firmware Secure Enclave para estaciones de trabajo RISC-V contemporáneasEstación de trabajo RISC-V contemporánea
- Evaluación de Linux en tiempo real sobre la arquitectura del procesador RISC-V
- Hertzbleed: convertir ataques potentes de canal lateral en ataques de sincronización remota en x86
- No interactúes: ataques de canal lateral y mitigaciones en interconexiones de malla
- Implicaciones de rendimiento para sistemas RISC-V multinúcleo con hardware de seguridad dedicado
2023:
- Luche contra el hardware con hardware: detección y mitigación de ataques de canal lateral en todo el sistema mediante contadores de rendimiento
- Presentamos k4.0s: un modelo para la orquestación de contenedores de criticidad mixta en la Industria 4.0
- Un estudio integral sobre optimización de sistemas con unidades de procesamiento de datos
- Estimación del rendimiento de las aplicaciones en la nube basándose en perfiles de microevaluaciones
- PSPRAY: Técnica de explotación del montón del kernel de Linux basada en canal lateral de sincronización
- Detección y predicción de anomalías de rendimiento sólidas y precisas para aplicaciones en la nube: un marco novedoso basado en el aprendizaje conjunto
- Estudio de viabilidad para un sistema de control integrado en tiempo real basado en Python
- Adaptación de SaaS paralelo a recursos de nube heterogéneos coubicados
- Una metodología y un marco para determinar las capacidades de aislamiento de las tecnologías de virtualización
- Estación de datos: computación delegada, confiable y auditable para permitir consorcios de intercambio de datos con un depósito de datos
- Un estudio empírico de fallas que sobrecargan los recursos en aplicaciones de computación perimetral
- Encontrar pruebas inestables en aplicaciones JavaScript mediante estrés y reordenación del conjunto de pruebas
- El poder de la telemetría: Descubriendo ataques de canal lateral basados en software en sistemas Apple M1/M2
- Una evaluación del rendimiento del sistema integrado multinúcleo de criticidad mixta basado en PREEMPT RT Linux
- Fuga de datos en sistemas informáticos empresariales virtualizados aisladosSistemas
- Consideraciones para evaluar el rendimiento de la red en infraestructuras en contenedores
- EnergAt: Atribución de energía detallada para arrendamientos múltiples
- Cuantificación del perfil de seguridad de las aplicaciones Linux
- Gotham Testbed: un banco de pruebas de IoT reproducible para experimentos de seguridad y generación de conjuntos de datos
- Creación de perfiles con confianza: supervisión del sistema desde entornos de ejecución fiables
- Inferencia térmica en el dispositivo mediante paralelización de una sola capa con procesadores heterogéneos
- Hacia una programación del espacio de usuario rápida, adaptable y asistida por hardware
- Detección de anomalías heterogéneas para sistemas de software mediante atención intermodal semisupervisada
- Codificación verde: un enfoque empírico para aprovechar el consumo de energía de los servicios de software
- Mejora de la investigación empírica de ingeniería del rendimiento del software con eventos a nivel de kernel: un enfoque integral de seguimiento del sistema
- Cloud White: detección y estimación de la degradación de la QoS de cargas de trabajo de latencia crítica en la nube pública
- Gestión dinámica de recursos para aplicaciones paralelas síncronas masivas nativas de la nube
- Hacia la optimización sin servidor con escalado in situ
- Un enfoque modular para diseñar un marco experimental para la investigación sobre gestión de recursos
- Deanonimización dirigida a través del canal lateral de caché: ataques y defensas
- Validación del simulador RISC-V de sistema completo: un enfoque sistemático
- Implementación ligera de protección de servicios por paquete en eBPF/XDP
- Evaluación y optimización del rendimiento en tiempo real de ROS2
- Análisis experimental y numérico del comportamiento térmico de un centro de datos monofásico refrigerado por inmersión.
2024:
- IdleLeak: explotación de los efectos secundarios del estado inactivo para la fuga de información
- Creación de perfiles con confianza: monitoreo del sistema desde entornos de ejecución confiables
- Determinación ejemplar del aislamiento de QoS basado en Cgroups para una carga de trabajo de base de datos
- BARO: Análisis sólido de causa raíz para microservicios mediante detección de puntos de cambio bayesiano multivariante en línea
- Eliminación de anomalías de rendimiento derivadas de cambios en la carga de trabajo en aplicaciones nativas de la nube
- Vaya un paso más allá: entienda la distribución de páginas en la explotación del kernel de Linux
- Impacto del consumo de energía en nubes en contenedores: un análisis integral de herramientas de medición de energía de código abierto
- Evaluación del estrés térmico en el aprendizaje federado heterogéneo basado en IoT
- Detección de anomalías en el procesamiento de llamadas de misión crítica
- Una evaluación preliminar de las capacidades en tiempo real de Real-Time Linux en Raspberry Pi 5
- Una comparación de arquitecturas basadas en Linux en tiempo real para aplicaciones musicales integradas
- Nona: modelo preciso de predicción de energía mediante redes neuronales
Me gustaría agregar a la página del proyecto Stress-ng cualquier cita de investigación o proyecto que utilice Stress-ng. También agradezco información sobre errores del kernel o regresiones de rendimiento encontradas con estrés-ng.
Colaboradores
Muchas gracias a los siguientes colaboradores de Stress-ng (en orden alfabético):
Abdul Haleem, Aboorva Devarajan, Adriand Martin, Adrian Ratiu, Aleksandar N. Kostadinov, Alexander Kanavin, Alexandru Ardelean, Alfonso Sánchez-Beato, Allen H, Amit Singh Tomar, Andrey Gelman, André Wild, Anisse Astier, Anton Eliasson, Arjan van de Ven, Baruch Siach, Bryan W. Lewis, Camille Constans, Carlos Santos, Christian Ehrhardt, Christopher Brown, Chunyu Hu, Daniel Andriesse, Daniel Hodges, Danilo Krummrich, Davidson Francis, David Turner, Denis Ovsienko, Dominik B Czarnota, Dorinda Bassey, Eder Zulian, Eric Lin, Erik Stahlman, Erwan Velu, Fabien Malfoy, Fabrice Fontaine, Fernand Sieber, Florian Weimer, Francis Laniel , Guilherme Janczak, Hui Wang, Hsieh-Tseng Shen, Iyán Méndez Veiga, Ivan Shapovalov, James Hunt, Jan Luebbe, Jianshen Liu, Jimmy Ho, John Kacur, Julee, Jules Maselbas, Julien Olivain, Kenny Gong, Khalid Elmious, Khem Raj, Luca Pizzamiglio, Luis Chamberlain, Luis Henriques, Lukas Durfina, Matteo Italia, Matthew Tippett, Mauricio Faria de Oliveira, Maxime Chevallier, Max Kellermann, Maya Rashish, Mayuresh Chitale, Meysam Azad, Mike Koreneff, Munehisa Kamata, Myd Xia, Nick Hanley, Nikolas Kyx, Paul Menzel, Piyush Goyal, Ralf Ramsauer, Rosen Penev, Rulin Huang, Sascha Hauer, Sergey Matyukevich, Siddhesh Poyarekar, Shoily Rahman, Stian Onarheim, Thadeu Lima de Souza Cascardo , Thia Wyrod, Thinh Tran, Tim Gardner, Tim Gates, Tim Orling, Tommi Rantala, Witold Baryluk, Yiwei Lin, Yong-Xuan Wang, Zhiyi Sun.