stress-ng (stresser la prochaine génération)
stress-ng testera un système informatique de différentes manières sélectionnables. Il a été conçu pour faire fonctionner divers sous-systèmes physiques d'un ordinateur ainsi que les différentes interfaces du noyau du système d'exploitation. Caractéristiques de stress :
- Plus de 350 tests de résistance
- Plus de 80 tests de stress spécifiques au processeur qui exercent des opérations de virgule flottante, d'entier, de manipulation de bits et de contrôle du flux
- Plus de 20 tests de stress de mémoire virtuelle
- Plus de 40 tests de résistance du système de fichiers
- Plus de 30 tests de résistance du cache mémoire/CPU
- portable : build sur Linux (Debian, Devuan, RHEL, Fedora, Centos, Slackware OpenSUSE, Ubuntu, etc.), Solaris, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Minix, Android, MacOS X, Serenity OS, GNU/Hurd, Haiku, sous-système Windows pour Linux, Cygwin et SunOs/Dilos/Solaris. avec gcc, musl-gcc, clang, icc, icx, tcc et pcc.
- testé sur alpha, armel, armhf, arm64, hppa, i386, loong64, m68k, mips32, mips64, power32, ppc64el, risc-v, sh4, s390x, sparc64, x86-64
stress-ng était à l'origine destiné à faire travailler dur une machine et à déclencher des problèmes matériels tels que des dépassements thermiques ainsi que des bogues du système d'exploitation qui ne se produisent que lorsqu'un système est durement mis à rude épreuve. Utilisez stress-ng avec prudence, car certains tests peuvent faire tourner un système à chaud sur du matériel mal conçu et peuvent également provoquer un ralentissement excessif du système qui peut être difficile à arrêter.
stress-ng peut également mesurer les taux de débit des tests ; cela peut être utile pour observer les changements de performances dans différentes versions du système d'exploitation ou types de matériel. Cependant, il n’a jamais été conçu pour être utilisé comme une suite de tests de référence précise, ne l’utilisez donc PAS de cette manière.
L'exécution de stress-ng avec les privilèges root ajustera les paramètres de mémoire insuffisante sur les systèmes Linux pour rendre les facteurs de stress impossibles à éliminer dans les situations de mémoire insuffisante, alors utilisez-le judicieusement. Avec le privilège approprié, le stress peut permettre d'ajuster la classe ionique et les niveaux d'ionice, encore une fois, cela doit être utilisé avec précaution.
Tarballs
Les archives tar de chaque version de stress-ng peuvent être téléchargées en utilisant l'URL :
https://github.com/ColinIanKing/stress-ng/tarball/version
où version est le numéro de version pertinent, par exemple :
https://github.com/ColinIanKing/stress-ng/tarball/V0.13.05
Exécution du dernier instantané de stress-ng dans un conteneur
docker run --rm ghcr.io/colinianking/stress-ng --help
ou
docker run --rm colinianking/stress-ng --help
Paquets Debian pour Ubuntu
Des versions récentes de stress-ng sont disponibles dans le ppa Ubuntu stress-ng pour diverses versions d'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
Construire le stress
Pour construire, les bibliothèques suivantes garantiront une construction stress-ng entièrement fonctionnelle : (notez que libattr n'est pas requis pour les versions disto plus récentes).
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 (versions statiques) :
- 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- développer 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
Linux alpin :
- 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
Snaps :
- stress-ng n'est pas destiné à être capturé avec Snapcraft. Cela est strictement contraire à la volonté du responsable du projet et du développeur principal.
REMARQUE : la build tentera de détecter les dépendances de build et construira une image avec des fonctionnalités désactivées si les bibliothèques de support ne sont pas installées.
Au moment de la construction, stress-ng détectera les fonctionnalités du noyau disponibles sur le système de construction cible et activera les tests de contrainte de manière appropriée. Stress-ng a été testé sur Ubuntu, Debian, Debian GNU/Hurd, Slackware, RHEL, SLES, Centos, kFreeBSD, OpenBSD, NetBSD, FreeBSD, Debian kFreeBSD, DragonFly BSD, OS X, Minix, Solaris 11.3, OpenIndiana et Hiaku. Les ports vers d'autres systèmes d'exploitation de type POSIX/UNIX devraient être relativement simples.
REMARQUE : exécutez TOUJOURS make clean
après avoir récupéré les modifications du référentiel git pour forcer la build à régénérer le fichier de configuration de build. Les constructions parallèles utilisant make -j sont prises en charge.
Pour construire sur des systèmes BSD, il faut gcc et GNU make :
CC=gcc gmake clean
CC=gcc gmake
Pour construire sur des systèmes OS X, utilisez simplement :
Pour construire sur MINIX, gmake et clang sont requis :
CC=clang gmake clean
CC=clang gmake
Pour construire sur SunOS, il faut GCC et GNU make, build en utilisant :
CC=gcc gmake clean
CC=gcc gmake
Pour construire sur Dilos, il faut GCC et GNU make, build en utilisant :
CC=gcc gmake clean
CC=gcc gmake
Pour construire sur Haiku R1/beta5 :
# GCC
make clean
make
# Clang
CC=clang make clean
CC=clang make
Pour créer une image statique (par exemple, pour Android), utilisez :
# 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
Pour construire avec le compilateur Tiny C :
Pour construire avec le compilateur C portable PCC, utilisez :
Pour construire avec la bibliothèque musl C :
Pour construire avec le compilateur Intel C, utilisez icc :
Pour construire avec le compilateur Intel C icx, utilisez :
Pour effectuer une compilation croisée à l'aide de gcc, utilisez une version statique, spécifiez la chaîne d'outils (CC et CXX). Par exemple, une construction croisée mips64 :
make clean
STATIC=1 CC=mips64-linux-gnuabi64-gcc CXX=mips64-linux-gnuabi64-g++ make -j $(nproc)
Pour effectuer une compilation croisée pour qnx, par exemple, une compilation croisée aarch64 qnx :
make clean
CC=aarch64-unknown-nto-qnx7.1.0-gcc CXX=aarch64-unknown-nto-qnx7.1.0-g++ STATIC=1 make
Option de build : DEBUG, build avec le débogage (-g) activé :
Option de build : LTO, Link Time Optimization (amélioration des performances d'environ 1 à 2 % sur les facteurs de stress de calcul) :
Option de construction : PEDANTIC, activez les indicateurs de construction pédants :
make clean
PEDANTIC=1 make
Option de build : GARBAGE_COLLECT, avertir du code inutilisé :
make clean
GARBAGE_COLLECT=1 make
Option de construction : UNEXPECTED=1, avertir du code de sortie #ifdef'd inattendu :
make clean
UNEXPECTED=1 make
Contribuer au stress :
Envoyez des correctifs à [email protected] ou des demandes de fusion sur https://github.com/ColinIanKing/stress-ng
Guide de référence de démarrage rapide
Le guide de référence Ubuntu stress-ng contient un bref aperçu et des exemples concrets.
Exemples
Exécutez 4 processeurs, 2 mémoires virtuelles, 1 disque et 8 facteurs de stress fork pendant 2 minutes et imprimez les mesures :
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
Exécutez le facteur de stress matriciel sur tous les processeurs en ligne pendant 60 secondes et mesurez la température :
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)
Exécutez un mélange de 4 facteurs de stress d'E/S et vérifiez les modifications dans les métadonnées SMART du disque :
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
Analysez les appels système à l'aide du 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)
Générez et mesurez les échecs de branche à l'aide de métriques de performances :
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%)
Exécutez des permutations de facteurs de stress d'E/S sur un système de fichiers ZFS, à l'exclusion du facteur de stress rawdev avec vérification des erreurs du journal du noyau :
stress-ng --class io --permute 0 -x rawdev -t 1m --vmstat 1 --klog-check --temp-path /zfs-pool/test
x86 uniquement : mesurez la puissance à l'aide des interfaces RAPL sur 8 facteurs de stress matriciels 3D simultanés avec vérification activée. Notez que la lecture de RAPL nécessite l'autorisation 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
Mesurer la résidence dans l’État 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
Bugs et régressions trouvés avec stress-ng
stress-ng a trouvé divers bogues/régressions du noyau, de QEMU et de la libc ; des correctifs appropriés ont été apportés pour résoudre ces problèmes :
2015 :
- CLÉS : assurez-vous de libérer la modification du tableau associatif si la modification est valide
- proc : correction de l'erreur -ESRCH lors de l'écriture dans /proc/$pid/coredump_filter
- Erreur de division SMP
2016 :
- fs/locks.c : problème du noyau lors du test de résistance du verrouillage Posix
- sched/core : Correction d'une course entre try_to_wake_up() et une tâche réveillée
- devpts : correction du déréférencement du pointeur nul en cas d'échec de l'allocation de mémoire
- arm64 : n'appliquez pas un alignement strict de 16 octets sur le pointeur de pile
2017 :
- ARM : dts : meson8b : ajout d'une zone mémoire réservée pour corriger les blocages silencieux
- ARM64 : dts : meson-gx : ajouter des zones de mémoire réservées au micrologiciel
- ext4 : verrouille le bloc xattr avant de le vérifier
- rcu_preempt a détecté des blocages sur les processeurs/tâches
- BOGUE : impossible de gérer le déréférencement du pointeur NULL du noyau
- AVERTISSEMENT : détection d'une éventuelle dépendance de verrouillage circulaire
2018 :
- Illumos : ofdlock() : échec de l'assertion : lckdat->l_start == 0
- debugobjects : utiliser la liste gratuite globale dans __debug_check_no_obj_freed()
- ext4_validate_inode_bitmap:99 : comm stress-ng : bitmap d'inode corrompu
- virtio/s390 : correction de la course dans ccw_io_helper()
2019 :
- mm/page_idle.c : correction d'un problème car end_pfn est plus grand que max_pfn
- mm : compactage : évitez l'utilisation du processeur à 100 % pendant le compactage lorsqu'une tâche est supprimée
- mm/vmalloc.c : précharger un processeur avec un objet à des fins de partage
- perf evlist : utilisez unshare (CLONE_FS) dans les threads sb pour laisser setns (CLONE_NEWNS) fonctionner
- riscv : rejeter les appels système invalides en dessous de -1
2020 :
- RISC-V : ne pas autoriser l'écriture et l'exécution uniquement des requêtes de mappage de page dans mmap
- riscv : définissez max_pfn sur le PFN de la dernière page
- crypto: hisilicon - mettre à jour le paramètre du module du pilote SEC
- net : atm : correction de la mise à jour de l'index de position dans lec_seq_next
- sched/debug : correction de la corruption de la mémoire causée par plusieurs petites lectures d'indicateurs
- ocfs2 : ratelimit l'avis « temps de recherche maximum atteints »
- l'utilisation de perf peut planter le noyau avec un débordement de pile
- le stress sur le noyau focal activé par gcov déclenche OOPS
- corruption du bug du noyau list_del sur s390x à partir du lien symbolique stress-ng mknod et stress-ng
2021 :
- sparc64 : Correction du filtrage des opcodes dans la gestion des charges sans erreur
- ouvrir un fichier avec O_DIRECT sur un système de fichiers qui ne le prend pas en charge laissera un fichier vide
- verrouillage/atomique : sparc : correction arch_cmpxchg64_local()
- btrfs : correction de l'épuisement du tableau de fragments du système en raison d'allocations simultanées
- btrfs : retravailler l'allocation des fragments pour éviter l'épuisement du tableau de fragments du système
- btrfs : correction d'un blocage avec des allocations de fragments simultanées impliquant des fragments système
- verrouillage/atomique : sparc : correction arch_cmpxchg64_local()
- pipe : effectuez des notifications FASYNC pour chaque pipe IO, pas seulement les changements d'état
- io-wq : supprime l'allocation GFP_ATOMIC hors calendrier
- mm/swap : considérer le nombre maximum de pages dans iomap_swapfile_add_extent
- block : loop : correction du blocage entre l'ouverture et la suppression
- tmpfs : O_DIRECT | O_CREATE open signale un échec d'ouverture mais crée en fait un fichier
2022 :
- copy_process() : déplacer fd_install() hors de la section critique sighand->siglock
- minix : correction d'un bug lors de l'ouverture d'un fichier avec O_DIRECT
- arch/arm64 : correction de l'initialisation de la topologie pour la planification du cœur
- exécution de stress-ng sur Minux 3.4.0-RC6 sur amd64 assert dans vm/region.c:313
- Le test d'annulation de partage déclenche une erreur de page non gérée
- request_module DoS
- Régression de référence NUMA sous Linux 5.18
- Underflow dans mas_spanning_rebalance() et test
- mm/huge_memory : ne pas écraser swp_entry_t pendant le fractionnement THP
- AppArmor : régression de -42,5 % de stress-ng.kill.ops_per_sec en raison d'un commit
- clocksource : suspend temporairement le chien de garde lorsqu'une latence de lecture élevée est détectée
2023 :
- qemu-system-m68k segfaults sur l'opcode 0x4848
- rtmutex : Assurez-vous que le serveur supérieur est toujours réveillé
- mm/swap : correction de la course swap_info_struct entre swapoff et get_swap_pages()
- block, bfq : Correction d'une erreur de division par zéro sur un wsum nul
- riscv : mm : assurez-vous que les prot de VM_WRITE et VM_EXEC doivent être lisibles
- Rétablir "mm : vmscan : rendre le rétrécissement global de la dalle sans verrouillage"
- crash/suspension dans mm/swapfile.c:718 add_to_avail_list lors de l'exercice de stress-ng
- mm : correction de la condition de concurrence en écriture différée de zswap
- x86/fpu : définissez la fonctionnalité X86_FEATURE_OSXSAVE après avoir activé OSXSAVE dans CR4
- kernel/fork : méfiez-vous du contexte d'appel de __put_task_struct()
- arm64 : dts : ls1028a : ajouter des informations sur le cache l1 et l2
- filemap : ajoutez filemap_map_order0_folio() pour gérer le folio order0
- mm : Shrinker : ajouter une infrastructure pour attribuer dynamiquement un rétrécissement
- mm : rétrécissement : rendre le retrait global de la dalle sans verrouillage
- bcachefs : effacez btree_node_just_writing() lorsque le nœud est réutilisé ou expulsé
- tracing : correction du verrouillage incomplet lors de la désactivation des événements mis en mémoire tampon
- mm : migrate : correction du mappage de page incorrect lors de la migration de la page
- mm : mmap : mapper MAP_STACK à VM_NOHUGEPAGE
2024 :
- fs : améliore la robustesse de dump_mapping()
- tracing : assurer la visibilité lors de l'insertion d'un élément dans tracing_map
- connecteur/cn_proc : rétablir "connecteur : correction du nombre de proc_event_num_listeners non effacé"
- powerpc/pseries : correction de la précision du temps volé
- OpenBSD : libm : erreur de segmentation dans sincosl
- l'ouverture et la fermeture de /dev/dri/card0 dans une instance QEMU KVM arrêteront le système, 6.10.0-rc6+
- uprobes : empêche mutex_lock() sous rcu_read_lock()
- le système se bloque avec le noyau RT sur amd64
- AVERTISSEMENT : CPU : 17 PID : 118273 sur kernel/sched/deadline.c:794 setup_new_dl_entity+0x12c/0x1e8
- noyau oups dans pick_next_task_fair dans le noyau 6.8.1-1002-realtime
- noyau oups dans aafs_create dans le noyau 6.8.1-1002-realtime
- mm : optimiser la boucle redondante
- MultiVM - Les invités L2 exécutant stress-ng restent bloqués au démarrage après avoir déclenché un crash
- powerpc/qspinlock : Correction d'un blocage dans la file d'attente MCS
- régression du noyau avec les indicateurs de montage ext4 et ea_inode et exercice de xattrs
- sched_ext : les tâches TASK_DEAD doivent être basculées vers SCX sur ops_enable
- planification/date limite : correction d'une fuite de référence task_struct
- sched_ext : diviser le DSQ global par nœud NUMA
- appeler getcpu avec une adresse mal alignée provoque une panique du noyau
- cygwin : pread/pwrite : empêche l'erreur EBADF après fork()
- cygwin 3.5.4-1 : la gestion du signal détruit les valeurs « doubles longues »
- cygwin : timer_delete : correction de la valeur de retour
- cygwin : modifiez pthread_sigqueue() pour accepter l'identifiant du thread
- security/keys : correction de la dalle hors limites dans key_task_permission
- sched_ext : Ne maintenez pas scx_tasks_lock trop longtemps
- sched/numa : Correction du déréférencement potentiel du pointeur nul dans task_numa_work()
- reiserfs panique en utilisant le facteur de stress fsize
Améliorations du noyau utilisant le stress-ng
2020 :
- selinux : terminer l'intégration des fonctions de hashtab
- selinux : stocker les transitions de rôle dans une table de hachage
- sched/rt : Optimiser la vérification des contraintes du planificateur RT du groupe
- sched/fair : gérer le cas de task_h_load() renvoyant 0
- planification/date limite : libérer les threads boostés par PI pendant la mise en file d'attente
- mm : correction du problème de performances de Madvise WILLNEED
- powerpc/dma : Correction de dma_map_ops::get_required_mask
- stress-ng close provoque des oups du noyau v5.6-rt et v5.4-rt
2021 :
- Rétablir "mm, slub : considérer le reste de la liste partielle si acquire_slab() échoue
- mm : mémoire : ajoutez orig_pmd à la structure vm_fault
- selftests/powerpc : ajout d'un test de correctifs d'atténuation
- dm crypt : évitez les conflits de verrouillage tournant percpu_counter dans crypt_page_alloc()
- mm/migrate : optimisation des mises à jour des ordres de rétrogradation au moment du hotplug
- powerpc/rtas : améliorations de rtas_busy_delay()
2022 :
- sched/core : comptabilisation du temps d'inactivité forcé pour toutes les tâches, à l'exception des tâches inactives
- ipc/mqueue : utilisez get_tree_nodev() dans mqueue_get_tree()
2023 :
- mm/swapfile : ajoutez cond_resched() dans get_swap_pages()
- module : ajoutez des statistiques de débogage pour aider à identifier la pression de la mémoire
- module : éviter l'allocation si le module est déjà présent et prêt
- sched : entrelacez les minuteries de bande passante cfs pour améliorer les performances d'un seul thread à faible utilisation
- mm/khugepaged : supprimez try_to_freeze() redondant
2024 :
- mm/vmalloc : suppression du conflit de verrouillage de deux à une
- mm : passez mm->get_unmapped_area() à un indicateur
- mm : toujours en ligne _compound_head() avec CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
- mm : optimiser la boucle redondante de mm_update_owner_next()
Présentations
- Présentation du stress à l'ELCE 2019 Lyon
- Vidéo de la présentation ci-dessus
- Session de mentorat de la Linux Foundation, mai 2022
- Présentation des recettes de noyau, septembre 2023
- Fondation Linux, ELISA, juin 2024
Citations
- Outil de test des performances du noyau Linux
2015 :
- Améliorer les modèles énergétiques du Cloud pour optimiser l'efficacité des centres de données
- Tejo : un schéma de détection d'anomalies supervisé pour les bases de données NewSQL
- CoMA : Surveillance des ressources des conteneurs Docker
- Une enquête sur la relation d'utilisation du processeur entre l'hôte et les invités dans une infrastructure Cloud
2016 :
- Augmentation du déterminisme de la plateforme PQOS DPDK
- Vers une gestion des données économe en énergie dans le HPC : l'approche Open Ethernet Drive
- Analyse des performances du processeur et de la mémoire sur l'allocation dynamique et dédiée des ressources à l'aide de XenServer dans un environnement Data Center
- Quelle quantité d’énergie votre serveur consomme-t-il ? Estimation de la puissance d'une prise murale à l'aide des mesures RAPL
- DevOps pour les applications IoT utilisant les réseaux cellulaires et le cloud
- Un simulateur de charge de travail de fonction de réseau virtuel
- Caractériser et réduire la variabilité des performances entre plates-formes à l'aide de la virtualisation au niveau du système d'exploitation
- Quelle est la consommation électrique de votre serveur ? Estimation de la puissance d'une prise murale à l'aide des mesures RAPL
- UIE : estimation des interférences centrée sur l'utilisateur pour les applications cloud
2017 :
- Mise à l'échelle automatique des conteneurs : l'impact des métriques relatives et absolues
- Test du sous-système Windows pour Linux
- Analyse pratique du Precision Time Protocol sous différents types de charge du système
- Vers une prévision des coûts des machines virtuelles soucieuses de l'énergie dans les cloud
- Algorithmes et architectures pour le traitement parallèle
- Concepts et outils avancés pour l'approvisionnement en énergie renouvelable des centres de données
- Surveillance et modélisation de serveurs de calcul ouverts
- Analyse expérimentale et numérique pour la réutilisation potentielle de la chaleur dans les centres de données refroidis par liquide
- Modélisation et analyse des performances sous interférence dans le cloud
- Mesurez et réduisez efficacement les latences du noyau pour les contraintes en temps réel
- Surveillance et analyse des relations de charge CPU entre l'hôte et les invités dans une infrastructure réseau cloud
- Mesurer les impacts du patch Preempt-RT
- Identification fiable des bibliothèques à l'aide des techniques VMI
- Elastic-PPQ : un système autonome à deux niveaux pour le traitement des requêtes de préférences spatiales sur un flux de données dynamique
- Intégration d'OpenEPC dans 5GTN comme preuve de concept NFV
- Instrumentation binaire dynamique sensible au temps
- Rapport d'expérience : Exploration de journaux à l'aide du traitement du langage naturel et application à la détection d'anomalies
- Caractérisation des interférences de processus à criticité temporelle mixte sur un système Linux multicœur
- Orchestration du cloud au niveau de l'application
2018 :
- Émulation multicœur sur environnement virtualisé
- Stress-SGX : chargez et stressez vos enclaves pour le plaisir et le profit
- quiho : Tests de régression de performances automatisés à l'aide de profils d'utilisation des ressources déduits
- Analyse de l'optimisation de la mémoire de l'hyperviseur et de la machine virtuelle
- Tests en temps réel avec Fuego
- FECBench : un cadre extensible pour identifier les sources d'interférences de performances dans le spectre des ressources Cloud-Edge
- Quantification de l'interaction entre les propriétés structurelles du logiciel et du matériel dans l'architecture ARM Big.LITTLE
- RAPL en action : expériences d'utilisation de RAPL pour les mesures de puissance
2019 :
- Isolation des performances de la charge de travail colocalisée dans une architecture logicielle de véhicule basée sur des conteneurs
- Analyse et détection des exploits basés sur le cache
- kMVX : Détection des fuites d'informations sur le noyau avec l'exécution à plusieurs variantes
- Évolutivité de Kubernetes exécuté sur AWS
- Une étude sur les mesures de performances pour les applications conteneurisées à mise à l'échelle automatique et gourmandes en CPU
- Scavenger : un gestionnaire de ressources de charge de travail par lots en boîte noire pour améliorer l'utilisation dans les environnements cloud
- Estimation des performances des applications cloud sur la base du profilage de micro-benchmarks
- Détection d'anomalies dans NFV à l'aide d'une méthode d'apprentissage non supervisé basée sur une arborescence
2020 :
- Compromis en termes de performances et d'énergie pour des applications parallèles sur des systèmes multi-traitements hétérogènes
- C-Balancer : un système de profilage et de planification des conteneurs
- Modélisation des caractéristiques latentes des VM et prévision des performances des applications à l'aide d'une factorisation matricielle non négative semi-supervisée
- Équilibrage de charge semi-dynamique : apprentissage distribué efficace dans des environnements non dédiés
- Une analyse des performances des technologies de sécurité assistées par matériel
- Ingénierie logicielle Green Cloud pour le traitement du Big Data
- Détection en temps réel des attaques par canal côté cache à l'aide du moniteur de compteur de performances
- Subvertir l'architecture de mesure d'intégrité de Linux
- Évaluation des performances en temps réel à l'aide d'une requête d'interruption rapide sur un noyau Linux standard
- Faible consommation d'énergie sur les plates-formes post-Moore pour la recherche HPC
- Gestion de la latence dans un environnement Edge-Cloud
- Démystifier la latence de planification Linux en temps réel
2021 :
- Rationaliser : une attaque par canal secret de cache rapide et sans vidage en activant la collusion asynchrone
- Analyse expérimentale dans Hadoop MapReduce : examen plus approfondi des techniques de détection et de récupération des pannes
- Caractéristiques de performances du BlueField-2 SmartNIC
- Évaluation de la latence dans les systèmes embarqués multitraitements pour le réseau intelligent
- Travail en cours : la diversité temporelle comme mécanisme de protection
- Architectures d'apprentissage profond séquentiel pour la détection d'anomalies dans les chaînes de fonctions de réseau virtuel
- WattEdge : une approche holistique pour les mesures empiriques d'énergie dans l'Edge Computing
- PTEMagnet : réservation de mémoire physique à grain fin pour des parcours de page plus rapides dans les cloud publics
- Le prix de Meltdown et Spectre : surcharge énergétique des atténuations au niveau du système d'exploitation
- Une étude empirique des attaques thermiques sur les plateformes Edge
- Sage : débogage de performances pratique et évolutif basé sur le ML dans les microservices
- Une approche généralisée pour l'attribution pratique des tâches à l'aide d'une boucle de contrôle MAPE-K]
- Vers une surveillance indépendante du cloud au moment de l'exécution
- FIRESTARTER 2 : génération de code dynamique pour les tests de contrainte du processeur
- Comparaison des performances entre un cluster Kubernetes et un système embarqué
- Exploration des performances des systèmes de virtualisation
- Tromper le matériel pour sécuriser efficacement les logiciels
2022 :
- Une méthode générale pour évaluer la surcharge lors de la consolidation de serveurs : dégradation des performances dans les machines virtuelles et les conteneurs
- FedComm : Comprendre les protocoles de communication pour l'apprentissage fédéré basé sur Edge
- Réaliser l'isolation dans les systèmes de périphérie industriels à criticité mixte avec des conteneurs en temps réel
- Conception et mise en œuvre d'un système de prévision des pannes basé sur l'apprentissage automatique dans une infrastructure cloud
- Les éléments de base de TSN sous Linux
- uKharon : un service d'adhésion pour les applications en microseconde
- Évaluation du développement de micrologiciels Secure Enclave pour les stations de travail RISC-V contemporainesStation de travail RISC-V contemporaine
- Évaluation de Linux temps réel sur l'architecture de processeur RISC-V
- Hertzbleed : transformer les attaques de canal latéral de puissance en attaques temporelles à distance sur x86
- Ne vous embrouillez pas : attaques par canal secondaire et atténuations sur les interconnexions maillées
- Implications en termes de performances pour les systèmes RISC-V multicœurs avec matériel de sécurité dédié
2023 :
- Combattez le matériel par le matériel : détection et atténuation des attaques par canal secondaire à l'échelle du système à l'aide de compteurs de performances
- Présentation de k4.0s : un modèle pour l'orchestration de conteneurs à criticité mixte dans l'industrie 4.0
- Une étude complète sur l'optimisation des systèmes avec des unités de traitement de données
- Estimation des performances des applications cloud sur la base du profilage de micro-benchmarks
- PSPRAY : Technique d'exploitation du tas du noyau Linux basée sur un canal latéral de synchronisation
- Détection et prédiction robustes et précises des anomalies de performances pour les applications cloud : un nouveau cadre basé sur l'apprentissage d'ensemble
- Étude de faisabilité pour un système de contrôle temps réel embarqué basé sur Python
- Adaptation du SaaS parallèle aux ressources cloud hétérogènes colocalisées
- Une méthodologie et un cadre pour déterminer les capacités d'isolation des technologies de virtualisation
- Station de données : calcul délégué, fiable et vérifiable pour permettre aux consortiums de partage de données avec un dépôt de données
- Une étude empirique des défauts mettant en valeur les ressources dans les applications Edge Computing
- Recherche de tests instables dans les applications JavaScript à l'aide de la réorganisation du stress et des suites de tests
- La puissance de la télémétrie : découverte des attaques logicielles par canal secondaire sur les systèmes Apple M1/M2
- Une évaluation des performances d'un système multicœur embarqué à criticité mixte basé sur PREEMPT RT Linux
- Fuite de données dans les systèmes informatiques d'entreprise virtualisés isolés
- Considérations relatives à l'analyse comparative des performances du réseau dans les infrastructures conteneurisées
- EnergAt : attribution d'énergie fine pour la multilocation
- Quantification du profil de sécurité des applications Linux
- Gotham Testbed : un banc d'essai IoT reproductible pour les expériences de sécurité et la génération d'ensembles de données
- Profilage avec confiance : surveillance du système à partir d'environnements d'exécution de confiance
- Inférence thermique sur appareil utilisant la parallélisation monocouche avec des processeurs hétérogènes
- Vers une planification de l'espace utilisateur rapide, adaptative et assistée par matériel
- Détection d'anomalies hétérogènes pour les systèmes logiciels via une attention multimodale semi-supervisée
- Green coding : une approche empirique pour maîtriser la consommation énergétique des services logiciels
- Améliorer la recherche empirique en ingénierie des performances logicielles avec des événements au niveau du noyau : une approche globale de traçage du système
- Cloud White : Détection et estimation de la dégradation de la qualité de service des charges de travail critiques en termes de latence dans le cloud public
- Gestion dynamique des ressources pour les applications parallèles synchrones en masse natives du cloud
- Vers une optimisation sans serveur avec une mise à l'échelle sur place
- Une approche modulaire pour concevoir un cadre expérimental pour la recherche en gestion des ressources
- Désanonymisation ciblée via le canal côté cache : attaques et défenses
- Validation du simulateur RISC-V du système complet : une approche systématique
- Implémentation légère de la protection des services par paquet dans eBPF/XDP
- ROS2 Optimisation et évaluation des performances en temps réel
- Analyse expérimentale et numérique du comportement thermique d'un data center monophasé refroidi par immersion
2024 :
- IdleLeak : exploiter les effets secondaires de l'état d'inactivité pour les fuites d'informations
- Profilage en toute confiance : surveillance du système à partir d'environnements d'exécution fiables
- Exemple de détermination de l'isolation de la qualité de service basée sur les groupes C pour une charge de travail de base de données
- BARO : Analyse robuste des causes profondes pour les microservices via la détection de points de changement en ligne bayésienne multivariée
- Lever l'ambiguïté des anomalies de performances liées aux changements de charge de travail dans les applications cloud natives
- Allez plus loin : comprendre le Page Spray dans l'exploitation du noyau Linux
- Impact de la consommation d'énergie dans les cloud conteneurisés : une analyse complète des outils de mesure de l'énergie open source
- Évaluation de la contrainte thermique sur l'apprentissage fédéré hétérogène basé sur l'IoT
- Détection d'anomalies dans le traitement des appels critiques
- Une évaluation préliminaire des capacités temps réel de Linux en temps réel sur Raspberry Pi 5
- Une comparaison des architectures Linux en temps réel pour les applications musicales embarquées
- Nona : modèle de prévision de puissance précis utilisant des réseaux de neurones
Je souhaite ajouter à la page du projet stress-ng toute citation de recherche ou de projet utilisant le stress-ng. J'apprécie également les informations concernant les bugs du noyau ou les régressions de performances trouvées avec stress-ng.
Contributeurs
Un grand merci aux contributeurs suivants à stress-ng (par ordre alphabétique) :
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 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.