стресс-нг (стресс следующего поколения)
стресс-нг проведет стресс-тестирование компьютерной системы различными способами. Он был разработан для проверки различных физических подсистем компьютера, а также различных интерфейсов ядра операционной системы. Особенности Стресс-нг:
- 350+ стресс-тестов
- Более 80 стресс-тестов, специфичных для процессора, которые проверяют операции с плавающей запятой, целые числа, манипуляции с битами и поток управления.
- 20+ стресс-тестов виртуальной памяти
- Более 40 стресс-тестов файловой системы
- Более 30 стресс-тестов памяти/кэша процессора
- портативный: построен на Linux (Debian, Devuan, RHEL, Fedora, Centos, Slackware OpenSUSE, Ubuntu и т. д.), Solaris, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Minix, Android, MacOS X, Serenity OS, GNU/Hurd, Haiku, Подсистема Windows для Linux, Cygwin и SunOs/Dilos/Solaris. с gcc, musl-gcc, clang, icc, icx, tcc и pcc.
- протестировано на Alpha, Armel, ArmHF, Arm64, HPPA, i386, Loong64, M68k, Mips32, Mips64, Power32, PPC64el, RISC-V, Sh4, s390x, Sparc64, x86-64.
Изначально стресс-нг был предназначен для того, чтобы заставить машину работать усерднее и устранять проблемы с оборудованием, такие как перегрев, а также ошибки операционной системы, которые возникают только тогда, когда система сильно перегружается. Используйте стресс-ng с осторожностью, так как некоторые тесты могут привести к перегреву системы на плохо спроектированном оборудовании, а также могут привести к чрезмерному сбою системы, который может быть трудно остановить.
стресс-нг также может измерять производительность тестов; это может быть полезно для наблюдения за изменениями производительности в разных выпусках операционных систем или типах оборудования. Однако он никогда не предназначался для использования в качестве точного набора тестов производительности, поэтому НЕ используйте его таким образом.
Запуск стресс-нга с правами root приведет к корректировке настроек памяти в системах Linux, чтобы сделать стрессоры неуничтожимыми в ситуациях с нехваткой памяти, поэтому используйте это разумно. При наличии соответствующей привилегии стресс-нг может позволить регулировать класс ионизации и уровни ионизации, опять же, это следует использовать с осторожностью.
Тарболы
Тарболы каждой версии стресс-нг можно загрузить по URL-адресу:
https://github.com/ColinIanKing/stress-ng/tarball/version
где версия — соответствующий номер версии, например:
https://github.com/ColinIanKing/stress-ng/tarball/V0.13.05
Запуск последнего снимка стресса-ng в контейнере
docker run --rm ghcr.io/colinianking/stress-ng --help
или
docker run --rm colinianking/stress-ng --help
Пакеты Debian для Ubuntu
Последние версии стресс-нг доступны в ppa Ubuntu стресс-нг для различных выпусков 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
Стресс-нг
Следующие библиотеки обеспечат полнофункциональную сборку стресс-нг: (обратите внимание, что libattr не требуется для более поздних выпусков дисто).
Дебиан, Убунту:
- 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 (статические сборки):
- 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- разработка libmd-devel libX11-devel libXau-devel libxcb-devel lksctp-tools-devel mpfr-devel xorg-x11-proto-devel xxhash-devel zlib-devel
СЬЮЗ:
- 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-развитие
ОчиститьЛинукс:
- devpkg-acl devpkg-eigen devpkg-Judy devpkg-kmod devpkg-attr devpkg-libbsd devpkg-libjpeg-turbo devpkg-libsctp devpkg-mesa
Альпийский Линукс:
- 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
Снимки:
- стресс-нг не предназначен для захвата с помощью Snapcraft. Это строго противоречит желанию сопровождающего проекта и главного разработчика.
ПРИМЕЧАНИЕ. При сборке будет предпринята попытка обнаружить зависимости сборки и будет построен образ с отключенной функциональностью, если библиотеки поддержки не установлены.
Во время сборки стресс-ng обнаружит функции ядра, доступные в целевой системе сборки, и соответствующим образом активирует стресс-тесты. Stress-ng был протестирован на Ubuntu, Debian, Debian GNU/Hurd, Slackware, RHEL, SLES, Centos, kFreeBSD, OpenBSD, NetBSD, FreeBSD, Debian kFreeBSD, DragonFly BSD, OS X, Minix, Solaris 11.3, OpenIndiana и Хиаку. Портирование на другие POSIX/UNIX-подобные операционные системы должно быть относительно простым.
ПРИМЕЧАНИЕ. ВСЕГДА запускайте команду make clean
после получения изменений из репозитория git, чтобы заставить сборку заново создать файл конфигурации сборки. Поддерживаются параллельные сборки с использованием make -j.
Для сборки систем BSD необходимы gcc и GNU make:
CC=gcc gmake clean
CC=gcc gmake
Для создания систем OS X просто используйте:
Для сборки на MINIX необходимы gmake и clang:
CC=clang gmake clean
CC=clang gmake
Для сборки на базе SunOS требуются GCC и GNU make, сборка с использованием:
CC=gcc gmake clean
CC=gcc gmake
Для сборки на Dilos требуются GCC и GNU make, build с использованием:
CC=gcc gmake clean
CC=gcc gmake
Чтобы использовать Haiku R1/beta5:
# GCC
make clean
make
# Clang
CC=clang make clean
CC=clang make
Чтобы создать статический образ (например, для Android), используйте:
# 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
Для сборки с помощью компилятора Tiny C:
Для сборки с помощью портативного компилятора C PCC используйте:
Для сборки с использованием библиотеки musl C:
Для сборки с помощью компилятора Intel C icc используйте:
Для сборки с помощью компилятора Intel C icx используйте:
Чтобы выполнить кросс-компиляцию с помощью gcc, используйте статическую сборку, укажите набор инструментов (CC и CXX). Например, кросс-сборка mips64:
make clean
STATIC=1 CC=mips64-linux-gnuabi64-gcc CXX=mips64-linux-gnuabi64-g++ make -j $(nproc)
Чтобы выполнить кросс-компиляцию для qnx, например, кросс-сборку aarch64 qnx:
make clean
CC=aarch64-unknown-nto-qnx7.1.0-gcc CXX=aarch64-unknown-nto-qnx7.1.0-g++ STATIC=1 make
Вариант сборки: DEBUG, сборка с включенной отладкой (-g):
Вариант сборки: LTO, оптимизация времени соединения (улучшение производительности примерно на 1–2 % при вычислительных нагрузках):
Вариант сборки: PEDANTIC, включите флаги педантичной сборки:
make clean
PEDANTIC=1 make
Вариант сборки: GARBAGE_COLLECT, предупреждение о неиспользуемом коде:
make clean
GARBAGE_COLLECT=1 make
Опция сборки: UNEXPECTED=1, предупреждение о неожиданном коде #ifdef:
make clean
UNEXPECTED=1 make
Вклад в стресс-нг:
Отправляйте патчи на адрес [email protected] или отправляйте запросы на слияние по адресу https://github.com/ColinIanKing/stress-ng.
Краткое справочное руководство
Справочное руководство Ubuntu по стресс-нгу содержит краткий обзор и рабочие примеры.
Примеры
Запустите 4 процессора, 2 виртуальной памяти, 1 диск и 8 стрессоров на 2 минуты и распечатайте измерения:
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
Запустите матричный стрессор на всех подключенных процессорах на 60 секунд и измерьте температуру:
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)
Запустите сочетание из 4 факторов стресса ввода-вывода и проверьте изменения в метаданных SMART диска:
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
Тестирование системных вызовов с использованием 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)
Создавайте и измеряйте промахи ветвей с помощью показателей производительности:
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%)
Запустите перестановки стрессоров ввода-вывода в файловой системе ZFS, исключая стрессор rawdev с проверкой ошибок журнала ядра:
stress-ng --class io --permute 0 -x rawdev -t 1m --vmstat 1 --klog-check --temp-path /zfs-pool/test
Только x86: измеряйте мощность с помощью интерфейсов RAPL на 8 параллельных трехмерных матричных стрессорах с включенной проверкой. Обратите внимание, что для чтения RAPL требуются права 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
Измерьте резидентность штата 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
Ошибки и регрессии, обнаруженные с помощью стресс-нг
стресс-нг обнаружил различные ошибки/регрессии ядра, QEMU и ошибки libc; были внесены соответствующие исправления для решения этих проблем:
2015:
- КЛЮЧИ: убедитесь, что мы освободили редактирование ассоциированного массива, если редактирование действительно.
- proc: исправлена ошибка -ESRCH при записи в /proc/$pid/coredump_filter
- Ошибка деления SMP
2016:
- fs/locks.c: ядро не работает во время стресс-теста блокировки posix
- sched/core: исправлена гонка между try_to_wake_up() и пробудившейся задачей.
- devpts: исправлено разыменование нулевого указателя при неудачном выделении памяти.
- Arm64: не обеспечивать строгое выравнивание 16 байт по указателю стека.
2017:
- ARM: dts: meson8b: добавить зарезервированную зону памяти для устранения бесшумных зависаний
- ARM64: dts: meson-gx: добавить зоны зарезервированной памяти прошивки.
- ext4: заблокировать блок xattr перед его контрольной суммой
- rcu_preempt обнаружил зависания процессоров/задач
- ОШИБКА: невозможно обработать разыменование нулевого указателя ядра.
- ВНИМАНИЕ: обнаружена возможная зависимость от циклической блокировки.
2018:
- Иллюзии: ofdlock(): утверждение не выполнено: lckdat->l_start == 0
- debugobjects: используйте глобальный список свободных объектов в __debug_check_no_obj_freed().
- ext4_validate_inode_bitmap:99: comm Stress-ng: поврежденное растровое изображение индексного дескриптора
- virtio/s390: исправлена гонка в ccw_io_helper().
2019:
- mm/page_idle.c: исправьте ошибку, потому что end_pfn больше max_pfn
- мм: уплотнение: избегайте 100% загрузки ЦП во время уплотнения, когда задача завершается.
- mm/vmalloc.c: предварительно загрузить ЦП одним объектом для разделения
- perf evlist: используйте unshare(CLONE_FS) в потоках sb, чтобы setns(CLONE_NEWNS) работало
- riscv: отклонять недопустимые системные вызовы ниже -1
2020:
- RISC-V: не разрешать запрос сопоставления страниц только для записи + выполнения в mmap.
- riscv: установите max_pfn в PFN последней страницы.
- crypto: hisilicon — обновить параметр модуля драйвера SEC
- net: atm: исправлено обновление индекса позиции в lec_seq_next
- sched/debug: исправлено повреждение памяти, вызванное множественными небольшими чтениями флагов.
- ocfs2: ограничение скорости уведомления о «достигнутом максимальном времени поиска»
- использование perf может привести к сбою ядра из-за переполнения стека
- стресс-нг при включении gcov фокусного ядра запускает OOPS
- ошибка ядра, повреждение list_del на s390x из стресс-нг mknod и символической ссылки стресс-нг
2021:
- sparc64: исправлена фильтрация кодов операций при обработке безошибочных загрузок.
- открытие файла с помощью O_DIRECT в файловой системе, которая его не поддерживает, оставит пустой файл
- блокировка/атомарность: sparc: Fix Arch_cmpxchg64_local()
- btrfs: исправлено исчерпание системного массива фрагментов из-за одновременного выделения ресурсов.
- btrfs: переработано распределение фрагментов, чтобы избежать исчерпания массива системных фрагментов.
- btrfs: устранена взаимоблокировка при одновременном выделении чанков, включающих системные куски.
- блокировка/атомарность: sparc: Fix Arch_cmpxchg64_local()
- канал: отправляйте уведомления FASYNC для каждого ввода-вывода канала, а не только для изменений состояния.
- io-wq: удалить выходной путь вне расписания GFP_ATOMIC
- мм/своп: учитывайте максимальное количество страниц в iomap_swapfile_add_extent
- блок: цикл: исправить тупик между открытием и удалением
- tmpfs: O_DIRECT | O_CREATE open сообщает об ошибке открытия, но фактически создает файл
2022:
- copy_process(): переместить fd_install() из критической секции Sigand->siglock.
- minix: исправлена ошибка при открытии файла с помощью O_DIRECT.
- Arch/arm64: исправлена инициализация топологии для основного планирования.
- запуск стресс-нг в Minux 3.4.0-RC6 на amd64 утверждается в vm/region.c:313
- Тест unshare вызывает необработанную ошибку страницы
- request_module DoS
- Регрессия тестового теста NUMA в Linux 5.18
- Недополнение в mas_spanning_rebalance() и проверка
- mm/huge_memory: не засоряйте swp_entry_t во время разделения THP
- AppArmor: регресс стресса-ng.kill.ops_per_sec на -42,5% из-за фиксации
- clocksource: временно приостановить сторожевой таймер при обнаружении высокой задержки чтения.
2023:
- qemu-system-m68k выдает ошибку по коду операции 0x4848
- rtmutex: убедитесь, что верхний официант всегда просыпается.
- mm/swap: исправлена гонка swap_info_struct между swapoff и get_swap_pages().
- блок, bfq: исправлена ошибка деления на ноль при нулевой wsum.
- riscv: mm: убедитесь, что защита VM_WRITE и VM_EXEC должна быть доступна для чтения.
- Отменить «mm: vmscan: сделать глобальное сжатие плиты без блокировки»
- сбой/зависание в mm/swapfile.c:718 add_to_avail_list при выполнении стресс-нг
- мм: исправлено состояние гонки обратной записи zswap.
- x86/fpu: установите функцию X86_FEATURE_OSXSAVE после включения OSXSAVE в CR4.
- ядро/вилка: остерегайтесь контекста вызова __put_task_struct()
- Arm64: dts: ls1028a: добавить информацию о кэше l1 и l2
- filemap: добавьте filemap_map_order0_folio() для обработки фолио order0
- мм: термоусадочная машина: добавьте инфраструктуру для динамического размещения термоусадочной машины.
- мм: термоусадка: сделать глобальную усадку плиты без блокировки
- bcachefs: очищать btree_node_just_writing() при повторном использовании или удалении узла.
- трассировка: исправлена неполная блокировка при отключении буферизованных событий.
- мм: миграция: исправлено неправильное сопоставление страниц во время миграции страниц.
- мм: mmap: сопоставить MAP_STACK с VM_NOHUGEPAGE
2024:
- fs: повысить надежность dump_mapping()
- трассировка: обеспечить видимость при вставке элемента в tracing_map.
- разъем/cn_proc: вернуться «разъем: исправить счетчик proc_event_num_listeners не очищен»
- powerpc/pseries: исправлена точность украденного времени.
- OpenBSD: libm: segfault в sincosl
- открытие и закрытие /dev/dri/card0 в экземпляре QEMU KVM приведет к отключению системы, 6.10.0-rc6+
- uprobes: предотвратить mutex_lock() под rcu_read_lock()
- зависание системы с ядром RT на amd64
- ВНИМАНИЕ: CPU: 17 PID: 118273 в kernel/sched/deadline.c:794 setup_new_dl_entity+0x12c/0x1e8
- ядро упс в Pick_next_task_fair в ядре 6.8.1-1002-realtime
- ядро упс в aafs_create в ядре 6.8.1-1002-realtime
- мм: оптимизировать резервный контур
- MultiVM — гости L2, работающие под управлением стресс-нг, зависают при загрузке после сбоя
- powerpc/qspinlock: устранение взаимоблокировок в очереди MCS.
- регрессия ядра с флагами монтирования ext4 и ea_inode и использованием xattrs
- sched_ext: задачи TASK_DEAD должны быть переключены в SCX при ops_enable.
- расписание/срок: исправлена утечка ссылки на Task_struct.
- sched_ext: разделить глобальный DSQ на каждый узел NUMA.
- вызов getcpu с неверным адресом вызывает панику ядра
- cygwin: pread/pwrite: предотвратить ошибку EBADF после fork()
- cygwin 3.5.4-1: обработка сигналов уничтожает значения «long double»
- cygwin: timer_delete: исправить возвращаемое значение
- cygwin: измените pthread_sigqueue(), чтобы принять идентификатор потока
- безопасность/ключи: исправлен выход за пределы плиты в key_task_permission
- sched_ext: не удерживайте scx_tasks_lock слишком долго.
- sched/numa: исправлено потенциальное разыменование нулевого указателя в Task_numa_work().
- Reiserfs паникует, используя стрессор fsize
Улучшения ядра с использованием стресс-нг
2020:
- selinux: завершить встраивание функций хеш-таблиц
- selinux: хранить переходы ролей в хеш-таблице
- sched/rt: оптимизация ограничений планировщика RT группы проверки.
- sched/fair: обработка случая, когда Task_h_load() возвращает 0
- расписание/срок: разблокируйте потоки, усиленные PI, во время постановки в очередь
- мм: исправить проблему с производительностью madvise WILLNEED
- powerpc/dma: исправление dma_map_ops::get_required_mask
- Закрытие стресс-нг вызывает ошибки ядра v5.6-rt и v5.4-rt
2021:
- Вернуть «мм, slub: рассмотреть остальную часть частичного списка, если методacquire_slab() не удался.
- мм: память: добавьте orig_pmd в структуру vm_fault
- selftests/powerpc: добавить тест на исправление ошибок.
- dm crypt: Избегайте конкуренции за спин-блокировку percpu_counter в crypt_page_alloc()
- mm/migrate: оптимизировать обновления порядка понижения во время горячего подключения
- powerpc/rtas: улучшения rtas_busy_delay()
2022:
- sched/core: учет времени принудительного простоя для всех задач, кроме задачи простоя.
- ipc/mqueue: используйте get_tree_nodev() в mqueue_get_tree()
2023:
- мм/файл подкачки: добавьте cond_resched() в get_swap_pages()
- модуль: добавьте статистику отладки, чтобы определить нехватку памяти.
- модуль: избегайте выделения, если модуль уже присутствует и готов
- sched: чередование таймеров пропускной способности cfs для повышения однопоточной производительности при низкой загрузке.
- mm/khugepaged: удалить лишние try_to_freeze()
2024:
- mm/vmalloc: конфликты блокировок устранены с двух раз до одного.
- мм: переключите mm->get_unmapped_area() на флаг
- мм: всегда встроенный _compound_head() с CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
- мм: оптимизировать избыточный цикл mm_update_owner_next()
Презентации
- Презентация Stress-ng на ELCE 2019 в Лионе
- Видео вышеуказанной презентации
- Наставническая сессия Linux Foundation, май 2022 г.
- Презентация Kernel Recipes, сентябрь 2023 г.
- Linux Foundation, ИФА, июнь 2024 г.
Цитаты
- Инструмент тестирования производительности ядра Linux
2015:
- Улучшение моделей облачной энергетики для оптимизации эффективности центров обработки данных
- Tejo: контролируемая схема обнаружения аномалий для баз данных NewSQL
- CoMA: мониторинг ресурсов Docker-контейнеров
- Исследование взаимосвязи использования ЦП между хостом и гостями в облачной инфраструктуре
2016:
- Повышение детерминированности платформы PQOS DPDK
- На пути к энергоэффективному управлению данными в HPC: подход Open Ethernet Drive
- Анализ производительности ЦП и памяти при динамическом и выделенном распределении ресурсов с использованием XenServer в среде центра обработки данных
- Сколько энергии потребляет ваш сервер? Оценка мощности настенной розетки с использованием измерений RAPL
- DevOps для приложений Интернета вещей с использованием сотовых сетей и облака
- Симулятор рабочей нагрузки функций виртуальной сети
- Определение характеристик и уменьшение межплатформенной изменчивости производительности с помощью виртуализации на уровне ОС
- Сколько энергии потребляет ваш сервер? Оценка мощности настенной розетки с использованием измерений RAPL
- UIE: ориентированная на пользователя оценка помех для облачных приложений
2017:
- Автомасштабирование контейнеров: влияние относительных и абсолютных показателей
- Тестирование подсистемы Windows для Linux
- Практический анализ работы протокола Precision Time при различных типах нагрузки на систему
- На пути к прогнозированию затрат виртуальных машин в облаках с учетом энергопотребления
- Алгоритмы и архитектуры для параллельной обработки
- Передовые концепции и инструменты для обеспечения дата-центров возобновляемой энергией
- Мониторинг и моделирование открытых вычислительных серверов
- Экспериментальный и численный анализ потенциального повторного использования тепла в центрах обработки данных с жидкостным охлаждением
- Моделирование и анализ производительности в условиях помех в облаке
- Эффективно измеряйте и уменьшайте задержки ядра с учетом ограничений реального времени
- Мониторинг и анализ взаимосвязей загрузки ЦП между хостом и гостями в облачной сетевой инфраструктуре
- Измерение воздействия патча Preempt-RT
- Надежная идентификация библиотек с использованием методов VMI
- Elastic-PPQ: двухуровневая автономная система для обработки запросов пространственных предпочтений в потоке динамических данных.
- Интеграция OpenEPC в 5GTN как доказательство концепции NFV
- Динамический двоичный инструментарий с учетом времени
- Отчет об опыте: анализ логов с использованием обработки естественного языка и применение для обнаружения аномалий
- Характеристика помех процессам со смешанной критичностью по времени в многоядерной системе Linux
- Облачная оркестровка на уровне приложения
2018:
- Многоядерная эмуляция в виртуализированной среде
- Stress-SGX: загружайте и напрягайте свои анклавы ради удовольствия и прибыли
- quiho: Автоматизированное регрессионное тестирование производительности с использованием предполагаемых профилей использования ресурсов
- Анализ оптимизации памяти гипервизора и виртуальной машины
- Тестирование в реальном времени с помощью Fuego
- FECBench: расширяемая платформа для выявления источников снижения производительности в спектре ресурсов на границе облака
- Количественная оценка взаимодействия между структурными свойствами программного и аппаратного обеспечения в архитектуре ARM Big.LITTLE
- RAPL в действии: опыт использования RAPL для измерения мощности
2019:
- Изоляция производительности совместно размещенной рабочей нагрузки в архитектуре программного обеспечения для транспортных средств на базе контейнера
- Анализ и обнаружение эксплойтов на основе кэша
- kMVX: обнаружение утечек информации ядра с помощью многовариантного выполнения
- Масштабируемость Kubernetes, работающего через AWS
- Исследование показателей производительности контейнерных приложений с автоматическим масштабированием, интенсивно использующих ЦП.
- Scavenger: диспетчер ресурсов пакетной рабочей нагрузки «черного ящика» для улучшения использования в облачных средах
- Оценка производительности облачных приложений на основе профилирования микротестов
- Обнаружение аномалий в NFV с использованием древовидного метода обучения без учителя
2020:
- Компромисс производительности и энергопотребления для параллельных приложений в гетерогенных многопроцессорных системах
- C-Balancer: система профилирования и планирования контейнеров
- Моделирование скрытых характеристик виртуальной машины и прогнозирование производительности приложений с использованием полуконтролируемой неотрицательной матричной факторизации
- Полудинамическая балансировка нагрузки: эффективное распределенное обучение в неспециализированных средах
- Анализ производительности аппаратных технологий безопасности
- Разработка программного обеспечения Green Cloud для обработки больших данных
- Обнаружение атак на побочный канал кэша в реальном времени с помощью монитора счетчика производительности
- Подрыв архитектуры измерения целостности Linux
- Оценка производительности в реальном времени с использованием быстрого запроса на прерывание в стандартном ядре Linux
- Низкое энергопотребление на платформах Post-Moore для исследований высокопроизводительных вычислений
- Управление задержкой в среде Edge-Cloud
- Демистификация задержки планирования Linux в реальном времени
2021:
- Оптимизация: быстрая атака по скрытому каналу кэша без очистки с помощью асинхронного сговора
- Экспериментальный анализ в Hadoop MapReduce: более пристальный взгляд на методы обнаружения и восстановления ошибок
- Характеристики производительности BlueField-2 SmartNIC
- Оценка задержки во встраиваемых многопроцессорных системах для интеллектуальных сетей
- В стадии разработки: временное разнообразие как защитный механизм
- Архитектуры последовательного глубокого обучения для обнаружения аномалий в функциональных цепочках виртуальных сетей
- WattEdge: целостный подход к эмпирическим измерениям энергии в периферийных вычислениях
- PTEMagnet: детальное резервирование физической памяти для более быстрого просмотра страниц в публичных облаках
- Цена Meltdown и Spectre: энергетические затраты на меры по смягчению последствий на уровне операционной системы
- Эмпирическое исследование термических атак на периферийные платформы
- Sage: практичная и масштабируемая отладка производительности на основе машинного обучения в микросервисах
- Обобщенный подход к практическому распределению задач с использованием контура управления MAPE-K]
- На пути к независимому облачному мониторингу во время выполнения
- FIRESTARTER 2: динамическая генерация кода для стресс-тестов процессора
- Сравнение производительности кластера Kubernetes и встроенной системы
- Исследование производительности систем виртуализации
- Обманное оборудование для эффективной защиты программного обеспечения
2022:
- Общий метод оценки накладных расходов при консолидации серверов: снижение производительности в виртуальных машинах и контейнерах
- FedComm: понимание протоколов связи для периферийного федеративного обучения
- Достижение изоляции в промышленных периферийных системах смешанной критичности с помощью контейнеров реального времени
- Проектирование и внедрение системы прогнозирования неисправностей на основе машинного обучения в облачной инфраструктуре
- Строительные блоки TSN в Linux
- uKharon: служба членства для микросекундных приложений
- Оценка разработки встроенного ПО Secure Enclave для современных рабочих станций RISC-VСовременная рабочая станция RISC-V
- Оценка Linux реального времени на процессорной архитектуре RISC-V
- Hertzbleed: превращение мощных атак по побочным каналам в удаленные атаки по времени на x86
- Не используйте Mesh Вокруг: Атаки по побочным каналам и меры по их устранению в Mesh-межсоединениях
- Влияние на производительность многоядерных систем RISC-V со специальным оборудованием безопасности
2023:
- Борьба с оборудованием с помощью оборудования: общесистемное обнаружение и смягчение атак по побочным каналам с помощью счетчиков производительности
- Представляем k4.0s: модель оркестровки контейнеров смешанной критичности в Индустрии 4.0
- Комплексное исследование по оптимизации систем с блоками обработки данных
- Оценка производительности облачных приложений на основе профилирования микротестов
- PSPRAY: метод использования кучи ядра Linux на основе синхронизации по времени
- Надежное и точное обнаружение и прогнозирование аномалий производительности для облачных приложений: новая платформа, основанная на ансамблевом обучении
- Технико-экономическое обоснование встроенной системы управления в реальном времени на базе Python
- Адаптация параллельного SaaS к гетерогенным совместно расположенным облачным ресурсам
- Методология и основа для определения возможностей изоляции технологий виртуализации
- Data Station: делегированные, надежные и проверяемые вычисления для создания консорциумов по обмену данными с использованием условного депонирования данных
- Эмпирическое исследование сбоев, вызывающих нагрузку на ресурсы, в приложениях периферийных вычислений
- Обнаружение нестабильных тестов в приложениях JavaScript с помощью стресс-тестов и переупорядочения набора тестов
- Сила телеметрии: раскрытие программных атак по побочным каналам на системы Apple M1/M2
- Оценка производительности встраиваемой многоядерной системы смешанной критичности на базе PREEMPT RT Linux
- Утечка данных в изолированных виртуализированных корпоративных вычислительных системахСистемы
- Рекомендации по сравнительному анализу производительности сети в контейнерных инфраструктурах
- EnergAt: детальная атрибуция энергопотребления для мультитенантности
- Количественная оценка профиля безопасности приложений Linux
- Тестовый стенд Gotham: воспроизводимый испытательный стенд Интернета вещей для экспериментов по безопасности и создания наборов данных
- Профилирование с доверием: мониторинг системы из доверенных сред выполнения
- Вывод на устройстве с учетом температуры с использованием одноуровневой параллелизации с гетерогенными процессорами
- На пути к быстрому, адаптивному и аппаратному планированию пользовательского пространства
- Обнаружение гетерогенных аномалий в программных системах с помощью полуконтролируемого кросс-модального внимания
- Зеленое кодирование: эмпирический подход к использованию энергопотребления программных сервисов
- Повышение эмпирических инженерных исследований производительности программного обеспечения с помощью событий уровня ядра: комплексный подход к трассировке системы
- Cloud White: обнаружение и оценка снижения качества обслуживания рабочих нагрузок с критическими задержками в общедоступном облаке
- Динамическое управление ресурсами для облачных массовых синхронных параллельных приложений
- На пути к бессерверной оптимизации с масштабированием на месте
- Модульный подход к разработке экспериментальной основы для исследований в области управления ресурсами
- Целевая деанонимизация через боковой канал кэша: атаки и защита
- Валидация полносистемного симулятора RISC-V: системный подход
- Упрощенная реализация попакетной защиты услуг в eBPF/XDP
- Оптимизация и оценка производительности ROS2 в режиме реального времени
- Экспериментальный и численный анализ теплового поведения однофазного центра обработки данных с погружным охлаждением
2024:
- IdleLeak: использование побочных эффектов состояния простоя для утечки информации
- Профилирование с доверием: мониторинг системы из доверенных сред выполнения
- Примерное определение изоляции QoS на основе Cgroups для рабочей нагрузки базы данных
- BARO: надежный анализ первопричин микросервисов с помощью многомерного байесовского онлайн-обнаружения точек изменений
- Устранение неоднозначности аномалий производительности, вызванных изменениями рабочей нагрузки в облачных приложениях
- Сделайте шаг дальше: понимание Page Spray при эксплуатации ядра Linux
- Влияние энергопотребления в контейнерных облаках: комплексный анализ инструментов измерения мощности с открытым исходным кодом
- Оценка термической нагрузки на гетерогенное федеративное обучение на основе Интернета вещей
- Обнаружение аномалий при обработке критически важных вызовов
- Предварительная оценка возможностей реального времени Real-Time Linux на Raspberry Pi 5
- Сравнение архитектур реального времени на базе Linux для встраиваемых музыкальных приложений
- Нона: модель точного прогнозирования мощности с использованием нейронных сетей
Я очень хочу добавить на страницу проекта Stress-ng любые ссылки на исследования или проекты, в которых используется Stress-ng. Я также ценю информацию об ошибках ядра или падении производительности, обнаруженных с помощью стресс-нг.
Авторы
Большое спасибо следующим участникам стресс-нг (в алфавитном порядке):
Абдул Халим, Абурва Девараджан, Адриан Мартин, Адриан Ратиу, Александр Н. Костадинов, Александр Канавин, Александру Арделян, Альфонсо Санчес-Беато, Аллен Х, Амит Сингх Томар, Андрей Гельман, Андре Вильд, Анисс Астье, Антон Элиассон, Арьян ван де Вен, Барух Сиах, Брайан В. Льюис, Камилла Констанс, Карлос Сантос, Кристиан Эрхардт, Кристофер Браун, Чунью Ху, Дэниел Андрисс, Дэниэл Ходжес, Данило Круммрих, Дэвидсон Фрэнсис, Дэвид Тернер, Денис Овсиенко, Доминик Б. Чарнота, Доринда Бэсси, Эдер Зулиан, Эрик Лин, Эрик Сталман, Эрван Велу, Фабьен Малфой, Фабрис Фонтен, Фернан Зибер, Флориан Ваймер, Фрэнсис Ланиэль, Гильерме Янчак, Хуэй Ван, Се-Ценг Шен, Иян Мендес Вейга, Иван Шаповалов, Джеймс Хант, Ян Люббе, Цзяншен Лю, Джимми Хо, Джон Какур, Жюли, Жюль Масельбас, Жюльен Оливейн, Кенни Гонг, Халид Элмоусс, Кхем Радж, Лука Пиццамиглио, Луис Чемберлен, Луис Энрикеш, Лукас Дурфина, Маттео Италия, Мэттью Типпетт, Маурисио Фариа де Оливейра, Максим Шевалье, Макс Келлерманн, Майя Рашиш, Маюреш Читале, Мейсам Азад, Майк Коренефф, Мунехиса Камата, Мид Ся, Ник Хэнли, Николас Кикс, Пол Мензель, Пиюш Гойал, Ральф Рамзауэр, Розен Пенев, Рулин Хуанг, Саша Хауэр, Сергей Матюкевич, Сиддхеш Поярекар, Шойли Рахман, Стиан Онархейм, Тадеу Лима де Соуза Каскардо, Тиа Вайрод, Тхинь Тран, Тим Гарднер, Тим Гейтс, Тим Орлинг, Томми Рантала, Витольд Барилюк, Ивэй Линь, Йонг- Сюань Ван, Чжии Сунь.