스트레스-ng(스트레스 차세대)
Stress-ng는 다양한 선택 가능한 방식으로 컴퓨터 시스템의 스트레스 테스트를 수행합니다. 다양한 운영 체제 커널 인터페이스뿐만 아니라 컴퓨터의 다양한 물리적 하위 시스템을 실행하도록 설계되었습니다. 스트레스 방지 기능:
- 350개 이상의 스트레스 테스트
- 부동 소수점, 정수, 비트 조작 및 제어 흐름을 실행하는 80개 이상의 CPU별 스트레스 테스트
- 20개 이상의 가상 메모리 스트레스 테스트
- 40개 이상의 파일 시스템 스트레스 테스트
- 30개 이상의 메모리/CPU 캐시 스트레스 테스트
- 휴대용: Linux(Debian, Devuan, RHEL, Fedora, Centos, Slackware OpenSUSE, Ubuntu 등), Solaris, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Minix, Android, MacOS X, Serenity OS, GNU/Hurd, Haiku, Linux, Cygwin 및 SunOs/Dilos/Solaris용 Windows 하위 시스템. 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에서 테스트되었습니다.
Stress-ng는 원래 시스템이 심하게 작동할 때만 발생하는 운영 체제 버그뿐만 아니라 열 오버런과 같은 하드웨어 문제를 작동시키고 시스템을 작동시키도록 의도되었습니다. 일부 테스트로 인해 잘못 설계된 하드웨어에서 시스템이 과열될 수 있고 중지하기 어려울 수 있는 과도한 시스템 스래싱이 발생할 수 있으므로 스트레스를 주의해서 사용하세요.
Stress-ng는 테스트 처리 속도도 측정할 수 있습니다. 이는 다양한 운영 체제 릴리스나 하드웨어 유형에 따른 성능 변화를 관찰하는 데 유용할 수 있습니다. 그러나 정확한 벤치마크 테스트 도구로 사용하도록 의도된 것은 아니므로 이러한 방식으로 사용하지 마십시오.
루트 권한으로 Stress-ng를 실행하면 Linux 시스템의 메모리 부족 설정이 조정되어 메모리가 부족한 상황에서 스트레스 요인을 제거할 수 없게 되므로 이를 신중하게 사용하십시오. 적절한 권한이 있으면 Stress-ng를 사용하여 이온 클래스와 이온 수준을 조정할 수 있습니다. 이 경우에도 주의해서 사용해야 합니다.
타르볼
Stress-ng의 각 버전에 대한 Tarball은 다음 URL을 사용하여 다운로드할 수 있습니다.
https://github.com/ColinIanKing/stress-ng/tarball/version
여기서 version은 관련 버전 번호입니다. 예를 들면 다음과 같습니다.
https://github.com/ColinIanKing/stress-ng/tarball/V0.13.05
컨테이너에서 최신 스트레스 처리 스냅샷 실행
docker run --rm ghcr.io/colinianking/stress-ng --help
또는
docker run --rm colinianking/stress-ng --help
우분투용 데비안 패키지
최신 버전의 스트레스-ng는 다양한 Ubuntu 릴리스에 대한 Ubuntu 스트레스-ng ppa에서 사용할 수 있습니다.
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
빌딩 스트레스-ng
빌드하려면 다음 라이브러리가 완전한 기능을 갖춘 스트레스 생성 빌드를 보장합니다. (최신 disto 릴리스에는 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, 페도라, 센토스:
- 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
알파인 리눅스:
- 빌드 기반 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
스냅:
- 스트레스-ng는 snapcraft로 스냅되도록 의도되지 않았습니다. 그렇게 하는 것은 프로젝트 관리자와 주요 개발자의 바람에 엄격히 어긋나는 것입니다.
참고: 빌드는 빌드 종속성을 감지하려고 시도하며 지원 라이브러리가 설치되지 않은 경우 기능이 비활성화된 이미지를 빌드합니다.
빌드 시간에 Stress-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로의 포팅은 상대적으로 쉽습니다.
참고: 빌드가 빌드 구성 파일을 다시 생성하도록 강제하려면 git 저장소에서 변경 사항을 가져온 후 항상 make clean
실행하세요. 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가 필요하며 다음을 사용하여 구축합니다.
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 컴파일러로 빌드하려면:
PCC 이식 가능한 C 컴파일러로 빌드하려면 다음을 사용하십시오.
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)
예를 들어 aarch64 qnx 크로스 빌드와 같이 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'd 코드 출력에 대해 경고:
make clean
UNEXPECTED=1 make
스트레스-ng에 기여:
패치를 [email protected]으로 보내거나 https://github.com/ColinIanKing/stress-ng에서 요청을 병합하세요.
빠른 시작 참조 가이드
Ubuntu 스트레스-ng 참조 가이드에는 간략한 개요와 작업 예제가 포함되어 있습니다.
예
CPU 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
모든 온라인 CPU에서 매트릭스 스트레스 요인을 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개의 I/O 스트레스 요인을 혼합하여 실행하고 디스크 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%)
커널 로그 오류 검사를 통해 rawdev 스트레스 요인을 제외하고 ZFS 파일 시스템에서 I/O 스트레스 요인의 순열을 실행합니다.
stress-ng --class io --permute 0 -x rawdev -t 1m --vmstat 1 --klog-check --temp-path /zfs-pool/test
x86만 해당: 검증이 활성화된 8개의 동시 3D 매트릭스 스트레스 요인에서 RAPL 인터페이스를 사용하여 전력을 측정합니다. RAPL을 읽으려면 루트 권한이 필요합니다.
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
Stress-ng에서 발견된 버그 및 회귀
Stress-ng는 다양한 커널, QEMU 버그/회귀 및 libc 버그를 발견했습니다. 이러한 문제를 해결하기 위해 적절한 수정 사항이 출시되었습니다.
2015년:
- 키: 편집이 유효한 경우 연관 배열 편집을 해제하는지 확인하세요.
- proc: /proc/$pid/coredump_filter에 쓸 때 -ESRCH 오류 수정
- 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가 CPU/작업의 중단을 감지했습니다.
- 버그: 커널 NULL 포인터 역참조를 처리할 수 없습니다.
- 경고: 가능한 순환 잠금 종속성이 감지되었습니다.
2018:
- Illumos: ofdlock(): 어설션 실패: lckdat->l_start == 0
- debugobjects: __debug_check_no_obj_freed()에서 전역 사용 가능 목록을 사용합니다.
- ext4_validate_inode_bitmap:99: 통신 스트레스-ng: 손상된 inode 비트맵
- virtio/s390: ccw_io_helper()의 경합 수정
2019년:
- mm/page_idle.c: end_pfn이 max_pfn보다 크기 때문에 오류를 수정합니다.
- mm: 압축: 작업이 종료될 때 압축하는 동안 CPU 사용량을 100% 방지합니다.
- mm/vmalloc.c: 분할 목적을 위해 하나의 개체로 CPU를 미리 로드합니다.
- perf evlist: sb 스레드에서 unshare(CLONE_FS)를 사용하여 setns(CLONE_NEWNS)가 작동하도록 합니다.
- riscv: -1 미만의 잘못된 syscall을 거부합니다.
2020:
- RISC-V: mmap에서 쓰기+실행 전용 페이지 매핑 요청을 허용하지 않음
- riscv: max_pfn을 마지막 페이지의 PFN으로 설정
- crypto: hisilicon - SEC 드라이버 모듈 매개변수 업데이트
- net: atm: lec_seq_next의 위치 인덱스 업데이트 수정
- sched/debug: 여러 번의 작은 플래그 읽기로 인한 메모리 손상 수정
- ocfs2: ratelimit '최대 조회 시간 도달' 알림
- perf를 사용하면 스택 오버플로로 인해 커널이 충돌할 수 있습니다.
- gcov의 스트레스-ng 활성화 초점 커널 트리거 OOPS
- 스트레스-ng mknod 및 스트레스-ng 심볼릭 링크로 인한 s390x의 커널 버그 list_del 손상
2021년:
- sparc64: 오류 로드 없음 처리 시 opcode 필터링 수정
- 이를 지원하지 않는 파일 시스템에서 O_DIRECT로 파일을 열면 빈 파일이 남게 됩니다.
- 잠금/원자: sparc: Arch_cmpxchg64_local() 수정
- btrfs: 동시 할당으로 인한 시스템 청크 배열의 고갈 문제 수정
- btrfs: 시스템 청크 배열의 고갈을 방지하기 위해 청크 할당 재작업
- btrfs: 시스템 청크와 관련된 동시 청크 할당으로 교착 상태 수정
- 잠금/원자: sparc: Arch_cmpxchg64_local() 수정
- 파이프: 상태 변경뿐만 아니라 모든 파이프 IO에 대해 FASYNC 알림을 수행합니다.
- io-wq: 일정 외 경로에서 GFP_ATOMIC 할당을 제거합니다.
- mm/swap: iomap_swapfile_add_extent의 최대 페이지를 고려합니다.
- block: loop: 열기와 제거 사이의 교착 상태 수정
- tmpfs: O_DIRECT | O_CREATE open은 열기 실패를 보고하지만 실제로는 파일을 생성합니다.
2022년:
- copy_process(): Sigand->siglock 중요 섹션 밖으로 fd_install()을 이동합니다.
- minix: O_DIRECT로 파일을 열 때 발생하는 버그 수정
- arch/arm64: 코어 스케줄링을 위한 토폴로지 초기화 수정
- vm/region.c:313에서 amd64의 Minux 3.4.0-RC6에서 스트레스-ng를 실행합니다.
- 공유 해제 테스트가 처리되지 않은 페이지 오류를 트리거합니다.
- request_module DoS
- Linux 5.18의 NUMA 벤치마크 회귀
- mas_spanning_rebalance()의 언더플로우 및 테스트
- mm/huge_memory: THP 분할 중에 swp_entry_t를 방해하지 마십시오.
- AppArmor: 커밋으로 인한 Stress-ng.kill.ops_per_sec 회귀 -42.5%
- clocksource: 높은 읽기 대기 시간이 감지되면 Watchdog을 일시적으로 일시 중지합니다.
2023년:
- opcode 0x4848의 qemu-system-m68k 세그폴트
- rtmutex: 최상위 웨이터가 항상 깨어 있는지 확인합니다.
- mm/swap: swapoff와 get_swap_pages() 사이의 swap_info_struct 경합 수정
- block, bfq: 0 wsum에서 0으로 나누기 오류 수정
- riscv: mm: VM_WRITE 및 VM_EXEC의 prot를 읽을 수 있어야 합니다.
- "mm: vmscan: 글로벌 슬래브 축소 잠금 해제"를 되돌립니다.
- 스트레스-ng를 행사할 때 mm/swapfile.c:718 add_to_avail_list에서 충돌/멈춤
- mm: zswap 쓰기 저장 경쟁 조건 수정
- x86/fpu: CR4에서 OSXSAVE를 활성화한 후 X86_FEATURE_OSXSAVE 기능을 설정합니다.
- 커널/포크: __put_task_struct() 호출 컨텍스트에 주의하세요.
- arm64: dts: ls1028a: l1 및 l2 캐시 정보 추가
- filemap: order0 Folio를 처리하려면 filemap_map_order0_folio()를 추가하세요.
- mm: 축소기: 축소기를 동적으로 할당하기 위한 인프라 추가
- mm: Shrinker: 전역 슬래브를 잠금 없이 축소하도록 만듭니다.
- bcachefs: 노드가 재사용되거나 제거되면 btree_node_just_write()를 지웁니다.
- 추적: 버퍼링된 이벤트를 비활성화할 때 불완전한 잠금 수정
- mm: 마이그레이션: 페이지 마이그레이션 중에 잘못된 페이지 매핑이 발생하는 문제 수정
- mm: mmap: MAP_STACK을 VM_NOHUGEPAGE에 매핑
2024년:
- fs: dump_mapping() 견고성 향상
- tracing: tracing_map에 요소를 삽입할 때 가시성을 보장합니다.
- 커넥터/cn_proc: 되돌리기 "커넥터: proc_event_num_listeners 개수가 지워지지 않은 문제 수정"
- powerpc/pseries: 도난당한 시간의 정확성 수정
- OpenBSD: libm: sincosl의 segfault
- QEMU KVM 인스턴스에서 /dev/dri/card0을 열고 닫으면 시스템 6.10.0-rc6+가 종료됩니다.
- uprobes: rcu_read_lock()에서 mutex_lock()을 방지합니다.
- amd64에서 RT 커널로 인해 시스템이 잠겼습니다.
- 경고: CPU: 17 PID: 118273 at kernel/sched/deadline.c:794 setup_new_dl_entity+0x12c/0x1e8
- 6.8.1-1002-실시간 커널의 pick_next_task_fair에서 커널 오류가 발생했습니다.
- 6.8.1-1002-실시간 커널의 aafs_create에서 커널 오류가 발생합니다.
- mm: 중복 루프 최적화
- MultiVM - 충돌이 발생한 후 스트레스를 받는 L2 게스트가 부팅 시 멈춤
- powerpc/qspinlock: MCS 대기열의 교착 상태 수정
- ext4 및 ea_inode 마운트 플래그를 사용한 커널 회귀 및 xattrs 실행
- sched_ext: TASK_DEAD 작업은 ops_enable에서 SCX로 전환되어야 합니다.
- sched/deadline: task_struct 참조 누출 수정
- sched_ext: NUMA 노드별로 전역 DSQ 분할
- 잘못 정렬된 주소로 getcpu를 호출하면 커널 패닉이 발생합니다.
- cygwin: pread/pwrite: fork() 이후 EBADF 오류 방지
- cygwin 3.5.4-1: 신호 처리로 인해 'long double' 값이 삭제됩니다.
- cygwin: time_delete: 반환 값 수정
- cygwin: 스레드 ID를 허용하도록 pthread_sigqueue()를 변경합니다.
- 보안/키: key_task_permission에서 슬래브 범위를 벗어난 문제 수정
- sched_ext: scx_tasks_lock을 너무 오랫동안 유지하지 마세요.
- sched/numa: task_numa_work()에서 잠재적인 null 포인터 역참조 문제를 수정합니다.
- fsize 스트레스 요인을 사용하여 reiserfs 패닉
Stress-NG를 사용한 커널 개선
2020:
- selinux: 해시탭 함수의 인라인 완성
- selinux: 해시 테이블에 역할 전환 저장
- sched/rt: 그룹 RT 스케줄러 제약 조건 확인 최적화
- sched/fair: 0을 반환하는 task_h_load()의 사례를 처리합니다.
- sched/deadline: 큐에 추가하는 동안 PI 부스트 스레드 조절 해제
- mm: madvise가 성능 문제를 해결해야 함
- powerpc/dma: dma_map_ops::get_required_mask 수정
- 스트레스-ng 닫기로 인해 커널 오류 v5.6-rt 및 v5.4-rt 발생
2021년:
- "mm, slub: acquire_slab()이 실패하면 부분 목록의 나머지 부분을 고려합니다.
- mm: 메모리: orig_pmd를 vm_fault 구조체에 추가
- selftests/powerpc: 완화 패치 테스트 추가
- dm crypt: crypt_page_alloc()에서 percpu_counter 스핀록 경합을 방지합니다.
- mm/마이그레이션: 핫플러그 시간 강등 순서 업데이트 최적화
- powerpc/rtas: rtas_busy_delay() 개선
2022년:
- sched/core: 유휴 작업을 제외한 모든 작업에 대한 강제 유휴 시간 계산
- ipc/mqueue: mqueue_get_tree()에서 get_tree_nodev() 사용
2023년:
- mm/swapfile: get_swap_pages()에 cond_resched()를 추가합니다.
- 모듈: 메모리 부족을 식별하는 데 도움이 되는 디버그 통계를 추가합니다.
- 모듈: 모듈이 이미 존재하고 준비된 경우 할당을 방지합니다.
- sched: 낮은 활용도에서 향상된 단일 스레드 성능을 위한 인터리브 cfs 대역폭 타이머
- mm/khugepaged: 중복된 try_to_freeze() 제거
2024년:
- mm/vmalloc: 잠금 경합을 두 번에서 한 번으로 제거했습니다.
- mm: mm->get_unmapped_area()를 플래그로 전환합니다.
- mm: 항상 CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y를 사용하여 _compound_head()를 인라인합니다.
- mm: mm_update_owner_next()의 중복 루프를 최적화합니다.
프리젠테이션
- ELCE 2019 리옹에서 Stress-ng 프레젠테이션
- 위 프레젠테이션의 비디오
- Linux 재단 멘토링 세션, 2022년 5월
- 커널 레시피 프레젠테이션, 2023년 9월
- Linux 재단, ELISA, 2024년 6월
인용
2015년:
- 데이터센터 효율성 최적화를 위한 클라우드 에너지 모델 강화
- Tejo: NewSQL 데이터베이스를 위한 감독형 이상 탐지 체계
- CoMA: Docker 컨테이너의 리소스 모니터링
- 클라우드 인프라에서 호스트와 게스트 간의 CPU 활용 관계 조사
2016년:
- 플랫폼 결정성 향상 PQOS DPDK
- HPC의 에너지 효율적인 데이터 관리를 향하여: 개방형 이더넷 드라이브 접근 방식
- 데이터센터 환경에서 XenServer를 활용한 동적 및 전용 리소스 할당에 대한 CPU 및 메모리 성능 분석
- 서버는 얼마나 많은 전력을 소비합니까? RAPL 측정을 사용하여 벽면 소켓 전력 추정
- 셀룰러 네트워크 및 클라우드를 사용하는 IoT 애플리케이션을 위한 DevOps
- 가상 네트워크 기능 워크로드 시뮬레이터
- OS 수준 가상화를 사용하여 플랫폼 간 성능 변동성 특성화 및 감소
- 귀하의 서버는 얼마나 많은 전력을 소비합니까? RAPL 측정을 사용하여 벽면 소켓 전력 추정
- UIE: 클라우드 애플리케이션을 위한 사용자 중심 간섭 추정
2017년:
- 컨테이너의 자동 크기 조정: 상대 지표와 절대 지표의 영향
- Linux용 Windows 하위 시스템 테스트
- 다양한 유형의 시스템 부하에 따른 Precision Time Protocol의 실제 분석
- 클라우드의 가상 머신 에너지 인식 비용 예측을 향하여
- 병렬 처리를 위한 알고리즘 및 아키텍처
- 데이터 센터의 재생 가능 에너지 공급을 위한 고급 개념 및 도구
- 개방형 컴퓨팅 서버 모니터링 및 모델링
- 수냉식 데이터 센터의 열 재사용 가능성에 대한 실험적 및 수치적 분석
- 클라우드 간섭에 따른 성능 모델링 및 분석
- 실시간 제약 조건에 대한 커널 지연 시간을 효과적으로 측정하고 줄입니다.
- 클라우드 네트워킹 인프라에서 호스트와 게스트 간의 CPU 부하 관계 모니터링 및 분석
- Preempt-RT 패치의 영향 측정
- VMI 기술을 사용한 안정적인 라이브러리 식별
- Elastic-PPQ: 동적 데이터 스트림에 대한 공간 선호 쿼리 처리를 위한 2단계 자율 시스템
- NFV 개념 증명으로 5GTN 내 OpenEPC 통합
- 시간 인식 동적 바이너리 계측
- 경험 보고서: 자연어 처리를 이용한 로그 마이닝 및 이상 탐지 적용
- 멀티코어 Linux 시스템에서 혼합 시간 중요도 프로세스 간섭 특성화
- 애플리케이션 수준의 클라우드 오케스트레이션
2018:
- 가상화된 환경의 멀티코어 에뮬레이션
- Stress-SGX: 재미와 이익을 위해 엔클레이브를 로드하고 스트레스를 가하세요.
- quiho: 추론된 리소스 활용도 프로필을 사용한 자동 성능 회귀 테스트
- 하이퍼바이저 및 가상 머신 메모리 최적화 분석
- Fuego를 사용한 실시간 테스트
- FECBench: 클라우드 에지 리소스 스펙트럼에서 성능 간섭의 원인을 찾아내기 위한 확장 가능한 프레임워크
- ARM Big.LITTLE 아키텍처에서 소프트웨어와 하드웨어의 구조적 속성 간의 상호 작용 정량화
- RAPL 활용 사례: 전력 측정에 RAPL을 사용한 경험
2019년:
- 컨테이너 기반 차량 소프트웨어 아키텍처에서 공동 배치된 워크로드의 성능 분리
- 캐시 기반 공격 분석 및 탐지
- kMVX: 다중 변형 실행으로 커널 정보 유출 감지
- AWS에서 실행되는 Kubernetes의 확장성
- CPU 집약적인 컨테이너화된 애플리케이션의 Auto-Scaling 성능 측정에 관한 연구
- Scavenger: 클라우드 환경의 활용도 향상을 위한 블랙박스 배치 워크로드 리소스 관리자
- 마이크로 벤치마크 프로파일링을 기반으로 클라우드 애플리케이션 성능 예측
- 트리 기반 비지도 학습 방법을 사용한 NFV의 이상 탐지
2020:
- 이기종 다중 처리 시스템의 병렬 애플리케이션에 대한 성능 및 에너지 절충
- C-Balancer: 컨테이너 프로파일링 및 스케줄링을 위한 시스템
- 반지도 비음수 행렬 분해를 사용하여 VM 잠재 특성 모델링 및 애플리케이션 성능 예측
- 반동적 로드 밸런싱: 비전용 환경에서의 효율적인 분산 학습
- 하드웨어 지원 보안 기술의 성능 분석
- 빅데이터 처리를 위한 그린 클라우드 소프트웨어 엔지니어링
- 성능 카운터 모니터를 이용한 캐시 부채널 공격 실시간 탐지
- Linux의 무결성 측정 아키텍처 전복
- 표준 Linux 커널에서 빠른 인터럽트 요청을 사용한 실시간 성능 평가
- HPC 연구를 위한 포스트 무어 플랫폼의 낮은 에너지 소비
- Edge-Cloud 환경의 지연 시간 관리
- 실시간 Linux 스케줄링 지연에 대한 이해
2021년:
- 합리화: 비동기식 충돌을 활성화하여 빠르고 플러시 없는 캐시 은밀 채널 공격
- Hadoop MapReduce의 실험적 분석: 오류 감지 및 복구 기술에 대한 자세히 살펴보기
- BlueField-2 SmartNIC의 성능 특성
- 스마트 그리드용 다중 처리 임베디드 시스템의 지연 시간 평가
- 진행 중인 작업: 보호 메커니즘으로서의 타이밍 다양성
- 가상 네트워크 기능 체인의 이상 탐지를 위한 순차적 딥 러닝 아키텍처
- WattEdge: 엣지 컴퓨팅의 경험적 에너지 측정을 위한 전체적인 접근 방식
- PTEMagnet: 퍼블릭 클라우드에서 더 빠른 페이지 이동을 위한 세분화된 물리적 메모리 예약
- 멜트다운 및 스펙터의 대가: 운영 체제 수준의 완화에 대한 에너지 오버헤드
- 엣지 플랫폼에 대한 열 공격에 대한 실증적 연구
- Sage: 마이크로서비스의 실용적이고 확장 가능한 ML 기반 성능 디버깅
- MAPE-K 제어 루프를 이용한 실제 작업 할당을 위한 일반화된 접근법]
- 독립적인 런타임 클라우드 모니터링을 향하여
- FIRESTARTER 2: 프로세서 스트레스 테스트를 위한 동적 코드 생성
- Kubernetes 클러스터와 임베디드 시스템의 성능 비교
- 가상화 시스템 성능 탐색
- 하드웨어를 속여 소프트웨어를 효율적으로 보호
2022년:
- 서버 통합 시 오버헤드를 평가하는 일반적인 방법: 가상 머신 및 컨테이너의 성능 저하
- FedComm: 에지 기반 연합 학습을 위한 통신 프로토콜 이해
- 실시간 컨테이너를 사용하여 중요도가 혼합된 산업용 엣지 시스템에서 격리 달성
- 클라우드 인프라의 머신러닝 기반 장애 예측 시스템 설계 및 구현
- Linux의 TSN 빌딩 블록
- uKharon: 마이크로초 애플리케이션을 위한 멤버십 서비스
- 현대 RISC-V 워크스테이션을 위한 Secure Enclave 펌웨어 개발 평가현대 RISC-V 워크스테이션
- RISC-V 프로세서 아키텍처에서 Real-Time Linux 평가
- Hertzbleed: x86에서 전력 측면 채널 공격을 원격 타이밍 공격으로 전환
- 메시하지 마십시오: 메시 상호 연결에 대한 측면 채널 공격 및 완화
- 전용 보안 하드웨어가 포함된 멀티 코어 RISC-V 시스템의 성능에 미치는 영향
2023년:
- 하드웨어와 하드웨어 싸움: 성능 카운터를 사용한 시스템 전반의 측면 채널 공격 탐지 및 완화
- k4.0s 소개: Industry 4.0의 중요도 혼합 컨테이너 오케스트레이션 모델
- 데이터 처리 장치를 이용한 시스템 최적화에 관한 종합 연구
- 마이크로 벤치마크 프로파일링을 기반으로 클라우드 애플리케이션 성능 예측
- PSPRAY: 타이밍 사이드 채널 기반 Linux 커널 힙 활용 기법
- 클라우드 애플리케이션을 위한 강력하고 정확한 성능 이상 탐지 및 예측: 새로운 앙상블 학습 기반 프레임워크
- Python 기반 임베디드 실시간 제어 시스템에 대한 타당성 조사
- 이기종 공동 배치 클라우드 리소스에 병렬 SaaS 적용
- 가상화 기술의 격리 기능을 결정하는 방법론 및 프레임워크
- 데이터 스테이션: 데이터 에스크로를 통해 데이터 공유 컨소시엄을 활성화하기 위한 위임되고 신뢰할 수 있으며 감사 가능한 계산
- 엣지 컴퓨팅 애플리케이션의 리소스 스트레스 오류에 대한 실증적 연구
- 스트레스 및 테스트 모음 재정렬을 사용하여 JavaScript 애플리케이션에서 불안정한 테스트 찾기
- 원격 측정의 힘: Apple M1/M2 시스템에 대한 소프트웨어 기반 부채널 공격 발견
- PREEMPT RT Linux 기반 임베디드 멀티코어 혼합 임계 시스템의 성능 평가
- 격리된 가상화된 엔터프라이즈 컴퓨팅 시스템의 데이터 유출
- 컨테이너화된 인프라의 네트워크 성능 벤치마킹에 대한 고려 사항
- EnergAt: 멀티 테넌시를 위한 세분화된 에너지 귀속
- Linux 애플리케이션의 보안 프로필 정량화
- Gotham 테스트베드: 보안 실험 및 데이터 세트 생성을 위한 재현 가능한 IoT 테스트베드
- 신뢰 프로파일링: 신뢰할 수 있는 실행 환경에서 시스템 모니터링
- 이기종 프로세서와 단일 레이어 병렬화를 사용한 열 인식 온디바이스 추론
- 빠르고 적응력이 뛰어나며 하드웨어를 지원하는 사용자 공간 스케줄링을 향하여
- Semi-Supervised Cross-modal Attention을 통한 소프트웨어 시스템의 이종 이상 탐지
- 그린 코딩 : 소프트웨어 서비스의 에너지 소비를 활용하기 위한 실증적 접근 방식
- 커널 수준 이벤트를 통한 경험적 소프트웨어 성능 엔지니어링 연구 강화: 포괄적인 시스템 추적 접근 방식
- Cloud White: 퍼블릭 클라우드에서 지연 시간이 중요한 워크로드의 QoS 저하 감지 및 예측
- 클라우드 기반 대량 동기식 병렬 애플리케이션을 위한 동적 리소스 관리
- 내부 확장을 통한 서버리스 최적화를 향하여
- 자원 관리 연구를 위한 실험적 프레임워크를 설계하기 위한 모듈식 접근 방식
- 캐시 사이드 채널을 통한 표적 익명화: 공격 및 방어
- 전체 시스템 RISC-V 시뮬레이터 검증: 체계적인 접근 방식
- eBPF/XDP에서 패킷별 서비스 보호의 경량 구현
- ROS2 실시간 성능 최적화 및 평가
- 단상 침수 냉각 데이터 센터의 열 거동에 대한 실험 및 수치 분석
2024년:
- IdleLeak: 정보 유출을 위한 유휴 상태 부작용 악용
- 신뢰 프로파일링: 신뢰할 수 있는 실행 환경에서 시스템 모니터링
- 데이터베이스 워크로드에 대한 Cgroup 기반 QoS 격리 결정의 예시
- BARO: 다변량 베이지안 온라인 변화 지점 감지를 통한 마이크로서비스에 대한 강력한 근본 원인 분석
- 클라우드 네이티브 애플리케이션의 워크로드 변경으로 인한 성능 이상 현상 구분
- 한 단계 더 나아가: Linux 커널 공격의 페이지 스프레이 이해
- 컨테이너화된 클라우드에서 전력 소비가 미치는 영향: 오픈 소스 전력 측정 도구에 대한 종합 분석
- 이기종 IoT 기반 연합 학습의 열 스트레스 평가
- 미션 크리티컬 통화 처리 내 이상 탐지
- Raspberry Pi 5 기반 Real-Time Linux의 실시간 기능에 대한 예비 평가
- 임베디드 음악 애플리케이션을 위한 실시간 Linux 기반 아키텍처 비교
- Nona: 신경망을 사용한 정확한 전력 예측 모델
나는 스트레스-ng를 사용하는 연구나 프로젝트에 대한 인용을 스트레스-ng 프로젝트 페이지에 추가하고 싶습니다. 또한 Stress-ng에서 발견된 커널 버그나 성능 저하에 관한 정보에도 감사드립니다.
기여자
Stress-ng에 기여해 주신 다음 분들께 감사드립니다(알파벳순).
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 벤, 바루치 시아크, 브라이언 W. 루이스, 카밀 콘스탄스, 카를로스 산토스, 크리스티안 에르하르트, 크리스토퍼 브라운, 츄뉴 후, 다니엘 안드리세, 다니엘 호지스, 다닐로 크룸리히, 데이비슨 프란시스, 데이비드 터너, 데니스 오브시엔코, 도미니크 B 차르노타, 도린다 배시, 에더 줄리안, 에릭 린, 에릭 스탈만, 에르완 벨루, 파비앙 말포이 , 파브리스 퐁텐, 페르낭 지베르, 플로리안 바이머, 프란시스 라니엘, 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, 루카 피자미글리오, 루이스 체임벌린, 루이스 엔리케스, 루카스 뒤르피나, 마테오 이탈리아, 매튜 티펫, 마우리시오 파리아 데 올리베이라, 막심 슈발리에, 막스 켈러만, 마야 라시쉬, 마유레쉬 치탈레, 메이삼 아자드, 마이크 코레네프, 무네히사 카마타, 미드 시아, 닉 핸리, 니콜라스 킥스, 폴 멘젤, 피유시 고얄, 랄프 람사우어, 로젠 페네프, 루린 황, 사샤 하우어, 세르게이 마튜케비치, 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.