ストレスNG(ストレス次世代)
tress-ng は、選択可能なさまざまな方法でコンピュータ システムのストレス テストを行います。これは、コンピュータのさまざまな物理サブシステムやさまざまなオペレーティング システムのカーネル インターフェイスを実行できるように設計されています。ストレス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 用 Windows サブシステム、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 でテスト済み
tress-ng は元々、マシンをハードに動作させ、システムがハードに処理されている場合にのみ発生する、熱オーバーランやオペレーティング システムのバグなどのハードウェアの問題を回避することを目的としていました。一部のテストでは、設計が不十分なハードウェア上でシステムがホットラン状態になったり、過剰なシステム スラッシングを引き起こして停止することが困難になる可能性があるため、stress-ng の使用には注意が必要です。
tress-ng はテストのスループット レートも測定できます。これは、オペレーティング システムのリリースやハードウェアの種類が異なる場合のパフォーマンスの変化を観察するのに役立ちます。ただし、正確なベンチマーク テスト スイートとして使用することは決して意図されていないため、このような方法で使用しないでください。
root 権限でストレス-ngを実行すると、Linux システムのメモリ不足設定が調整され、メモリ不足の状況でストレッサーを強制終了できなくなるため、これを慎重に使用してください。適切な権限があれば、stress-ng を使用してイオンクラスとイオンレベルを調整できますが、これも注意して使用する必要があります。
タールボール
tress-ng の各バージョンの Tarball は、次の URL を使用してダウンロードできます。
https://github.com/ColinIanKing/stress-ng/tarball/version
ここで、version は関連するバージョン番号です。次に例を示します。
https://github.com/ColinIanKing/stress-ng/tarball/V0.13.05
コンテナ内で最新のtress-ngスナップショットを実行する
docker run --rm ghcr.io/colinianking/stress-ng --help
または
docker run --rm colinianking/stress-ng --help
Ubuntu 用の Debian パッケージ
tress-ng の最新バージョンは、さまざまな Ubuntu リリースの Ubuntutress-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
ビルドするには、次のライブラリを使用すると、完全に機能するtress-ng ビルドが保証されます (最近の disto リリースでは libattr は必要ないことに注意してください)。
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 -開発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
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-開発 xxhash-開発 zlib-開発
ClearLinux:
- devpkg-acl devpkg-eigen devpkg-Judy devpkg-kmod devpkg-attr devpkg-libbsd devpkg-libjpeg-turbo devpkg-libsctp devpkg-mesa
アルパイン 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
スナップ:
- tress-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 ライブラリを使用してビルドするには:
インテル C コンパイラー icc でビルドするには、以下を使用します。
インテル 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
ストレスNGへの貢献:
パッチを[email protected]に送信するか、マージリクエストをhttps://github.com/ColinIanKing/stress-ngに送信してください。
クイックスタートリファレンスガイド
Ubuntu ストレス NG リファレンス ガイドには、簡単な概要と実際の例が含まれています。
例
4 つの CPU、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 を読み取るには 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
Stress-NG で見つかったバグとリグレッション
tress-ng は、さまざまなカーネル、QEMU のバグ/リグレッション、libc のバグを発見しました。これらの問題に対処するために、適切な修正が行われました。
2015年:
- キー: 編集が有効な場合は、関連付けられた配列の編集を解放します。
- proc: /proc/$pid/coredump_filter への書き込み時の -ESRCH エラーを修正
- SMP分割エラー
2016年:
- fs/locks.c: posix ロック ストレス テスト中にカーネルが異常終了する
- sched/core: try_to_wake_up() とウェイクアップされたタスク間の競合を修正
- devpts: 失敗したメモリ割り当てでの null ポインタの逆参照を修正しました。
- 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: 分割目的で 1 つのオブジェクトを CPU にプリロードします。
- perf evlist: SB スレッドで unshare(CLONE_FS) を使用して setns(CLONE_NEWNS) を機能させる
- riscv: -1 未満の無効なシステムコールを拒否する
2020年:
- RISC-V: mmap で書き込み+実行のみのページ マッピング リクエストを許可しない
- riscv: max_pfn を最後のページの PFN に設定します
- crypto: hisilicon - SEC ドライバー モジュール パラメーターを更新
- net: atm: lec_seq_next の位置インデックスの更新を修正
- sched/debug: フラグの複数の小さな読み取りによって引き起こされるメモリ破損を修正
- ocfs2: 「最大検索回数に達しました」という通知を ratelimit します
- perf を使用すると、スタック オーバーフローでカーネルがクラッシュする可能性があります
- gcov が有効なフォーカル カーネルでのストレス NG が OOPS をトリガーする
- s390x でのストレス ng mknod およびストレス ng シンボリックリンクによるカーネル バグ list_del の破損
2021年:
- sparc64: フォールトなしロードの処理におけるオペコード フィルタリングを修正しました。
- O_DIRECT をサポートしていないファイル システム上で 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 の最大ページを考慮する
- ブロック: ループ: オープンと削除の間のデッドロックを修正
- tmpfs: O_DIRECT | O_CREATE open はオープンの失敗を報告しますが、実際にはファイルを作成します
2022年:
- copy_process(): fd_install() を sighand->siglock クリティカル セクションから移動します。
- minix: O_DIRECT でファイルを開くときのバグを修正
- Arch/arm64: コア スケジューリングのトポロジ初期化を修正
- amd64 上の Minux 3.4.0-RC6 でストレス ng を実行中 vm/region.c:313 でアサート
- 共有解除テストにより未処理のページ フォールトがトリガーされる
- request_module DoS
- Linux 5.18 での NUMA ベンチマークの回帰
- mas_spanning_rebalance() とテストでのアンダーフロー
- mm/huge_memory: THP 分割中に swp_entry_t を上書きしないでください
- AppArmor: コミットによるストレス-ng.kill.ops_per_sec の -42.5% の回帰
- クロックソース: 高い読み取り遅延が検出されたときにウォッチドッグを一時的に停止します
2023年:
- qemu-system-m68k オペコード 0x4848 でセグメンテーション違反が発生する
- rtmutex: 最上位のウェイターが常にウェイクアップされていることを確認します
- mm/swap: swapoff と get_swap_pages() の間の swap_info_struct の競合を修正
- block、bfq: ゼロ wsum でのゼロ除算エラーを修正
- 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 フォリオを処理するために filemap_map_order0_folio() を追加します
- mm: シュリンクラー: シュリンクラーを動的に割り当てるためのインフラストラクチャを追加します。
- mm: シュリンク: グローバル スラブのシュリンクをロックレスにします
- 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 のセグメンテーション違反
- QEMU KVM インスタンスで /dev/dri/card0 を開いたり閉じたりすると、システムがシャットダウンされます (6.10.0-rc6+)
- uprobes: rcu_read_lock() の下で mutex_lock() を防止します
- amd64 上の RT カーネルでシステムがロックアップする
- 警告: CPU: 17 PID: 118273 kernel/sched/deadline.c:794 setup_new_dl_entity+0x12c/0x1e8
- 6.8.1-1002-realtime カーネルの pick_next_task_fair でカーネルが問題を起こす
- 6.8.1-1002 リアルタイム カーネルの aafs_create でカーネル oops が発生する
- 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: timer_delete: 戻り値を修正
- cygwin: スレッド ID を受け入れるように pthread_sigqueue() を変更します
- セキュリティ/キー: key_task_permission のスラブ範囲外を修正
- sched_ext: scx_tasks_lock を長時間保持しないでください
- sched/uma: task_uma_work() での潜在的な null ポインター逆参照を修正しました。
- fsize ストレッサーを使用した Reiserfs パニック
Stress-NG を使用したカーネルの改善
2020年:
- selinux: ハッシュタブ関数のインライン化を完了する
- selinux: ロールの遷移をハッシュ テーブルに保存する
- sched/rt: グループ RT スケジューラー制約のチェックを最適化します。
- sched/fair: task_h_load() が 0 を返すケースを処理します。
- sched/deadline: エンキュー中に PI ブーストされたスレッドのスロットルを解除します
- mm: Madvise WILLNEED のパフォーマンスの問題を修正
- powerpc/dma: dma_map_ops::get_required_mask を修正
- tress-ng close によりカーネル oops (es) v5.6-rt および v5.4-rt が発生する
2021年:
- 元に戻す "mm、slub:acquire_slab() が失敗した場合は部分リストの残りを考慮する
- mm: メモリ: orig_pmd を struct vm_fault に追加します
- selftests/powerpc: 緩和パッチ適用のテストを追加
- dm crypt: crypt_page_alloc() での percpu_counter スピンロック競合を回避します。
- mm/maigrate: ホットプラグ時の降格順序の更新を最適化します。
- powerpc/rtas: rtas_busy_lay() の改善
2022年:
- sched/core: アイドルタスクを除くすべてのタスクの強制アイドル時間を計算します。
- ipc/mqueue: mqueue_get_tree() で get_tree_nodev() を使用します。
2023年:
- mm/swapfile: get_swap_pages() に cond_resched() を追加します。
- モジュール: メモリ負荷の特定に役立つデバッグ統計を追加します。
- module: モジュールがすでに存在し、準備ができている場合は割り当てを回避します
- sched: cfs 帯域幅タイマーをインターリーブして、低使用率時のシングル スレッドのパフォーマンスを向上させます。
- mm/khugepaged: 冗長な try_to_freeze() を削除します。
2024年:
- mm/vmalloc: ロック競合を 2 回から 1 回に排除しました。
- mm: mm->get_unmapped_area() をフラグに切り替えます
- mm: 常に _compound_head() を CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y でインライン化します
- mm: mm_update_owner_next() の冗長ループを最適化します。
プレゼンテーション
- ELCE 2019 リヨンでの Stress-ng プレゼンテーション
- 上記プレゼンテーションのビデオ
- Linux Foundation メンタリング セッション、2022 年 5 月
- カーネル レシピ プレゼンテーション、2023 年 9 月
- Linux Foundation、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 集中型のコンテナ化アプリケーションのパフォーマンス測定に関する研究
- Scavenger: クラウド環境での使用率を向上させるブラックボックス バッチ ワークロード リソース マネージャー
- マイクロベンチマークプロファイリングに基づいたクラウドアプリケーションのパフォーマンスの推定
- ツリーベースの教師なし学習手法を使用した NFV での異常検出
2020年:
- 異種マルチプロセッシング システム上の並列アプリケーションのパフォーマンスとエネルギーのトレードオフ
- C-Balancer: コンテナのプロファイリングとスケジューリングのためのシステム
- 半教師あり非負行列因数分解を使用した VM の潜在特性のモデリングとアプリケーション パフォーマンスの予測
- 半動的負荷分散: 非専用環境での効率的な分散学習
- ハードウェア支援セキュリティ技術のパフォーマンス分析
- ビッグデータ処理のためのグリーン クラウド ソフトウェア エンジニアリング
- パフォーマンス カウンター モニターを使用したキャッシュ サイド チャネル攻撃のリアルタイム検出
- Linux の完全性測定アーキテクチャを破壊する
- 標準 Linux カーネルでの高速割り込み要求を使用したリアルタイムのパフォーマンス評価
- HPC 研究用ポスト Moore プラットフォームの低エネルギー消費
- エッジクラウド環境での遅延の管理
- リアルタイム 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 プロセッサ アーキテクチャ上のリアルタイム Linux の評価
- Hertzbleed: パワー サイドチャネル攻撃を x86 でのリモート タイミング攻撃に変える
- メッシュを使用しないでください: メッシュ インターコネクトでのサイドチャネル攻撃と軽減策
- 専用セキュリティハードウェアを備えたマルチコア RISC-V システムのパフォーマンスへの影響
2023年:
- ハードウェアにはハードウェアで対抗する: パフォーマンス カウンターを使用したシステム全体のサイドチャネル攻撃の検出と軽減
- k4.0s の紹介: インダストリー 4.0 における混合重要度のコンテナ オーケストレーションのモデル
- データ処理装置によるシステム最適化に関する総合的研究
- マイクロベンチマークプロファイリングに基づいたクラウドアプリケーションのパフォーマンスの推定
- PSPRAY: タイミング サイドチャネル ベースの Linux カーネル ヒープ活用手法
- クラウド アプリケーション向けの堅牢かつ正確なパフォーマンス異常の検出と予測: 新しいアンサンブル学習ベースのフレームワーク
- Python ベースの組み込みリアルタイム制御システムの実現可能性調査
- 並列 SaaS を異種の共存クラウド リソースに適応させる
- 仮想化テクノロジーの分離機能を判断するための方法論とフレームワーク
- データ ステーション: データ エスクローを使用したデータ共有コンソーシアムを可能にする、委任された信頼できる監査可能な計算
- エッジコンピューティングアプリケーションにおけるリソースストレス障害に関する実証的研究
- ストレスとテスト スイートの並べ替えを使用して JavaScript アプリケーションで不安定なテストを見つける
- テレメトリの力: Apple M1/M2 システムに対するソフトウェアベースのサイドチャネル攻撃を明らかにする
- PREEMPT RT Linuxをベースとした組み込みマルチコア混合臨界システムの性能評価
- 分離された仮想化エンタープライズ コンピューティング システムにおけるデータ漏洩システム
- コンテナ化インフラストラクチャにおけるネットワーク パフォーマンスのベンチマークに関する考慮事項
- EnergAt: マルチテナンシー向けのきめ細かいエネルギー属性
- Linux アプリケーションのセキュリティ プロファイルの定量化
- Gotham Testbed: セキュリティ実験とデータセット生成のための再現可能な IoT テストベッド
- 信頼を伴うプロファイリング: 信頼された実行環境からのシステム監視
- 異種プロセッサによる単層並列化を使用した、熱を考慮したオンデバイス推論
- 高速で適応性のあるハードウェア支援のユーザー空間スケジューリングを目指して
- 半教師ありクロスモーダルアテンションによるソフトウェアシステムの異種異常検出
- グリーンコーディング: ソフトウェアサービスのエネルギー消費を利用するための経験的アプローチ
- カーネルレベルのイベントによる経験的ソフトウェアパフォーマンスエンジニアリング研究の強化: 包括的なシステムトレースアプローチ
- Cloud White: パブリック クラウドにおけるレイテンシー クリティカルなワークロードの QoS 低下の検出と推定
- クラウドネイティブの一括同期並列アプリケーションの動的リソース管理
- インプレース スケーリングによるサーバーレスの最適化に向けて
- 資源管理研究のための実験フレームワークを設計するためのモジュール式アプローチ
- キャッシュ サイド チャネルを介した対象を絞った匿名化解除: 攻撃と防御
- フルシステム RISC-V シミュレータの検証: 体系的なアプローチ
- eBPF/XDP でのパケットごとのサービス保護の軽量実装
- ROS2 リアルタイム パフォーマンスの最適化と評価
- 単相浸漬冷却データセンターの熱挙動の実験的および数値解析
2024年:
- IdleLeak: アイドル状態の副作用を利用した情報漏洩
- 信頼を伴うプロファイリング: 信頼された実行環境からのシステム監視
- データベース ワークロードに対する Cgroups ベースの QoS 分離の決定例
- BARO: 多変量ベイズオンライン変化点検出によるマイクロサービスの堅牢な根本原因分析
- クラウドネイティブ アプリケーションのワークロード変化によるパフォーマンスの異常を明確にする
- さらに一歩前進: Linux カーネル悪用におけるページ スプレーを理解する
- コンテナ化されたクラウドにおける電力消費の影響: オープンソースの電力測定ツールの包括的な分析
- 異種IoTベースのフェデレーションラーニングにおける熱ストレスの評価
- ミッションクリティカルな通話処理内の異常検出
- Raspberry Pi 5 上の Real-Time Linux のリアルタイム機能の予備評価
- 組み込み音楽アプリケーション向けのリアルタイム Linux ベース アーキテクチャの比較
- Nona: ニューラル ネットワークを使用した正確な電力予測モデル
私は、stress-ng を使用する研究やプロジェクトへの引用を、stress-ng プロジェクト ページに追加したいと考えています。また、stress-ng で見つかったカーネルのバグやパフォーマンスの低下に関する情報も感謝します。
貢献者
ストレス ng への次の貢献者に感謝します (アルファベット順)。
アブドゥル・ハリーム、アブルヴァ・デヴァラジャン、アドリアン・マーティン、エイドリアン・ラティウ、アレクサンダー・N・コスタディノフ、アレクサンダー・カナビン、アレクサンドル・アルデレーン、アルフォンソ・サンチェス=ベアト、アレン・H、アミット・シン・トマール、アンドレイ・ゲルマン、アンドレ・ワイルド、アニッセ・アスティエ、アントン・エリアソン、アルジャン・ファン・デヴェン、バルーク・シアッハ、ブライアン W.ルイス、カミーユ・コンスタンス、カルロス・サントス、クリスチャン・エールハルト、クリストファー・ブラウン、チュニュ・フー、ダニエル・アンドリース、ダニエル・ホッジス、ダニーロ・クルムリッチ、デヴィッドソン・フランシス、デヴィッド・ターナー、デニス・オブシエンコ、ドミニク・B・チャルノタ、ドリンダ・バッシー、エダー・ズーリアン、エリック・リン、エリック・スタールマン、エルワン・ヴェル、ファビアン・マルフォイ、ファブリスフォンテーヌ、フェルナンド・シーバー、フロリアン・ワイマー、フランシス・ラニエル、ギリェルメ・ヤンチャック、ホイ・ワン、シェツェン・シェン、イヤン・メンデス・ベイガ、イワン・シャポバロフ、ジェームズ・ハント、ヤン・リュッベ、ジャンシェン・リウ、ジミー・ホー、ジョン・カクール、ジュリー、ジュール・マセルバス、ジュリアンオリヴァン、ケニー・ゴング、ハリドエルムースリー、ケム・ラージ、ルカ・ピッツァミリオ、ルイス・チェンバレン、ルイス・エンリケス、ルーカス・ドゥルフィナ、マッテオ・イタリア、マシュー・ティペット、マウリシオ・ファリア・デ・オリベイラ、マキシム・シュヴァリエ、マックス・ケラーマン、マヤ・ラシシュ、マユレシュ・チタレ、メイサム・アザド、マイク・コレネフ、鎌田宗久、ミドシア、ニックハンリー、ニコラス・キクス、ポール・メンゼル、ピユシュ・ゴヤル、ラルフ・ラムザウアー、ローゼン・ペネフ、ルーリン・ファン、サーシャ・ハウアー、セルゲイ・マチュケビッチ、シディシュ・ポヤレカール、ショイリー・ラーマン、スティアン・オナルハイム、タデウ・リマ・デ・ソウザ・カスカルド、ティア・ウィロッド、ティン・トラン、ティム・ガードナー、ティム・ゲイツ、ティム・オーリング、トミ・ランタラ、ウィトルド・バリルク、リン・イーウェイ、ワン・ヨンシュアン、スン・ジーイー。