stress-ng (estresse da próxima geração)
stress-ng testará a resistência de um sistema de computador de várias maneiras selecionáveis. Ele foi projetado para exercitar vários subsistemas físicos de um computador, bem como as várias interfaces do kernel do sistema operacional. Recursos de estresse:
- Mais de 350 testes de estresse
- Mais de 80 testes de estresse específicos de CPU que exercitam ponto flutuante, número inteiro, manipulação de bits e fluxo de controle
- Mais de 20 testes de estresse de memória virtual
- Mais de 40 testes de estresse do sistema de arquivos
- Mais de 30 testes de estresse de cache de memória/CPU
- portátil: baseado em 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 Windows para Linux, Cygwin e SunOs/Dilos/Solaris. com gcc, musl-gcc, clang, icc, icx, tcc e pcc.
- testado em alfa, armel, armhf, arm64, hppa, i386, loong64, m68k, mips32, mips64, power32, ppc64el, risc-v, sh4, s390x, sparc64, x86-64
O stress-ng foi originalmente planejado para fazer uma máquina trabalhar duro e detectar problemas de hardware, como sobrecargas térmicas, bem como bugs do sistema operacional que ocorrem apenas quando um sistema está sendo fortemente desgastado. Use stress-ng com cuidado, pois alguns dos testes podem fazer com que o sistema funcione quente em hardware mal projetado e também podem causar sobrecarga excessiva do sistema, o que pode ser difícil de parar.
stress-ng também pode medir taxas de rendimento de teste; isso pode ser útil para observar alterações de desempenho em diferentes versões de sistemas operacionais ou tipos de hardware. No entanto, ele nunca foi planejado para ser usado como um conjunto de testes de benchmark preciso, portanto NÃO o use dessa maneira.
Executar stress-ng com privilégios de root ajustará as configurações de falta de memória em sistemas Linux para tornar os estressores invencíveis em situações de pouca memória, portanto, use isso criteriosamente. Com o privilégio apropriado, o stress-ng pode permitir que a classe iônica e os níveis de iônica sejam ajustados; novamente, isso deve ser usado com cuidado.
Tarballs
Tarballs de cada versão do stress-ng podem ser baixados usando o URL:
https://github.com/ColinIanKing/stress-ng/tarball/version
onde version é o número da versão relevante, por exemplo:
https://github.com/ColinIanKing/stress-ng/tarball/V0.13.05
Executando o snapshot mais recente do stress-ng em um contêiner
docker run --rm ghcr.io/colinianking/stress-ng --help
ou
docker run --rm colinianking/stress-ng --help
Pacotes Debian para Ubuntu
Versões recentes do stress-ng estão disponíveis no Ubuntu stress-ng ppa para várias versões do 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
Construindo estresse
Para construir, as seguintes bibliotecas garantirão uma construção stress-ng totalmente funcional: (observe que libattr não é necessário para versões disto mais recentes).
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 (compilações 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- 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
ClaroLinux:
- devpkg-acl devpkg-eigen devpkg-Judy devpkg-kmod devpkg-attr devpkg-libbsd devpkg-libjpeg-turbo devpkg-libsctp devpkg-mesa
Alpino 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
Instantâneos:
- stress-ng não se destina a ser capturado com snapcraft. Fazer isso é estritamente contra a vontade do mantenedor do projeto e do desenvolvedor principal.
NOTA: a compilação tentará detectar dependências de compilação e criará uma imagem com funcionalidade desabilitada se as bibliotecas de suporte não estiverem instaladas.
No momento da compilação, o stress-ng detectará os recursos do kernel que estão disponíveis no sistema de compilação de destino e ativará os testes de estresse de forma adequada. Stress-ng foi testado em Ubuntu, Debian, Debian GNU/Hurd, Slackware, RHEL, SLES, Centos, kFreeBSD, OpenBSD, NetBSD, FreeBSD, Debian kFreeBSD, DragonFly BSD, OS X, Minix, Solaris 11.3, OpenIndiana e Hiaku. As portas para outros sistemas operacionais semelhantes a POSIX/UNIX devem ser relativamente fáceis.
NOTA: SEMPRE execute make clean
após buscar alterações do repositório git para forçar a compilação a gerar novamente o arquivo de configuração da compilação. Compilações paralelas usando make -j são suportadas.
Para construir em sistemas BSD, é necessário gcc e GNU make:
CC=gcc gmake clean
CC=gcc gmake
Para construir em sistemas OS X, basta usar:
Para construir no MINIX, são necessários gmake e clang:
CC=clang gmake clean
CC=clang gmake
Para construir no SunOS, é necessário GCC e GNU make, construir usando:
CC=gcc gmake clean
CC=gcc gmake
Para construir no Dilos, é necessário fazer GCC e GNU, construir usando:
CC=gcc gmake clean
CC=gcc gmake
Para desenvolver no Haiku R1/beta5:
# GCC
make clean
make
# Clang
CC=clang make clean
CC=clang make
Para construir uma imagem estática (por exemplo, para Android), use:
# 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 construir com o compilador Tiny C:
Para construir com o compilador C portátil PCC, use:
Para construir com a biblioteca musl C:
Para construir com o compilador Intel C icc use:
Para construir com o compilador Intel C icx use:
Para realizar uma compilação cruzada usando gcc, use uma construção estática, especifique o conjunto de ferramentas (CC e CXX). Por exemplo, uma construção cruzada mips64:
make clean
STATIC=1 CC=mips64-linux-gnuabi64-gcc CXX=mips64-linux-gnuabi64-g++ make -j $(nproc)
Para realizar uma compilação cruzada para qnx, por exemplo, uma compilação cruzada aarch64 qnx:
make clean
CC=aarch64-unknown-nto-qnx7.1.0-gcc CXX=aarch64-unknown-nto-qnx7.1.0-g++ STATIC=1 make
Opção de compilação: DEBUG, compilação com depuração (-g) habilitada:
Opção de construção: LTO, Link Time Optimization (melhoria de desempenho de aproximadamente 1-2% em estressores de computação):
Opção de construção: PEDANTIC, habilite sinalizadores de construção pedantes:
make clean
PEDANTIC=1 make
Opção de compilação: GARBAGE_COLLECT, avisa sobre código não utilizado:
make clean
GARBAGE_COLLECT=1 make
Opção de compilação: UNEXPECTED=1, avisa sobre código inesperado #ifdef'd out:
make clean
UNEXPECTED=1 make
Contribuindo para o estresse:
Envie patches para [email protected] ou solicitações de mesclagem em https://github.com/ColinIanKing/stress-ng
Guia de referência de início rápido
O guia de referência do Ubuntu stress-ng contém uma breve visão geral e exemplos práticos.
Exemplos
Execute 4 CPU, 2 memórias virtuais, 1 disco e 8 estressores de fork por 2 minutos e imprima as medições:
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
Execute o estressor de matriz em todas as CPUs online por 60 segundos e meça a 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)
Execute uma combinação de 4 estressores de E/S e verifique se há alterações nos metadados SMART do 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
Compare chamadas de sistema usando o 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)
Gere e meça falhas de ramificação usando métricas de desempenho:
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%)
Execute permutações de estressores de E/S em um sistema de arquivos ZFS, excluindo o estressor rawdev com verificação de erros de log do kernel:
stress-ng --class io --permute 0 -x rawdev -t 1m --vmstat 1 --klog-check --temp-path /zfs-pool/test
Somente x86: meça a potência usando as interfaces RAPL em 8 estressores de matriz 3D simultâneos com verificação habilitada. Observe que a leitura do RAPL requer permissão 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
Medir a residência no 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
Bugs e regressões encontradas com stress-ng
stress-ng encontrou vários bugs/regressões de Kernel, QEMU e bugs libc; correções apropriadas foram implementadas para resolver esses problemas:
2015:
- CHAVES: certifique-se de liberar a edição do array associado se a edição for válida
- proc: corrige erro -ESRCH ao gravar em /proc/$pid/coredump_filter
- Erro de divisão SMP
2016:
- fs/locks.c: kernel oops durante teste de estresse de bloqueio posix
- sched/core: corrige uma corrida entre try_to_wake_up() e uma tarefa despertada
- devpts: corrige desreferência de ponteiro nulo em falha na alocação de memória
- arm64: não impõe alinhamento estrito de 16 bytes ao ponteiro de pilha
2017:
- ARM: dts: meson8b: adicione zona de memória reservada para corrigir congelamentos silenciosos
- ARM64: dts: meson-gx: Adicionar zonas de memória reservadas de firmware
- ext4: bloqueia o bloco xattr antes de fazer a soma de verificação
- rcu_preempt detectou travamentos em CPUs/tarefas
- BUG: incapaz de lidar com a desreferência do ponteiro NULL do kernel
- AVISO: possível dependência de bloqueio circular detectada
2018:
- Illumos: ofdlock(): falha na afirmação: lckdat->l_start == 0
- debugobjects: Use lista livre global em __debug_check_no_obj_freed()
- ext4_validate_inode_bitmap:99: comm stress-ng: bitmap de inode corrompido
- virtio/s390: corrige corrida em ccw_io_helper()
2019:
- mm/page_idle.c: corrija oops porque end_pfn é maior que max_pfn
- mm: compactação: evita 100% do uso da CPU durante a compactação quando uma tarefa é encerrada
- mm/vmalloc.c: pré-carrega uma CPU com um objeto para finalidade dividida
- perf evlist: Use unshare(CLONE_FS) em threads sb para permitir que setns(CLONE_NEWNS) funcione
- riscv: rejeita syscalls inválidos abaixo de -1
2020:
- RISC-V: Não permitir solicitação de mapeamento de página somente write+exec no mmap
- riscv: defina max_pfn para o PFN da última página
- crypto: hisilicon - atualiza o parâmetro do módulo do driver SEC
- net: atm: corrige atualização do índice de posição em lec_seq_next
- sched/debug: corrige corrupção de memória causada por múltiplas pequenas leituras de sinalizadores
- ocfs2: ratelimit o aviso de 'tempo máximo de pesquisa alcançado'
- usar perf pode travar o kernel com um estouro de pilha
- stress-ng no kernel focal habilitado para gcov aciona OOPS
- bug do kernel list_del corrupção no s390x do stress-ng mknod e stress-ng symlink
2021:
- sparc64: Corrige a filtragem de opcode no tratamento de cargas sem falha
- abrir um arquivo com O_DIRECT em um sistema de arquivos que não o suporta deixará um arquivo vazio
- bloqueio/atômico: sparc: Corrigir arch_cmpxchg64_local()
- btrfs: corrige o esgotamento da matriz de blocos do sistema devido a alocações simultâneas
- btrfs: retrabalhe a alocação de blocos para evitar o esgotamento da matriz de blocos do sistema
- btrfs: corrige impasse com alocações simultâneas de pedaços envolvendo pedaços do sistema
- bloqueio/atômico: sparc: Corrigir arch_cmpxchg64_local()
- pipe: faça notificações FASYNC para cada IO de pipe, não apenas alterações de estado
- io-wq: remove a alocação GFP_ATOMIC fora do cronograma
- mm/swap: considere o máximo de páginas em iomap_swapfile_add_extent
- block: loop: corrige o impasse entre abrir e remover
- tmpfs: O_DIRECT | O_CREATE open relata falha na abertura, mas na verdade cria um arquivo
2022:
- copy_process(): Move fd_install() para fora da seção crítica de suspiro e-> siglock
- minix: corrige bug ao abrir um arquivo com O_DIRECT
- arch/arm64: Corrige a inicialização da topologia para agendamento principal
- executando stress-ng no Minux 3.4.0-RC6 no amd64 assert em vm/region.c:313
- teste de cancelamento de compartilhamento aciona falha de página não tratada
- request_module DoS
- Regressão de benchmark NUMA no Linux 5.18
- Underflow em mas_spanning_rebalance() e teste
- mm/huge_memory: não destrua swp_entry_t durante a divisão do THP
- AppArmor: -42,5% de regressão de stress-ng.kill.ops_per_sec devido ao commit
- clocksource: suspende o watchdog temporariamente quando for detectada alta latência de leitura
2023:
- segfaults qemu-system-m68k no opcode 0x4848
- rtmutex: Certifique-se de que o garçom superior esteja sempre acordado
- mm/swap: corrige corrida swap_info_struct entre swapoff e get_swap_pages()
- bloco, bfq: Corrige erro de divisão por zero em zero wsum
- riscv: mm: Certifique-se de que o prot de VM_WRITE e VM_EXEC seja legível
- Reverter "mm: vmscan: fazer com que a laje global encolhesse sem bloqueio"
- travar/travar em mm/swapfile.c:718 add_to_avail_list ao exercer estresse-ng
- mm: corrige a condição de corrida de write-back do zswap
- x86/fpu: Defina o recurso X86_FEATURE_OSXSAVE após ativar OSXSAVE em CR4
- kernel/fork: cuidado com o contexto de chamada de __put_task_struct()
- arm64: dts: ls1028a: adicione informações de cache l1 e l2
- filemap: adicione filemap_map_order0_folio() para lidar com o fólio order0
- mm: encolhedor: adiciona infraestrutura para alocar dinamicamente o encolhedor
- mm: encolhedor: faz com que a laje global encolha sem travamento
- bcachefs: Limpar btree_node_just_write() quando o nó for reutilizado ou despejado
- rastreamento: corrige o bloqueio incompleto ao desabilitar eventos em buffer
- mm: migrar: corrige o mapeamento incorreto da página durante a migração da página
- mm: mmap: mapeia MAP_STACK para VM_NOHUGEPAGE
2024:
- fs: melhora a robustez dump_mapping()
- tracing: Garanta a visibilidade ao inserir um elemento em trace_map
- conector/cn_proc: reverter "conector: Corrigir contagem de proc_event_num_listeners não apagada"
- powerpc/pseries: corrige a precisão do tempo roubado
- OpenBSD: libm: segfault em sincosl
- abrir e fechar /dev/dri/card0 em uma instância QEMU KVM desligará o sistema, 6.10.0-rc6+
- uprobes: evite mutex_lock() em rcu_read_lock()
- sistema travado com kernel RT no amd64
- AVISO: CPU: 17 PID: 118273 em kernel/sched/deadline.c:794 setup_new_dl_entity+0x12c/0x1e8
- kernel oops em pick_next_task_fair no kernel 6.8.1-1002-realtime
- kernel oops em aafs_create no kernel 6.8.1-1002-realtime
- mm: otimizar o loop redundante
- MultiVM - Convidado(s) L2 executando stress-ng travando na inicialização após acionar falha
- powerpc/qspinlock: Corrige deadlock na fila MCS
- regressão do kernel com sinalizadores de montagem ext4 e ea_inode e exercício xattrs
- sched_ext: tarefas TASK_DEAD devem ser alternadas para SCX em ops_enable
- sched/deadline: Corrigir vazamento de referência task_struct
- sched_ext: divide o DSQ global por nó NUMA
- chamar getcpu com endereço desalinhado causa pânico no kernel
- cygwin: preread/pwrite: evita erro EBADF após fork()
- cygwin 3.5.4-1: manipulação de sinal destrói valores 'long double'
- cygwin: timer_delete: corrige o valor de retorno
- cygwin: altere pthread_sigqueue() para aceitar o ID do thread
- segurança/chaves: corrija limites fora dos limites em key_task_permission
- sched_ext: Não segure scx_tasks_lock por muito tempo
- sched/numa: corrige a potencial desreferência do ponteiro nulo em task_numa_work()
- reiserfs entra em pânico usando o estressor fsize
Melhorias no kernel que usaram stress-ng
2020:
- selinux: complete o inlining das funções hashtab
- selinux: armazena transições de função em uma tabela hash
- sched/rt: Otimiza a verificação das restrições do agendador RT do grupo
- sched/fair: trata o caso de task_h_load() retornando 0
- agendamento/prazo: desacelerar threads impulsionados por PI durante o enfileiramento
- mm: corrigir problema de desempenho do madvise WILLNEED
- powerpc/dma: Corrigir dma_map_ops::get_required_mask
- stress-ng close causa oops do kernel v5.6-rt e v5.4-rt
2021:
- Reverter "mm, slub: considere o resto da lista parcial se adquire_slab() falhar
- mm: memória: adicione orig_pmd à estrutura vm_fault
- selftests/powerpc: Adicionar teste de patch de mitigação
- dm crypt: Evite contenção de spinlock percpu_counter em crypt_page_alloc()
- mm/migrate: otimiza atualizações de pedidos de rebaixamento em tempo de hotplug
- powerpc/rtas: melhorias em rtas_busy_delay()
2022:
- sched/core: contabilizando o tempo de inatividade para todas as tarefas, exceto tarefa ociosa
- ipc/mqueue: use get_tree_nodev() em mqueue_get_tree()
2023:
- mm/swapfile: adicione cond_resched() em get_swap_pages()
- módulo: adicione estatísticas de depuração para ajudar a identificar a pressão da memória
- módulo: evite alocação se o módulo já estiver presente e pronto
- sched: Intercale temporizadores de largura de banda cfs para melhorar o desempenho de thread único com baixa utilização
- mm/khugepaged: remove try_to_freeze() redundante
2024:
- mm/vmalloc: eliminou a contenção de bloqueio de duas para uma vez
- mm: mude mm->get_unmapped_area() para um sinalizador
- mm: sempre inline _compound_head() com CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
- mm: otimiza o loop redundante de mm_update_owner_next()
Apresentações
- Apresentação Stress-ng na ELCE 2019 Lyon
- Vídeo da apresentação acima
- Sessão de mentoria da Linux Foundation, maio de 2022
- Apresentação de receitas do kernel, setembro de 2023
- Fundação Linux, ELISA, junho de 2024
Citações
- Ferramenta de teste de desempenho do kernel Linux
2015:
- Aprimorando os modelos de energia da nuvem para otimizar a eficiência dos datacenters
- Tejo: Um Esquema Supervisionado de Detecção de Anomalias para Bases de Dados NewSQL
- CoMA: Monitoramento de recursos de contêineres Docker
- Uma investigação do relacionamento de utilização de CPU entre host e convidados em uma infraestrutura em nuvem
2016:
- Aumentando o Determinismo da Plataforma PQOS DPDK
- Rumo ao gerenciamento de dados com eficiência energética em HPC: a abordagem de unidade Ethernet aberta
- Análise de desempenho de CPU e memória na alocação dinâmica e dedicada de recursos utilizando XenServer em ambiente de Data Center
- Quanta energia seu servidor consome? Estimando a potência da tomada de parede usando medições RAPL
- DevOps para aplicações IoT usando redes celulares e nuvem
- Um simulador de carga de trabalho de função de rede virtual
- Caracterizando e reduzindo a variabilidade de desempenho entre plataformas usando virtualização em nível de sistema operacional
- Quanta energia seu servidor consome? Estimando a potência da tomada usando medições RAPL
- UIE: estimativa de interferência centrada no usuário para aplicativos em nuvem
2017:
- Dimensionamento automático de contêineres: o impacto das métricas relativas e absolutas
- Testando o subsistema Windows para Linux
- Análise prática do Precision Time Protocol sob diferentes tipos de carga do sistema
- Rumo à previsão de custos com reconhecimento de energia de máquinas virtuais em nuvens
- Algoritmos e Arquiteturas para Processamento Paralelo
- Conceitos e ferramentas avançadas para fornecimento de energia renovável de Data Centers
- Monitoramento e modelagem de servidores de computação abertos
- Análise experimental e numérica para potencial reutilização de calor em data centers refrigerados a líquido
- Modelagem e Análise de Desempenho sob Interferência na Nuvem
- Meça e reduza efetivamente as latências do kernel para restrições em tempo real
- Monitoramento e análise de relacionamentos de carga de CPU entre host e convidados em uma infraestrutura de rede em nuvem
- Medindo os impactos do patch Preempt-RT
- Identificação confiável de bibliotecas usando técnicas VMI
- Elastic-PPQ: um sistema autônomo de dois níveis para processamento de consultas de preferência espacial em fluxo de dados dinâmico
- Integração OpenEPC dentro de 5GTN como prova de conceito de NFV
- Instrumentação binária dinâmica com reconhecimento de tempo
- Relato de Experiência: Mineração de Logs Utilizando Processamento de Linguagem Natural e Aplicação à Detecção de Anomalias
- Caracterização de interferências mistas de processos de criticidade temporal em um sistema Linux multicore
- Orquestração de nuvem no nível do aplicativo
2018:
- Emulação multicore em ambiente virtualizado
- Stress-SGX: carregue e estresse seus enclaves para diversão e lucro
- quiho: Teste automatizado de regressão de desempenho usando perfis de utilização de recursos inferidos
- Análise de otimização de memória de hipervisor e máquina virtual
- Testes em tempo real com Fuego
- FECBench: uma estrutura extensível para identificar fontes de interferência de desempenho no espectro de recursos Cloud-Edge
- Quantificando a interação entre propriedades estruturais de software e hardware na arquitetura ARM Big.LITTLE
- RAPL em ação: experiências no uso de RAPL para medições de potência
2019:
- Isolamento de desempenho de carga de trabalho co-localizada em uma arquitetura de software de veículo baseada em contêiner
- Análise e detecção de explorações baseadas em cache
- kMVX: Detectando vazamentos de informações do kernel com execução multivariada
- Escalabilidade do Kubernetes em execução na AWS
- Um estudo sobre medidas de desempenho para aplicativos em contêineres com uso intensivo de CPU e escalonamento automático
- Scavenger: um gerenciador de recursos de carga de trabalho em lote Black-Box para melhorar a utilização em ambientes de nuvem
- Estimando o desempenho de aplicativos em nuvem com base no perfil de micro-benchmark
- Detecção de anomalias em NFV usando método de aprendizado não supervisionado baseado em árvore
2020:
- Compensações de desempenho e energia para aplicações paralelas em sistemas heterogêneos de multiprocessamento
- C-Balancer: um sistema para criação de perfil e agendamento de contêineres
- Modelagem de características latentes de VM e previsão de desempenho de aplicativos usando fatoração de matriz não negativa semissupervisionada
- Balanceamento de carga semidinâmico: aprendizagem distribuída eficiente em ambientes não dedicados
- Uma análise de desempenho de tecnologias de segurança assistidas por hardware
- Engenharia de software em nuvem verde para processamento de big data
- Detecção em tempo real para ataque de canal lateral de cache usando monitor de contador de desempenho
- Subvertendo a arquitetura de medição de integridade do Linux
- Avaliação de desempenho em tempo real usando solicitação de interrupção rápida em um kernel Linux padrão
- Baixo consumo de energia em plataformas pós-Moore para pesquisa de HPC
- Gerenciando a latência no ambiente Edge-Cloud
- Desmistificando a latência de agendamento do Linux em tempo real
2021:
- Simplificar: um ataque de canal secreto de cache rápido e sem limpeza, permitindo conluio assíncrono
- Análise experimental no Hadoop MapReduce: uma análise mais detalhada das técnicas de detecção e recuperação de falhas
- Características de desempenho do BlueField-2 SmartNIC
- Avaliando Latência em Sistemas Embarcados de Multiprocessamento para Smart Grid
- Trabalho em andamento: Cronometrar a diversidade como mecanismo de proteção
- Arquiteturas sequenciais de aprendizado profundo para detecção de anomalias em cadeias funcionais de redes virtuais
- WattEdge: uma abordagem holística para medições empíricas de energia em Edge Computing
- PTEMagnet: reserva de memória física refinada para navegação mais rápida pelas páginas em nuvens públicas
- O preço do colapso e do espectro: sobrecarga energética das mitigações no nível do sistema operacional
- Um estudo empírico de ataques térmicos em plataformas Edge
- Sage: Depuração de desempenho baseada em ML prática e escalável em microsserviços
- Uma abordagem generalizada para alocação prática de tarefas usando um circuito de controle MAPE-K]
- Rumo ao monitoramento independente da nuvem em tempo de execução
- FIRESTARTER 2: Geração dinâmica de código para testes de estresse do processador
- Comparação de desempenho entre um cluster Kubernetes e um sistema embarcado
- Exploração de desempenho de sistemas de virtualização
- Enganando o hardware para proteger o software com eficiência
2022:
- Um método geral para avaliar a sobrecarga ao consolidar servidores: degradação do desempenho em máquinas virtuais e contêineres
- FedComm: Compreendendo os protocolos de comunicação para aprendizagem federada baseada na borda
- Alcançando isolamento em sistemas de borda industrial de criticidade mista com contêineres em tempo real
- Projeto e implementação de sistema de previsão de falhas baseado em aprendizado de máquina em infraestrutura em nuvem
- Os blocos de construção TSN no Linux
- uKharon: um serviço de associação para aplicativos de microssegundos
- Avaliando o desenvolvimento de firmware de enclave seguro para estações de trabalho RISC-V contemporâneasEstação de trabalho RISC-V contemporânea
- Avaliação do Real-Time Linux na arquitetura do processador RISC-V
- Hertzbleed: Transformando ataques de canal lateral de energia em ataques de temporização remota em x86
- Não faça malha: ataques de canal lateral e mitigações em interconexões de malha
- Implicações de desempenho para sistemas RISC-V multi-core com hardware de segurança dedicado
2023:
- Combata hardware com hardware: detecção e mitigação de ataques de canal lateral em todo o sistema usando contadores de desempenho
- Apresentando k4.0s: um modelo para orquestração de contêineres de criticidade mista na Indústria 4.0
- Um estudo abrangente sobre otimização de sistemas com unidades de processamento de dados
- Estimando o desempenho de aplicativos em nuvem com base no perfil de micro-benchmark
- PSPRAY: Técnica de exploração de heap de kernel Linux baseada em canal lateral de temporização
- Detecção e previsão robusta e precisa de anomalias de desempenho para aplicativos em nuvem: uma nova estrutura baseada em aprendizado de conjunto
- Estudo de viabilidade para um sistema de controle em tempo real integrado baseado em Python
- Adaptação de SaaS paralelo a recursos de nuvem heterogêneos co-localizados
- Uma metodologia e estrutura para determinar as capacidades de isolamento das tecnologias de virtualização
- Estação de dados: computação delegada, confiável e auditável para permitir consórcios de compartilhamento de dados com depósito de dados
- Um estudo empírico de falhas de estresse de recursos em aplicativos de computação de ponta
- Encontrando testes instáveis em aplicativos JavaScript usando estresse e reordenação de conjunto de testes
- O poder da telemetria: descobrindo ataques de canal lateral baseados em software em sistemas Apple M1/M2
- Uma avaliação de desempenho de sistema integrado multi-core de criticidade mista baseado em PREEMPT RT Linux
- Vazamento de dados em sistemas de computação empresarial virtualizados isoladosSistemas
- Considerações para avaliar o desempenho da rede em infraestruturas em contêineres
- EnergAt: Atribuição de energia refinada para multilocação
- Quantificando o perfil de segurança de aplicativos Linux
- Gotham Testbed: um ambiente de teste de IoT reproduzível para experimentos de segurança e geração de conjuntos de dados
- Criação de perfil com confiança: monitoramento do sistema a partir de ambientes de execução confiáveis
- Inferência térmica no dispositivo usando paralelização de camada única com processadores heterogêneos
- Rumo ao agendamento de espaço do usuário rápido, adaptável e assistido por hardware
- Detecção de anomalias heterogêneas para sistemas de software por meio de atenção cross-modal semissupervisionada
- Codificação verde: uma abordagem empírica para aproveitar o consumo de energia de serviços de software
- Aprimorando a pesquisa empírica de engenharia de desempenho de software com eventos em nível de kernel: uma abordagem abrangente de rastreamento de sistema
- Cloud White: detectando e estimando a degradação de QoS de cargas de trabalho críticas para latência na nuvem pública
- Gerenciamento dinâmico de recursos para aplicativos paralelos síncronos em massa nativos da nuvem
- Rumo à otimização sem servidor com escalabilidade local
- Uma abordagem modular para projetar uma estrutura experimental para pesquisa em gerenciamento de recursos
- Desanonimização direcionada por meio do canal lateral do cache: ataques e defesas
- Validando o Simulador RISC-V de Sistema Completo: Uma Abordagem Sistemática
- Implementação leve de proteção de serviço por pacote em eBPF/XDP
- Otimização e avaliação de desempenho em tempo real do ROS2
- Análise experimental e numérica do comportamento térmico de um data center monofásico resfriado por imersão
2024:
- IdleLeak: Explorando os efeitos colaterais do estado ocioso para vazamento de informações
- Criação de perfil com confiança: monitoramento do sistema a partir de ambientes de execução confiáveis
- Determinação exemplar de isolamento de QoS baseado em Cgroups para uma carga de trabalho de banco de dados
- BARO: análise robusta de causa raiz para microsserviços por meio de detecção multivariada de ponto de mudança on-line bayesiana
- Eliminando a ambigüidade de anomalias de desempenho de mudanças na carga de trabalho em aplicativos nativos da nuvem
- Dê um passo adiante: Compreendendo o Page Spray na exploração do kernel do Linux
- Impacto do consumo de energia em nuvens conteinerizadas: uma análise abrangente de ferramentas de medição de energia de código aberto
- Avaliação do estresse térmico na aprendizagem federada heterogênea baseada em IoT
- Detecção de anomalias no processamento de chamadas de missão crítica
- Uma avaliação preliminar dos recursos em tempo real do Real-Time Linux no Raspberry Pi 5
- Uma comparação de arquiteturas baseadas em Linux em tempo real para aplicações musicais incorporadas
- Nona: modelo preciso de previsão de energia usando redes neurais
Estou interessado em adicionar à página do projeto stress-ng quaisquer citações de pesquisas ou projetos que usam o stress-ng. Também aprecio informações sobre bugs do kernel ou regressões de desempenho encontradas com stress-ng.
Colaboradores
Muito obrigado aos seguintes colaboradores do stress-ng (em ordem alfabética):
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.