stress-ng (Stress nächste Generation)
stress-ng testet ein Computersystem auf verschiedene wählbare Arten. Es wurde entwickelt, um verschiedene physische Subsysteme eines Computers sowie die verschiedenen Kernelschnittstellen des Betriebssystems zu trainieren. Stress-ng-Funktionen:
- Über 350 Stresstests
- Über 80 CPU-spezifische Stresstests, die Gleitkomma-, Ganzzahl-, Bitmanipulations- und Kontrollflusstests durchführen
- Über 20 Stresstests für den virtuellen Speicher
- Über 40 Dateisystem-Stresstests
- Über 30 Speicher-/CPU-Cache-Stresstests
- portierbar: baut auf Linux (Debian, Devuan, RHEL, Fedora, Centos, Slackware OpenSUSE, Ubuntu usw.), Solaris, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Minix, Android, MacOS X, Serenity OS, GNU/Hurd auf. Haiku, Windows-Subsystem für Linux, Cygwin und SunOs/Dilos/Solaris. mit gcc, musl-gcc, clang, icc, icx, tcc und pcc.
- Getestet auf Alpha, armel, armhf, arm64, hppa, i386, loong64, m68k, mips32, mips64, power32, ppc64el, risc-v, sh4, s390x, sparc64, x86-64
stress-ng war ursprünglich dazu gedacht, eine Maschine hart arbeiten zu lassen und Hardwareprobleme wie thermische Überlastungen sowie Betriebssystemfehler auszulösen, die nur dann auftreten, wenn ein System stark beansprucht wird. Gehen Sie bei Stress-ng mit Vorsicht vor, da einige der Tests dazu führen können, dass ein System auf schlecht konzipierter Hardware überhitzt, und dass es außerdem zu übermäßigem System-Thrashing kommen kann, das schwer zu stoppen ist.
stress-ng kann auch Testdurchsatzraten messen; Dies kann nützlich sein, um Leistungsänderungen zwischen verschiedenen Betriebssystemversionen oder Hardwaretypen zu beobachten. Es war jedoch nie dazu gedacht, als präzise Benchmark-Testsuite verwendet zu werden. Verwenden Sie es daher NICHT auf diese Weise.
Wenn Sie stress-ng mit Root-Rechten ausführen, werden die Einstellungen für nicht genügend Arbeitsspeicher auf Linux-Systemen angepasst, sodass die Stressfaktoren in Situationen mit wenig Arbeitsspeicher unzerstörbar sind. Gehen Sie daher mit Bedacht damit um. Mit der entsprechenden Berechtigung kann stress-ng die Anpassung der Ionice-Klasse und der Ionice-Werte ermöglichen. Auch dies sollte mit Vorsicht verwendet werden.
Tarballs
Tarballs jeder Version von stress-ng können über die URL heruntergeladen werden:
https://github.com/ColinIanKing/stress-ng/tarball/version
Dabei ist Version die entsprechende Versionsnummer, zum Beispiel:
https://github.com/ColinIanKing/stress-ng/tarball/V0.13.05
Den neuesten Stress-NG-Snapshot in einem Container ausführen
docker run --rm ghcr.io/colinianking/stress-ng --help
oder
docker run --rm colinianking/stress-ng --help
Debian-Pakete für Ubuntu
Aktuelle Versionen von stress-ng sind im Ubuntu stress-ng ppa für verschiedene Ubuntu-Versionen verfügbar:
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
Stress aufbauen
Zum Erstellen stellen die folgenden Bibliotheken einen voll funktionsfähigen Stress-NG-Build sicher: (Beachten Sie, dass libattr für neuere Disto-Versionen nicht erforderlich ist).
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 -devel mpfr-devel libX11-devel libXau-devel libxcb-devel lksctp-tools-devel xorg-x11-proto-devel xxhash-devel zlib-devel
RHEL, Fedora, Centos (statische Builds):
- 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- devel libmd-devel libX11-devel libXau-devel libxcb-devel lksctp-tools-devel mpfr-devel xorg-x11-proto-devel xxhash-devel zlib-devel
SUSE:
- 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 mpfr-devel xxhash-devel zlib-devel
ClearLinux:
- devpkg-acl devpkg-eigen devpkg-Judy devpkg-kmod devpkg-attr devpkg-libbsd devpkg-libjpeg-turbo devpkg-libsctp devpkg-mesa
Alpine Linux:
- 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
Schnappschüsse:
- stress-ng ist nicht dafür gedacht, mit Snapcraft geschnappt zu werden. Dies verstößt strikt gegen den Willen des Projektbetreuers und Hauptentwicklers.
HINWEIS: Der Build versucht, Build-Abhängigkeiten zu erkennen und erstellt ein Image mit deaktivierter Funktionalität, wenn die Unterstützungsbibliotheken nicht installiert sind.
Zur Build-Zeit erkennt stress-ng Kernel-Funktionen, die auf dem Ziel-Build-System verfügbar sind, und aktiviert entsprechende Stresstests. Stress-ng wurde auf Ubuntu, Debian, Debian GNU/Hurd, Slackware, RHEL, SLES, Centos, kFreeBSD, OpenBSD, NetBSD, FreeBSD, Debian kFreeBSD, DragonFly BSD, OS X, Minix, Solaris 11.3, OpenIndiana und anderen getestet Hiaku. Portierungen auf andere POSIX/UNIX-ähnliche Betriebssysteme sollten relativ einfach sein.
HINWEIS: Führen Sie IMMER make clean
aus, nachdem Sie Änderungen aus dem Git-Repository abgerufen haben, um zu erzwingen, dass der Build die Build-Konfigurationsdatei neu generiert. Parallele Builds mit make -j werden unterstützt.
Um auf BSD-Systemen aufzubauen, benötigt man gcc und GNU make:
CC=gcc gmake clean
CC=gcc gmake
Um auf OS X-Systemen zu bauen, verwenden Sie einfach:
Um auf MINIX aufzubauen, sind gmake und clang erforderlich:
CC=clang gmake clean
CC=clang gmake
Um auf SunOS zu bauen, benötigt man GCC und GNU make, build mit:
CC=gcc gmake clean
CC=gcc gmake
Um auf Dilos aufzubauen, benötigt man GCC und GNU make, build mit:
CC=gcc gmake clean
CC=gcc gmake
So bauen Sie auf Haiku R1/Beta5 auf:
# GCC
make clean
make
# Clang
CC=clang make clean
CC=clang make
Um ein statisches Bild zu erstellen (z. B. für Android), verwenden Sie:
# 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
So erstellen Sie mit dem Tiny C-Compiler:
Um mit dem tragbaren C-Compiler PCC zu erstellen, verwenden Sie:
So erstellen Sie mit der Musl-C-Bibliothek:
Um mit dem Intel C-Compiler ICC zu erstellen, verwenden Sie:
Um mit dem Intel C-Compiler icx zu erstellen, verwenden Sie:
Um eine Kreuzkompilierung mit gcc durchzuführen, verwenden Sie einen statischen Build und geben Sie die Toolchain an (sowohl CC als auch CXX). Zum Beispiel ein mips64-Cross-Build:
make clean
STATIC=1 CC=mips64-linux-gnuabi64-gcc CXX=mips64-linux-gnuabi64-g++ make -j $(nproc)
So führen Sie eine Cross-Kompilierung für qnx durch, beispielsweise einen aarch64-qnx-Cross-Build:
make clean
CC=aarch64-unknown-nto-qnx7.1.0-gcc CXX=aarch64-unknown-nto-qnx7.1.0-g++ STATIC=1 make
Build-Option: DEBUG, Build mit aktiviertem Debug (-g):
Build-Option: LTO, Link Time Optimization (ca. 1–2 % Leistungsverbesserung bei Rechenbelastung):
Build-Option: PEDANTIC, aktivieren Sie pedantische Build-Flags:
make clean
PEDANTIC=1 make
Build-Option: GARBAGE_COLLECT, Warnung vor nicht verwendetem Code:
make clean
GARBAGE_COLLECT=1 make
Build-Option: UNEXPECTED=1, Warnung vor unerwartetem #ifdef-Ausgabecode:
make clean
UNEXPECTED=1 make
Beitrag zu Stress-ng:
Senden Sie Patches an [email protected] oder führen Sie Anfragen unter https://github.com/ColinIanKing/stress-ng zusammen
Schnellstart-Referenzhandbuch
Das Ubuntu Stress-NG-Referenzhandbuch enthält einen kurzen Überblick und ausgearbeitete Beispiele.
Beispiele
Führen Sie 4 CPUs, 2 virtuelle Speicher, 1 Festplatte und 8 Fork-Stressoren 2 Minuten lang aus und drucken Sie die Messungen aus:
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
Führen Sie Matrix Stressor 60 Sekunden lang auf allen Online-CPUs aus und messen Sie die Temperatur:
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)
Führen Sie eine Mischung aus 4 I/O-Stressoren aus und prüfen Sie, ob sich die SMART-Metadaten der Festplatte geändert haben:
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
Benchmark-Systemaufrufe mithilfe des 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)
Generieren und messen Sie Verzweigungsfehler mithilfe von Leistungsmetriken:
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%)
Führen Sie Permutationen von E/A-Stressoren auf einem ZFS-Dateisystem aus, mit Ausnahme des Rawdev-Stressors mit Kernel-Protokollfehlerprüfung:
stress-ng --class io --permute 0 -x rawdev -t 1m --vmstat 1 --klog-check --temp-path /zfs-pool/test
Nur x86: Messen Sie die Leistung mithilfe der RAPL-Schnittstellen an 8 gleichzeitigen 3D-Matrix-Stressoren mit aktivierter Überprüfung. Beachten Sie, dass zum Lesen von RAPL Root-Rechte erforderlich sind.
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
Messen Sie den Wohnsitz im C-Staat:
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
Mit stress-ng gefundene Fehler und Regressionen
stress-ng hat verschiedene Kernel-, QEMU-Fehler/Regressionen und libc-Fehler gefunden; Zur Behebung dieser Probleme wurden entsprechende Korrekturen vorgenommen:
2015:
- SCHLÜSSEL: Stellen Sie sicher, dass wir die Bearbeitung des Assoc-Arrays freigeben, wenn die Bearbeitung gültig ist
- proc: -ESRCH-Fehler beim Schreiben in /proc/$pid/coredump_filter behoben
- SMP-Teilungsfehler
2016:
- fs/locks.c: Kernel-Ups während des Posix-Lock-Stresstests
- sched/core: Behebung eines Wettlaufs zwischen try_to_wake_up() und einer aufgeweckten Aufgabe
- devpts: Nullzeiger-Dereferenzierung bei fehlgeschlagener Speicherzuweisung behoben
- arm64: Erzwingt keine strikte 16-Byte-Ausrichtung auf den Stapelzeiger
2017:
- ARM: dts: meson8b: Reservierte Speicherzone hinzufügen, um stille Einfrierungen zu beheben
- ARM64: dts: meson-gx: Firmware-reservierte Speicherzonen hinzufügen
- ext4: Sperren Sie den xattr-Block, bevor Sie eine Prüfsumme bilden
- rcu_preempt hat Blockierungen bei CPUs/Aufgaben festgestellt
- FEHLER: Kernel-NULL-Zeiger-Dereferenzierung kann nicht verarbeitet werden
- WARNUNG: Mögliche zirkuläre Sperrabhängigkeit erkannt
2018:
- Bilder: ofdlock(): Assertion fehlgeschlagen: lckdat->l_start == 0
- debugobjects: Globale freie Liste in __debug_check_no_obj_freed() verwenden
- ext4_validate_inode_bitmap:99: comm stress-ng: Beschädigte Inode-Bitmap
- virtio/s390: Rennen in ccw_io_helper() beheben
2019:
- mm/page_idle.c: Hoppla beheben, da end_pfn größer als max_pfn ist
- mm: Komprimierung: 100 % CPU-Auslastung während der Komprimierung vermeiden, wenn eine Aufgabe beendet wird
- mm/vmalloc.c: Laden Sie eine CPU mit einem Objekt für Split-Zwecke vor
- perf evlist: Verwenden Sie unshare(CLONE_FS) in SB-Threads, damit setns(CLONE_NEWNS) funktioniert
- riscv: Ungültige Systemaufrufe unter -1 ablehnen
2020:
- RISC-V: Seitenzuordnungsanfragen nur für Write+Exec in mmap nicht zulassen
- riscv: setze max_pfn auf die PFN der letzten Seite
- crypto: hisilicon – Parameter des SEC-Treibermoduls aktualisieren
- net: atm: Aktualisierung des Positionsindex in lec_seq_next korrigiert
- sched/debug: Speicherbeschädigung behoben, die durch mehrere kleine Lesevorgänge von Flags verursacht wurde
- ocfs2: ratelimit der Hinweis „Maximale Suchzeiten erreicht“.
- Die Verwendung von perf kann zum Absturz des Kernels mit einem Stapelüberlauf führen
- stress-ng auf einem gcov-aktivierten Focal-Kernel löst OOPS aus
- Kernel-Bug-List_del-Beschädigung auf S390x durch stress-ng mknod und stress-ng symlink
2021:
- sparc64: Opcode-Filterung bei der Verarbeitung von fehlerfreien Lasten korrigiert
- Das Öffnen einer Datei mit O_DIRECT in einem Dateisystem, das dies nicht unterstützt, hinterlässt eine leere Datei
- locking/atomic: sparc: arch_cmpxchg64_local() reparieren
- btrfs: Behebung der Erschöpfung des System-Chunk-Arrays aufgrund gleichzeitiger Zuweisungen
- btrfs: Chunk-Zuweisung überarbeiten, um eine Erschöpfung des System-Chunk-Arrays zu vermeiden
- Btrfs: Deadlock bei gleichzeitigen Chunk-Zuweisungen mit System-Chunks beheben
- lock/atomic: sparc: arch_cmpxchg64_local() reparieren
- Pipe: Führen Sie FASYNC-Benachrichtigungen für jeden Pipe-IO durch, nicht nur für Statusänderungen
- io-wq: GFP_ATOMIC-Zuweisung aus dem Zeitplan-Out-Pfad entfernen
- mm/swap: Berücksichtigen Sie die maximale Seitenzahl in iomap_swapfile_add_extent
- Block: Schleife: Deadlock zwischen Öffnen und Entfernen beheben
- tmpfs: O_DIRECT | O_CREATE open meldet einen Öffnungsfehler, erstellt aber tatsächlich eine Datei
2022:
- copy_process(): fd_install() aus dem kritischen Abschnitt sighand->siglock verschieben
- minix: Fehler beim Öffnen einer Datei mit O_DIRECT behoben
- arch/arm64: Topologieinitialisierung für die Kernplanung korrigiert
- Ausführen von stress-ng unter Minux 3.4.0-RC6 auf AMD64 Assert in vm/region.c:313
- Der Unshare-Test löst einen nicht behandelten Seitenfehler aus
- request_module DoS
- NUMA-Benchmark-Regression unter Linux 5.18
- Unterlauf in mas_spanning_rebalance() und testen
- mm/huge_memory: swp_entry_t während der THP-Splittung nicht blockieren
- AppArmor: -42,5 % Regression von stress-ng.kill.ops_per_sec aufgrund von Commit
- Clocksource: Unterbricht den Watchdog vorübergehend, wenn eine hohe Leselatenz erkannt wird
2023:
- qemu-system-m68k Segfaults auf Opcode 0x4848
- rtmutex: Stellen Sie sicher, dass der oberste Kellner immer geweckt wird
- mm/swap: swap_info_struct-Rennen zwischen swapoff und get_swap_pages() behoben
- Block, bfq: Fehler bei Division durch Null bei Null-Wsum behoben
- riscv: mm: Stellen Sie sicher, dass der Schutz von VM_WRITE und VM_EXEC lesbar sein muss
- Setzen Sie „mm: vmscan: globale Slab-Shrink-Sperre sperren“ zurück
- Absturz/Hang in mm/swapfile.c:718 add_to_avail_list beim Ausführen von stress-ng
- mm: Zswap-Writeback-Race-Bedingung behoben
- x86/fpu: Legen Sie die X86_FEATURE_OSXSAVE-Funktion fest, nachdem Sie OSXSAVE in CR4 aktiviert haben
- Kernel/Fork: Vorsicht vor dem Aufrufkontext von __put_task_struct()
- arm64: dts: ls1028a: L1- und L2-Cache-Informationen hinzufügen
- filemap: filemap_map_order0_folio() hinzufügen, um das Order0-Folio zu verarbeiten
- mm: Shrinker: Infrastruktur zur dynamischen Zuweisung von Shrinker hinzufügen
- mm: Schrumpfer: Globale Plattenschrumpfung sperrlos machen
- bcachefs: btree_node_just_scribed() löschen, wenn der Knoten wiederverwendet oder entfernt wird
- Ablaufverfolgung: Unvollständige Sperrung beim Deaktivieren gepufferter Ereignisse behoben
- mm: migrate: Behebung einer falschen Seitenzuordnung während der Seitenmigration
- mm: mmap: Map_STACK auf VM_NOHUGEPAGE abbilden
2024:
- fs: Verbessert die Robustheit von dump_mapping()
- tracing: Stellen Sie die Sichtbarkeit sicher, wenn Sie ein Element in tracing_map einfügen
- Connector/cn_proc: revert „Connector: Fix proc_event_num_listeners count nicht gelöscht“
- powerpc/pseries: Genauigkeit der gestohlenen Zeit korrigieren
- OpenBSD: libm: Segfault in Sincosl
- Durch Öffnen und Schließen von /dev/dri/card0 in einer QEMU-KVM-Instanz wird das System heruntergefahren, 6.10.0-rc6+
- Uprobes: mutex_lock() unter rcu_read_lock() verhindern
- Systemabsturz mit RT-Kernel auf AMD64
- WARNUNG: CPU: 17 PID: 118273 unter kernel/sched/deadline.c:794 setup_new_dl_entity+0x12c/0x1e8
- Kernel hoppla in pick_next_task_fair im 6.8.1-1002-Realtime-Kernel
- Kernel hoppla in aafs_create im 6.8.1-1002-Realtime-Kernel
- mm: Optimieren Sie die redundante Schleife
- MultiVM – L2-Gast(e), die stress-ng ausführen, bleiben beim Booten hängen, nachdem sie einen Absturz ausgelöst haben
- powerpc/qspinlock: Deadlock in der MCS-Warteschlange beheben
- Kernel-Regression mit ext4- und ea_inode-Mount-Flags und Ausübung von xattrs
- sched_ext: TASK_DEAD-Aufgaben müssen auf ops_enable in SCX umgeschaltet werden
- Zeitplan/Frist: Task_struct-Referenzleck beheben
- sched_ext: Teilen Sie den globalen DSQ pro NUMA-Knoten auf
- Der Aufruf von getcpu mit einer falsch ausgerichteten Adresse führt zu einer Kernel-Panik
- cygwin: pread/pwrite: EBADF-Fehler nach fork() verhindern
- Cygwin 3.5.4-1: Signalverarbeitung zerstört „Long Double“-Werte
- cygwin: timer_delete: Rückgabewert korrigieren
- Cygwin: Ändern Sie pthread_sigqueue(), um die Thread-ID zu akzeptieren
- Sicherheit/Schlüssel: Slab-out-of-bounds in key_task_permission behoben
- sched_ext: scx_tasks_lock nicht zu lange gedrückt halten
- sched/numa: Korrigieren Sie die mögliche Nullzeiger-Dereferenzierung in task_numa_work().
- reiserfs-Panik mit fsize-Stressor
Kernel-Verbesserungen, die Stress-NG verwendeten
2020:
- Selinux: Vervollständigen Sie das Inlining von Hashtab-Funktionen
- Selinux: Rollenübergänge in einer Hash-Tabelle speichern
- sched/rt: Optimiert die Einschränkungen des Prüfgruppen-RT-Schedulers
- sched/fair: Behandelt den Fall, dass task_h_load() 0 zurückgibt
- Zeitplan/Frist: Entdrosseln Sie PI-Boost-Threads beim Einreihen in die Warteschlange
- mm: Leistungsproblem bei madvise WILLNEED behoben
- powerpc/dma: dma_map_ops::get_required_mask reparieren
- Das Schließen von stress-ng führt zu Kernel-Oops(es) v5.6-rt und v5.4-rt
2021:
- Zurücksetzen von „mm, slub: Rest der Teilliste berücksichtigen, wenn acquire_slab() fehlschlägt
- mm: Speicher: orig_pmd zur Struktur vm_fault hinzufügen
- selftests/powerpc: Test des Schadensbegrenzungs-Patches hinzufügen
- dm crypt: Percpu_counter-Spinlock-Konflikt in crypt_page_alloc() vermeiden
- mm/migrate: Optimieren Sie Aktualisierungen der Herabstufungsreihenfolge während des Hotplug-Vorgangs
- powerpc/rtas: rtas_busy_delay() Verbesserungen
2022:
- sched/core: Abrechnung der erzwungenen Leerlaufzeit für alle Aufgaben außer Leerlaufaufgaben
- ipc/mqueue: get_tree_nodev() in mqueue_get_tree() verwenden
2023:
- mm/swapfile: cond_resched() in get_swap_pages() hinzufügen
- Modul: Fügen Sie Debug-Statistiken hinzu, um die Speicherauslastung zu ermitteln
- Modul: Zuweisung vermeiden, wenn das Modul bereits vorhanden und bereit ist
- sched: CFS-Bandbreiten-Timer verschachteln, um die Leistung einzelner Threads bei geringer Auslastung zu verbessern
- mm/khugepaged: überflüssiges try_to_freeze() entfernen
2024:
- mm/vmalloc: Sperrkonflikt von zweimal auf einmal beseitigt
- mm: mm->get_unmapped_area() auf ein Flag umstellen
- mm: immer inline _compound_head() mit CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
- mm: Optimieren Sie die redundante Schleife von mm_update_owner_next()
Präsentationen
- Stress-ng-Präsentation auf der ELCE 2019 Lyon
- Video der obigen Präsentation
- Mentoring-Sitzung der Linux Foundation, Mai 2022
- Präsentation „Kernel-Rezepte“, September 2023
- Linux Foundation, ELISA, Juni 2024
Zitate
- Tool zum Testen der Leistung des Linux-Kernels
2015:
- Verbesserung von Cloud-Energiemodellen zur Optimierung der Effizienz von Rechenzentren
- Tejo: Ein überwachtes Anomalieerkennungsschema für NewSQL-Datenbanken
- CoMA: Ressourcenüberwachung von Docker-Containern
- Eine Untersuchung der CPU-Auslastungsbeziehung zwischen Host und Gästen in einer Cloud-Infrastruktur
2016:
- Zunehmender Plattformdeterminismus PQOS DPDK
- Auf dem Weg zu einem energieeffizienten Datenmanagement im HPC: Der Open-Ethernet-Drive-Ansatz
- Analyse der CPU- und Speicherleistung bei dynamischer und dedizierter Ressourcenzuweisung mithilfe von XenServer in einer Rechenzentrumsumgebung
- Wie viel Strom verbraucht Ihr Server? Schätzung der Steckdosenleistung mithilfe von RAPL-Messungen
- DevOps für IoT-Anwendungen mit Mobilfunknetzen und Cloud
- Ein Workload-Simulator für virtuelle Netzwerkfunktionen
- Charakterisierung und Reduzierung plattformübergreifender Leistungsschwankungen durch Virtualisierung auf Betriebssystemebene
- Wie viel Strom verbraucht Ihr Server? Schätzung der Steckdosenleistung mithilfe von RAPL-Messungen
- UIE: Benutzerzentrierte Interferenzschätzung für Cloud-Anwendungen
2017:
- Automatische Skalierung von Containern: die Auswirkungen relativer und absoluter Metriken
- Testen des Windows-Subsystems für Linux
- Praktische Analyse des Precision Time Protocol unter verschiedenen Arten von Systemlast
- Auf dem Weg zur energiebewussten Kostenvorhersage virtueller Maschinen in Clouds
- Algorithmen und Architekturen für die Parallelverarbeitung
- Fortschrittliche Konzepte und Tools für die erneuerbare Energieversorgung von Rechenzentren
- Überwachung und Modellierung von Open Compute Servern
- Experimentelle und numerische Analyse zur möglichen Wärmewiederverwendung in flüssigkeitsgekühlten Rechenzentren
- Modellierung und Analyse der Leistung unter Interferenz in der Cloud
- Messen und reduzieren Sie effektiv Kernel-Latenzen bei Echtzeiteinschränkungen
- Überwachung und Analyse der CPU-Lastbeziehungen zwischen Host und Gästen in einer Cloud-Netzwerkinfrastruktur
- Messung der Auswirkungen des Preempt-RT-Patches
- Zuverlässige Bibliotheksidentifikation mithilfe von VMI-Techniken
- Elastic-PPQ: Ein zweistufiges autonomes System für die Verarbeitung räumlicher Präferenzabfragen über einen dynamischen Datenstrom
- OpenEPC-Integration in 5GTN als NFV-Proof of Concept
- Zeitbewusste dynamische binäre Instrumentierung
- Erfahrungsbericht: Log Mining mit natürlicher Sprachverarbeitung und Anwendung zur Anomalieerkennung
- Charakterisierung von Prozessinterferenzen mit gemischter Zeitkritikalität auf einem Multicore-Linux-System
- Cloud-Orchestrierung auf Anwendungsebene
2018:
- Multicore-Emulation in einer virtualisierten Umgebung
- Stress-SGX: Belasten und belasten Sie Ihre Enklaven für Spaß und Gewinn
- quiho: Automatisierte Leistungsregressionstests unter Verwendung abgeleiteter Ressourcennutzungsprofile
- Analyse der Speicheroptimierung von Hypervisoren und virtuellen Maschinen
- Echtzeittests mit Fuego
- FECBench: Ein erweiterbares Framework zur Lokalisierung von Leistungsbeeinträchtigungsquellen im Cloud-Edge-Ressourcenspektrum
- Quantifizierung der Interaktion zwischen strukturellen Eigenschaften von Software und Hardware in der ARM Big.LITTLE-Architektur
- RAPL in Aktion: Erfahrungen im Einsatz von RAPL für Leistungsmessungen
2019:
- Leistungsisolation von am selben Ort verteilten Workloads in einer Container-basierten Fahrzeugsoftwarearchitektur
- Analyse und Erkennung von Cache-basierten Exploits
- kMVX: Erkennung von Kernel-Informationslecks mit multivarianter Ausführung
- Skalierbarkeit von Kubernetes unter AWS
- Eine Studie zu Leistungskennzahlen für die automatische Skalierung CPU-intensiver Containeranwendungen
- Scavenger: Ein Black-Box-Batch-Workload-Ressourcenmanager zur Verbesserung der Auslastung in Cloud-Umgebungen
- Schätzung der Leistung von Cloud-Anwendungen basierend auf Mikro-Benchmark-Profiling
- Anomalieerkennung in NFV mithilfe einer baumbasierten unüberwachten Lernmethode
2020:
- Leistungs- und Energiekompromisse für parallele Anwendungen auf heterogenen Multiprozessorsystemen
- C-Balancer: Ein System zur Containerprofilierung und -planung
- Modellierung latenter VM-Eigenschaften und Vorhersage der Anwendungsleistung mithilfe der halbüberwachten nicht-negativen Matrixfaktorisierung
- Halbdynamischer Lastausgleich: effizientes verteiltes Lernen in nicht dedizierten Umgebungen
- Eine Leistungsanalyse hardwaregestützter Sicherheitstechnologien
- Green Cloud Software Engineering für die Verarbeitung großer Datenmengen
- Echtzeiterkennung für Cache-Seitenkanalangriffe mithilfe des Performance Counter Monitor
- Untergrabung der Integritätsmessarchitektur von Linux
- Leistungsbewertung in Echtzeit mithilfe einer schnellen Interrupt-Anfrage auf einem Standard-Linux-Kernel
- Niedriger Energieverbrauch auf Post-Moore-Plattformen für die HPC-Forschung
- Verwalten der Latenz in einer Edge-Cloud-Umgebung
- Entmystifizierung der Echtzeit-Linux-Planungslatenz
2021:
- Streamline: Ein schneller, leerer Cache-Cache-Covert-Channel-Angriff durch die Ermöglichung asynchroner Absprachen
- Experimentelle Analyse in Hadoop MapReduce: Ein genauerer Blick auf Fehlererkennungs- und Wiederherstellungstechniken
- Leistungsmerkmale des BlueField-2 SmartNIC
- Bewertung der Latenz in eingebetteten Multiprozessorsystemen für das Smart Grid
- In Arbeit: Timing-Vielfalt als Schutzmechanismus
- Sequentielle Deep-Learning-Architekturen zur Anomalieerkennung in Funktionsketten virtueller Netzwerke
- WattEdge: Ein ganzheitlicher Ansatz für empirische Energiemessungen im Edge Computing
- PTEMagnet: Feinkörnige physische Speicherreservierung für schnellere Page Walks in öffentlichen Clouds
- Der Preis von Meltdown und Spectre: Energieaufwand für Abhilfemaßnahmen auf Betriebssystemebene
- Eine empirische Studie zu thermischen Angriffen auf Edge-Plattformen
- Sage: Praktisches und skalierbares ML-gesteuertes Leistungs-Debugging in Microservices
- Ein verallgemeinerter Ansatz für die praktische Aufgabenzuweisung mithilfe eines MAPE-K-Regelkreises]
- Auf dem Weg zu einer unabhängigen Laufzeit-Cloud-Überwachung
- FIRESTARTER 2: Dynamische Codegenerierung für Prozessor-Stresstests
- Leistungsvergleich zwischen einem Kubernetes-Cluster und einem eingebetteten System
- Leistungsuntersuchung von Virtualisierungssystemen
- Hardware austricksen, um Software effizient zu sichern
2022:
- Eine allgemeine Methode zur Bewertung des Overheads bei der Konsolidierung von Servern: Leistungseinbußen in virtuellen Maschinen und Containern
- FedComm: Kommunikationsprotokolle für Edge-basiertes Federated Learning verstehen
- Erreichen der Isolation in industriellen Edge-Systemen mit gemischter Kritikalität mit Echtzeit-Containern
- Entwurf und Implementierung eines auf maschinellem Lernen basierenden Fehlervorhersagesystems in der Cloud-Infrastruktur
- Die TSN-Bausteine unter Linux
- uKharon: Ein Mitgliedschaftsdienst für Mikrosekundenanwendungen
- Evaluierung der Secure Enclave-Firmware-Entwicklung für moderne RISC-V-Workstations. Moderne RISC-V-Workstations
- Evaluierung von Real-Time Linux auf der RISC-V-Prozessorarchitektur
- Hertzbleed: Power-Side-Channel-Angriffe in Remote-Timing-Angriffe auf x86 umwandeln
- Don't Mesh Around: Seitenkanalangriffe und Schadensbegrenzung auf Mesh-Verbindungen
- Auswirkungen auf die Leistung für Multi-Core-RISC-V-Systeme mit dedizierter Sicherheitshardware
2023:
- Bekämpfen Sie Hardware mit Hardware: Systemweite Erkennung und Abwehr von Seitenkanalangriffen mithilfe von Leistungsindikatoren
- Wir stellen k4.0s vor: ein Modell für die Orchestrierung von Containern mit gemischter Kritikalität in der Industrie 4.0
- Eine umfassende Studie zur Optimierung von Systemen mit Datenverarbeitungseinheiten
- Schätzung der Leistung von Cloud-Anwendungen basierend auf Mikro-Benchmark-Profiling
- PSPRAY: Timing-Side-Channel-basierte Linux-Kernel-Heap-Exploitation-Technik
- Robuste und genaue Erkennung und Vorhersage von Leistungsanomalien für Cloud-Anwendungen: ein neuartiges, auf Ensemble-Lernen basierendes Framework
- Machbarkeitsstudie für ein Python-basiertes eingebettetes Echtzeit-Steuerungssystem
- Anpassung von parallelem SaaS an heterogene, am selben Ort befindliche Cloud-Ressourcen
- Eine Methodik und ein Rahmenwerk zur Bestimmung der Isolationsfähigkeiten von Virtualisierungstechnologien
- Datenstation: Delegierte, vertrauenswürdige und überprüfbare Berechnungen zur Ermöglichung der Datenfreigabe in Konsortien mit einem Daten-Treuhandkonto
- Eine empirische Untersuchung ressourcenbelastender Fehler in Edge-Computing-Anwendungen
- Finden von unzuverlässigen Tests in JavaScript-Anwendungen mithilfe von Stress und Neuordnung der Testsuite
- Die Kraft der Telemetrie: Aufdeckung softwarebasierter Seitenkanalangriffe auf Apple M1/M2-Systeme
- Eine Leistungsbewertung eines eingebetteten Multi-Core-Systems mit gemischter Kritikalität basierend auf PREEMPT RT Linux
- Datenlecks in isolierten virtualisierten Enterprise-Computing-Systemen
- Überlegungen zum Benchmarking der Netzwerkleistung in Container-Infrastrukturen
- EnergAt: Feingranulare Energiezuordnung für mehrere Mieter
- Quantifizierung des Sicherheitsprofils von Linux-Anwendungen
- Gotham Testbed: ein reproduzierbares IoT-Testbed für Sicherheitsexperimente und Datensatzgenerierung
- Profiling mit Vertrauen: Systemüberwachung aus vertrauenswürdigen Ausführungsumgebungen
- Wärmebewusste Inferenz auf dem Gerät mithilfe von Single-Layer-Parallelisierung mit heterogenen Prozessoren
- Auf dem Weg zu einer schnellen, adaptiven und hardwaregestützten Benutzerraumplanung
- Heterogene Anomalieerkennung für Softwaresysteme durch halbüberwachte modalübergreifende Aufmerksamkeit
- Grüne Codierung: ein empirischer Ansatz zur Nutzung des Energieverbrauchs von Softwarediensten
- Verbesserung der empirischen Software-Performance-Engineering-Forschung mit Ereignissen auf Kernel-Ebene: Ein umfassender System-Tracing-Ansatz
- Cloud White: Erkennen und Schätzen der QoS-Verschlechterung latenzkritischer Workloads in der Public Cloud
- Dynamisches Ressourcenmanagement für Cloud-native massensynchrone parallele Anwendungen
- Auf dem Weg zur serverlosen Optimierung mit In-Place-Skalierung
- Ein modularer Ansatz zur Gestaltung eines experimentellen Rahmens für die Ressourcenmanagementforschung
- Gezielte Deanonymisierung über den Cache-Seitenkanal: Angriffe und Verteidigung
- Validierung des Vollsystem-RISC-V-Simulators: Ein systematischer Ansatz
- Leichte Implementierung des paketspezifischen Dienstschutzes in eBPF/XDP
- ROS2 Echtzeit-Leistungsoptimierung und -bewertung
- Experimentelle und numerische Analyse des thermischen Verhaltens eines einphasig tauchgekühlten Rechenzentrums
2024:
- IdleLeak: Ausnutzung der Nebenwirkungen des Leerlaufzustands für Informationslecks
- Profiling mit Vertrauen: Systemüberwachung aus vertrauenswürdigen Ausführungsumgebungen
- Exemplarische Bestimmung der Cgroups-basierten QoS-Isolierung für eine Datenbank-Workload
- BARO: Robuste Ursachenanalyse für Microservices mittels multivariater bayesianischer Online-Änderungspunkterkennung
- Unterscheidung von Leistungsanomalien aufgrund von Workload-Änderungen in Cloud-nativen Anwendungen
- Gehen Sie einen Schritt weiter: Page Spray bei der Ausnutzung des Linux-Kernels verstehen
- Auswirkungen des Stromverbrauchs in Container-Clouds: Eine umfassende Analyse von Open-Source-Tools zur Leistungsmessung
- Bewertung der thermischen Belastung beim heterogenen IoT-basierten Federated Learning
- Anomalieerkennung bei der geschäftskritischen Anrufverarbeitung
- Eine vorläufige Bewertung der Echtzeitfähigkeiten von Real-Time Linux auf Raspberry Pi 5
- Ein Vergleich von Echtzeit-Linux-basierten Architekturen für eingebettete Musikanwendungen
- Nona: Präzises Leistungsvorhersagemodell mithilfe neuronaler Netze
Ich freue mich darauf, der Stress-ng-Projektseite alle Zitate zu Forschungsarbeiten oder Projekten hinzuzufügen, die Stress-ng verwenden. Ich freue mich auch über Informationen zu Kernel-Fehlern oder Leistungseinbußen, die bei stress-ng auftreten.
Mitwirkende
Vielen Dank an die folgenden Mitwirkenden bei stress-ng (in alphabetischer Reihenfolge):
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 Elmously, 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 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.