news 2026/9/18 4:38:29

Ubuntu stress 压力测试:CPU、内存与磁盘IO稳定性实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu stress 压力测试:CPU、内存与磁盘IO稳定性实战

1. 为什么在 Ubuntu 上要留一个 stress 在手边

装完 Ubuntu 之后,多数人第一件事是配源、装输入法、调字体、连 SSH,把开发环境捯饬得舒舒服服。但真到机器开始"不对劲"的时候——风扇狂转、编译卡死、SSH 连不上、docker 起不来——你会发现手里缺一个能把问题"复现出来"的东西。stress就是这样一个工具:它是一个命令行下的系统压力测试工具,能按你的要求往 CPU、内存、磁盘 IO 上施加可控的负载,用几十行参数就把一台 Ubuntu 推到它的极限边界。它不画图、不友好、参数还带点脾气,但在排查硬件稳定性、验证散热方案、测试虚拟化资源配额、给新到的服务器做老化验证这些场景里,它是我见过最省事的一把"锤子"。

这篇文章我想聊的是怎么把stress真正用起来,而不是照着手册念参数。包括它背后的工作原理、参数该怎么算、什么时候不能用、压完之后看什么指标、以及在 VMware、VirtualBox、WSL 这些"套娃"环境里跑会有什么不一样。开头面向的是会用 Linux 命令、但没系统做过压测的开发者;后面几节会给到更细的实操细节和踩坑记录,做运维或者搞硬件选型的朋友也能直接抄作业。

先说清楚一件事:压力测试(stress test)的价值不在于"把机器跑满",而在于"让问题暴露在有监控的环境里"。你手动打开一个yes > /dev/null也能把单核跑满,但你不知道它跑了几个核、跑了多久、用了多少内存、有没有触发 OOM。stress把这些变量变成参数,能重复、能记录、能对比,这才是它比"人肉烤机"值得用的地方。

注意:stress只能制造负载,不能给你答案。跑之前一定要想清楚"我要验证什么",否则跑完只有一堆烫手的 CPU 和风扇噪音。

2. 内容整体设计与思路拆解

2.1 压力测试到底在验证什么

很多人对压测有个误解,觉得就是"把机器搞到最热最卡"。实际上,一次有意义的压测至少要回答三类问题之一。第一类是稳定性问题:这台机器在持续满负载下会不会死机、重启、报 MCE 硬件错误、SSH 掉线。第二类是性能问题:满负载时 CPU 频率掉不掉、有没有降频、内存带宽够不够、磁盘 IO 会不会成为瓶颈。第三类是配置问题:cgroup 配额够不够、swap 策略合不合理、OOM Killer 会不会误杀你的关键进程。

这三类问题对应三种完全不同的压测策略。验证稳定性,你要的是长时间、多轮次、反复压,然后看日志里有没有异常。验证性能,你要的是固定负载下的指标采样,最好跑两轮取平均,还要跟空闲基线对比。验证配置,你要的是"故意把内存压超",看系统在极限状态下怎么反应,会不会杀错人。

stress 的定位很清楚:它负责制造前两类负载,第三类的 OOM 场景它也能压出来,但你要自己去看dmesg。它不像fio那样能测磁盘的 IOPS 和延迟分布,也不像sysbench那样有完整 benchmark 模型。它的优点恰恰是"简单到可以临时起意就用",缺点也在这里——它给出的数字不能当性能报告用。

2.2 stress 与 stress-ng,该选哪个

Ubuntu 官方源里有stress,也有stress-ng。我第一次用的时候也纠结过,后来发现这两个其实是"上一代"和"下一代"的关系。

对比项stressstress-ng
负载种类CPU、内存、IO、磁盘 四类300+ 种,含上下文切换、信号、socket、fork、mmap 等
负载精度粗,基本是"跑满"支持百分比、按核分配、方法论选择
指标输出--metrics输出 bogo ops、每秒操作数
依赖极轻,静态编译都行依赖略多,功能多
适用场景快速验证、临时烤机、脚本巡检精细基准、多维度压测

我个人的习惯是:临时验证用stress,因为它几乎零学习成本,敲一行就跑;要做成体系化的测试或者写进 CI,用stress-ng,因为它的--metrics--timeout配合起来能直接产出可对比的数据。Ubuntu 上两个都装着也不占什么空间,加起来不到几兆。

2.3 用之前先把基线数据摸清

这一步很多人跳过,然后就得到一堆没法解释的数字。压测前你要先记录四个基线值:空闲时 CPU 各核温度、空闲时 CPU 频率、可用内存和 swap 用量、磁盘顺序读写的大致水平。Ubuntu 下采集这些很快:

  • 温度:sensors(需要lm-sensors包)或者直接读/sys/class/thermal/thermal_zone0/temp,单位是千分之一摄氏度。
  • 频率:cat /proc/cpuinfo | grep MHz,或者cpupower frequency-info
  • 内存:free -h,注意看available而不是free
  • 磁盘:这个不用太精确,df -h看剩余空间,hdparm -tT /dev/sda粗测一下就够了。

没有基线,压测后的数字就是孤立的。比如你压完发现温度到了 78 度,这算高还是正常?如果你的空闲温度就是 55 度、散热就是普通风冷,那 78 度在长期高负载下其实很健康;但如果空闲才 35 度,压一下就冲到 90 度,那说明散热或者硅脂有问题。基线决定了你后面所有判断的参照系。

3. 核心细节解析与实操要点

3.1 安装:三种方式与选择理由

Ubuntu 上装stress最省事的方式是 apt:

sudo apt update sudo apt install -y stress

如果你用的是 Ubuntu Server 24.04 LTS 或者 22.04,这条命令装到的通常是 1.0.7 版本左右,功能已经够用。为什么优先推荐 apt 而不是源码?因为压测工具要长时间高频运行,二进制稳定性和依赖一致性比版本新鲜更重要。源码编译虽然能拿到更新的版本,但configure阶段缺依赖、make出来的二进制在特定 glibc 上出问题的情况我都遇到过,排查成本远超收益。

第二种方式是源码编译,适用于两种情况:目标机器不能联网,或者你需要一个能拷来拷去的静态二进制。stress的源码很小,./configure && make两步就能出二进制,-static链接的话可以直接扔到别的同架构机器上跑。

第三种方式是先确认你的 Ubuntu 跑在哪。如果是 WSL Ubuntu、VMware 虚拟机里的 Ubuntu、或者开发板挂载的 Ubuntu 环境,安装步骤一样,但压测结果的含义完全不同,这个我在第 5 节展开。

提示:stress的运行进程数受ulimit -u限制。默认一般够用,但如果你要把-c开到 32 以上,先ulimit -u看一眼,否则会 fork 失败报 "Resource temporarily unavailable"。

3.2 四类负载进程的参数全表

stress的参数设计很直白,-c-i-m-d分别对应 CPU、IO、内存、磁盘四类 worker,后面的数字是"起几个进程"。把这四类吃透,这个工具就基本会用了。

参数全称作用关键细节
-c N--cpu NN 个进程反复做sqrt()运算纯计算,不碰内存和磁盘
-i N--io NN 个进程反复调用sync()触发脏页回写,压的是文件系统层
-m N--vm NN 个进程反复 malloc/free 内存配合--vm-bytes控制每次分配量
-d N--hdd NN 个进程反复 write/unlink 文件配合--hdd-bytes控制文件大小
-t N--timeout NN 秒后自动退出强烈建议永远带上
--vm-bytes B每个 vm 进程每次分配的字节数默认 256M,可写 4G、80% 等
--vm-keep分配后不释放,一直占着用来制造持续内存压力
--vm-hang N分配后 sleep N 秒再释放控制内存驻留时间
--hdd-bytes B每个 hdd 进程写的文件大小默认 1G,写满磁盘的元凶
--backoff N每个 worker 启动前等 N 微秒避免瞬间爆发,让负载爬坡

这里有几个设计意图值得说。CPU worker 用的是sqrt()而不是死循环空转,早期版本因为编译器优化把计算结果丢掉、导致负载虚高,后来通过内联汇编和随机数参与运算来保证真实占用。-i用的是sync(),这一点很关键——它不是让你手动dd去写文件,而是触发内核把 Page Cache 里的脏页刷到磁盘,所以它压出来的是"文件系统回写路径"这个环节,跟我们平时说的"磁盘顺序读写"不是一回事。-d则是真刀真枪地创建文件、写入、删除,压的是目录项和 inode 的操作能力,小文件多的时候这个负载特别能暴露问题。

3.3 参数计算:进程数与字节数怎么定

这是最容易拍脑袋的地方。我给出我自己的算法,你可以直接用。

CPU 进程数:先看核数,nproc或者lscpu | grep "^CPU(s)"。压满就用核数,压 50% 就用核数的一半。注意stress的 CPU worker 是整核占用,没有"占 30%"这种细粒度控制。如果你想压 50% 又不想让进程数取整,可以用--backoff让一部分 worker 延迟启动,或者干脆用stress-ng --cpu 4 --cpu-load 60

内存字节数:先看free -havailable,然后乘以 0.7 作为安全线。为什么是 0.7?因为 Ubuntu 桌面版有一堆常驻服务,你不可能把全部内存交给压测。假设available是 8G,那么单个 vm worker 的--vm-bytes建议不超过8G / 进程数 * 0.7。如果你就是故意要压 OOM,那就把--vm-bytes设成available的 1.2 倍,同时另开一个终端盯dmesg

磁盘字节数--hdd-bytes默认 1G,-d 4的话同时会占用约 4G 临时空间。压之前df -h看一眼/tmp或者当前目录所在分区,留出至少两倍余量。我踩过一次坑:在剩余 3G 的虚拟机上跑-d 4,直接把根分区写满,系统起不来,最后进 recovery 删文件才救回来。

注意:--vm-bytes支持百分比写法,但百分比是相对物理内存总量而不是可用内存,比如--vm-bytes 80%在 8G 机器上是 6.4G,跟available没关系,别按错参照系。

理解了参数背后的这些细节,你就能明白为什么"照着别人命令抄"经常出问题——每个人的机器内存、核数、磁盘余量都不一样,参数必须按自己的环境算。

4. 实操过程与核心环节实现

4.1 CPU 压测:单核烤机到全核满载

先做最简单的,单核压 60 秒,同时开一个终端观察:

# 终端 A:施加负载 stress -c 1 -t 60 # 终端 B:观察频率和温度 watch -n 1 'grep "MHz" /proc/cpuinfo | head -1; sensors | grep Core'

-t 60让 stress 自己在 60 秒后退出,这样你不需要记着去 kill。观察时重点看三样:频率有没有掉、温度爬升曲线是否平缓、有没有核心温度明显高于其他核心。如果某个核心温度比别人高 10 度以上,多半是散热器接触不均或者导热硅脂涂得不匀,这在二手服务器上很常见。

全核压测就是把-c改成nproc

# 压满所有核心,持续 5 分钟 stress -c $(nproc) -t 300 --backoff 20000

--backoff 20000是让 worker 之间间隔 20 毫秒启动,避免同一瞬间所有核心同时冲上去造成电流尖峰。这个细节对笔记本和低端主板有意义——瞬间的电流冲击可能触发电源保护,表现为无故重启,你还会以为是系统 bug。加了 backoff 之后负载是"爬"上去的,稳定性问题更容易复现成"持续高温死机"而不是"启动即重启"。

全核压测时我一般另开一个终端跑mpstat -P ALL 2,看各核的%idle是不是都接近 0,以及%iowait有没有异常。如果压 CPU 的时候 iowait 很高,说明有别的进程在抢磁盘,这时候温度和频率的数据就不可靠了。

4.2 内存压测:为什么你的机器会突然卡死

内存压测是最容易出事故的一项。核心命令:

# 1 个 worker,每个周期分配 2G,分配后驻留 10 秒再释放 stress -m 1 --vm-bytes 2G --vm-hang 10 -t 120

--vm-hang 10的作用是让内存被分配后停留 10 秒再释放,而不是瞬间 malloc 再立刻 free。为什么要这样?因为如果不 hang,内存被快速申请又释放,Page Cache 和内存分配器能很快回收,实际对物理内存的压力是脉冲式的,测不出持续占用下的表现。加了 hang,内存才真正"占住",swap 交换和 OOM 才有机会触发。

如果你要验证系统在内存极限下的 OOM 行为,可以这样:

# 故意压超 30%,观察 OOM Killer 杀谁 stress -m 2 --vm-bytes 130% --vm-keep -t 180

--vm-keep让内存分配后一直保留,这样压力是持续累加的,很快就能把available吃光。这个场景下你要盯的是dmesg -T | grep -i "killed process"。我曾经用这招发现一台机器的 OOM Killer 优先杀掉了 docker 的 containerd 而不是压测进程,原因是 containerd 的 oom_score_adj 更"优先"被牺牲,这个问题直接导致容器服务在内存紧张时莫名退出。

内存压测期间用vmstat 2看两个值:si(swap in)和so(swap out)。如果 swap 分区在机械硬盘上,so一高,整个系统会卡到鼠标都动不了,这不是 Bug,是设计如此。所以内存压测建议在 swap 关闭或者 swap 在 SSD 的机器上做,否则体验极差,还会拖长测试时间。

4.3 磁盘 IO 与元数据压力

-i-d这两个参数名字容易混,我一开始也分不清。记住一点:-i压的是"回写",-d压的是"文件操作"。

# 压文件系统回写:4 个 worker 反复 sync stress -i 4 -t 120 # 压文件元数据:2 个 worker 各反复写 512M 文件并删除 stress -d 2 --hdd-bytes 512M -t 120

-i单独用的时候如果系统里没多少脏页,负载其实不大,通常要配合-d一起用,先制造脏页再触发回写,压力才真实。观察指标用iostat -x 2,重点看%utilawait%util接近 100 表示设备饱和,await突然飙升说明排队严重。机械盘在-d负载下await到几十毫秒很正常,NVMe 如果也这样,那就有问题了。

我用-d压测最喜欢看的是"小文件场景"。默认--hdd-bytes 1G写的是大文件,目录项操作少。如果你想模拟真实的应用场景,把字节数调小、进程数调大,比如-d 8 --hdd-bytes 4M,这时候 inode 创建删除的密度就上来了,ext4 的日志压力会明显增大。这一步能帮你判断是不是该换文件系统或者加noatime挂载选项。

提示:-d产生的临时文件默认写在当前工作目录。如果你在/根目录执行,它会往根分区写。养成习惯,压测前cd /tmp,或者把工作目录切到一块专门的临时盘上。

4.4 组合负载、超时控制与后台托管

真实业务不会只有一种负载,所以最后一定要练混合场景。比如模拟一台同时跑 Web 服务和后台任务的机器:

# 4 核 CPU + 2G 内存 + 4 个 IO worker,持续 10 分钟 stress -c 4 -m 1 --vm-bytes 2G -i 4 -t 600

但混合负载有个陷阱:CPU、内存、磁盘会互相干扰。CPU worker 本身不碰内存,但内存 worker 的 malloc/free 会占用内存带宽,反过来影响 CPU 的运算吞吐。所以混合压测更适合做"能不能扛住"的定性判断,不适合做"到底快了多少"的定量分析。

超时控制上,-t是最基本的。但压测有时需要跑几小时甚至一整天,这时候要用nohup加后台运行,同时记录日志:

nohup stress -c $(nproc) -t 86400 -v > /var/log/stress-cpu.log 2>&1 & echo $! > /tmp/stress.pid

-v打开 verbose,会把每个 worker 的创建和退出过程写进日志,出问题时能知道是哪个 worker 挂了。记下 PID 是为了方便中途需要时精确停止:kill $(cat /tmp/stress.pid)。注意stress会 fork 子进程,直接 kill 主进程有时会留下僵死的 worker,稳妥做法是pkill -f stress

后台跑一整天之前,我建议先做一次 1 分钟的短压,确认参数没问题、日志路径可写、磁盘不会被写满。这个习惯救过我一次——在容器里跑长时压测,忘了容器有 2G 内存限制,结果-m参数一上去就被 cgroup 限制干掉了,白等一小时。

5. 常见问题与排查技巧实录

5.1 报错与异常速查

现象可能原因处理方式
Resource temporarily unavailable达到ulimit -u进程数上限ulimit -u 65535或减少 worker 数
mmap failed/Out of memory--vm-bytes超过可用地址空间或 cgroup 限制调小字节数,检查free -h和 cgroup 配额
系统卡死、鼠标无响应内存压测触发 swap 大量换入换出关闭 swap 或调小--vm-bytes,加--vm-hang
压测中 SSH 断连网络栈被 IO 回写或内存压力挤占nice -n -5提权关键进程,减少并发 worker
磁盘写满,系统起不来-d--hdd-bytes估算不足进 recovery 删文件,之后压测前先df -h
CPU 频率上不去功耗墙、温度墙或电源策略限制检查cpupower frequency-info和散热
温度异常高但频率很低散热故障或硅脂老化清灰、换硅脂,别硬压

这张表里的每一条我都实际遇到过。最有意思的是"SSH 断连"这条。当时在一台 4 核小机器上跑-i 8,IO worker 数量远超核数,导致kswapd和回写线程把 CPU 全占了,sshd 拿不到调度时间片,连接就超时了。当时第一反应是网络故障,实际是压测把网络相关进程饿死了。解决办法很简单,-i的数量别超过核数,或者用nice把 sshd 优先级提上去。

5.2 结果怎么读:判断瓶颈在哪

压测跑完不是看个温度就完事,要会读指标。我一般按这个顺序看:

第一步看vmstat 2r列(运行队列长度)。如果-c $(nproc)r明显大于核数,说明有进程在排队等 CPU,可能是别的服务在抢,也可能是 CPU 真的不够。第二步看si/so,只要不为 0,说明内存已经紧张到开始换页,性能会被严重拖累。第三步看iostat%utilawait,判断磁盘是不是瓶颈。第四步回到top,看%wa(iowait)在总 CPU 时间里的占比。

一个典型的"CPU 压测但性能不达标"的现场是这样:%idle接近 0 看着是压满了,但%wa有 20% 以上,iostat显示磁盘%util90%+。这说明 CPU 有五分之一的"算力"实际是在等磁盘,你看到的满载是假的。这种情况下真正的性能瓶颈是磁盘,压 CPU 只是在放大这个瓶颈。

另外要养成看dmesg的习惯。压测前后各dmesg -T > dmesg.beforedmesg.after,然后 diff 一下。任何硬件层面的错误——内存 ECC 报错、PCIe 链路降速、thermal throttling 记录——都会在这里留下痕迹。这比看温度曲线更权威。我用这个方法在一台服务器上发现了间歇性的内存纠错错误,平时用完全无感,只有压测时才偶发出现,最后换了内存条才解决。

5.3 独家避坑:几条没人告诉你但很致命的细节

说几条看起来不起眼、但实际会毁掉整个测试的细节。

第一条,压测前关掉自动更新和后台索引。Ubuntu 的apt-dailyunattended-upgrades、tracker 索引这些东西会在你不注意的时候抢 CPU 和磁盘,导致你的压测数据出现莫名其妙的波动。跑长时压测前,systemctl stop apt-daily.timer这类操作值得做一遍。

第二条,笔记本压测请插电源。用电池时很多机器会主动限制功耗,你压出来的频率和温度数据完全不能代表真实性能。同样地,把电源策略切到 performance:sudo cpupower frequency-set -g performance,避免按需调频把负载曲线的形状改掉。

第三条,容器和 WSL 里压测,你的指标是"虚拟的"。WSL2 本质是跑在 Hyper-V 虚拟机里,CPU 是宿主机的份额,内存上限受.wslconfigmemory=参数限制,磁盘 IO 走的是虚拟化通道。在 WSL 里跑-c 8可能把宿主机 Windows 也拖卡,但你在 WSL 里看到的温度和频率都是读不到的。同理,VMware 或 VirtualBox 里的 Ubuntu,CPU 是宿主的 vCPU 时间片,/proc/cpuinfo里的 MHz 是虚拟值,不代表物理频率。这些环境下压测只能验证"配额够不够",验证不了硬件稳定性。

第四条,压测完记得等系统"凉下来"再测第二轮。连续两轮压测之间至少间隔 5 分钟,让温度和负载回到基线。我见过有人连压三轮,第三轮数据全崩,最后发现是热积累导致降频,跟机器性能没关系。

第五条,长期老化测试要用脚本轮转,不要一条命令跑到黑。写个循环,每轮 10 分钟压、2 分钟歇,记录每轮的最高温度、频率和是否有报错,跑 50 轮。这种"脉冲式"负载比持续满载更容易暴露接触不良、电源不稳这类间歇性问题。

6. 把 stress 用进日常:脚本化与工具搭配

6.1 一个能直接用的巡检脚本

临时敲命令只能解决眼前问题,真正省事的是把stress封装成脚本。下面这个脚本我用了很久,功能是:自动按核数和内存算出安全参数、跑到指定时长、期间采样温度和内存、结束后输出摘要。

#!/bin/bash # stress-check.sh —— 单次稳定性巡检 DURATION=${1:-300} CORES=$(nproc) AVAIL_MB=$(free -m | awk '/^Mem:/{print $7}') SAFE_MB=$(( AVAIL_MB * 70 / 100 )) echo "[*] 核数: $CORES, 可用内存: ${AVAIL_MB}MB, 压测时长: ${DURATION}s" echo "[*] 将施加 CPU 满载 + ${SAFE_MB}MB 内存压力" # 后台采样温度 ( for i in $(seq 1 "$DURATION"); do T=$(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null) [ -n "$T" ] && echo "$i $((T/1000))" >> /tmp/stress-temp.log sleep 1 done ) & SAMPLER=$! stress -c "$CORES" -m 1 --vm-bytes "${SAFE_MB}M" --vm-hang 5 -t "$DURATION" wait $SAMPLER MAX_T=$(awk 'BEGIN{m=0} {if($2>m)m=$2} END{print m}' /tmp/stress-temp.log) echo "[+] 压测结束,最高温度: ${MAX_T}C" dmesg -T | tail -50 | grep -iE "error|fail|killed" || echo "[+] dmesg 无异常"

这个脚本的关键设计在于:用available而不是free算内存、留 30% 余量、温度采样独立于压测进程、最后自动过滤dmesg。参数用${1:-300}给了默认值,直接bash stress-check.sh 600就能跑十分钟版本,不用每次改脚本。

6.2 和监控工具怎么搭

stress本身不采集数据,它的价值全靠配合的监控工具放大。Ubuntu 上装一套轻量的组合就够用:

  • sysstat提供sarmpstatiostatpidstat,能出历史曲线,压测前后对比特别方便。
  • htop看实时进程和负载最直观,比top好用,颜色区分也清楚。
  • lm-sensors管温度,sensors -j还能输出 JSON 方便脚本解析。
  • dstat(如果装得到)能在一屏里同时显示 CPU、磁盘、网络、内存,做整体观察很好用。

我的习惯是压测前先sar -o /tmp/before.sa 2 30采 60 秒基线,压测后再采一段,然后用sar -f读出来对比。sysstat默认会持续记录到/var/log/sysstat/,但采样间隔通常是 10 分钟,对压测来说太粗,所以一定要手动指定 2 秒间隔采。

如果机器上已经有 Prometheus 和 node_exporter,那更省事,压测时面板上的曲线会直接告诉你发生了什么。特别是node_cpu_seconds_totalnode_pressure_*(PSI 指标),后者在 Ubuntu 较新内核上能直接给出"有多少进程在等 CPU/IO/内存"的量化数据,比vmstatr列精确得多。

6.3 不同 Ubuntu 环境下的差异化处理

最后把环境差异说清楚,因为同样的命令在不同 Ubuntu 形态下结果差别很大。

物理机上的 Ubuntu 是唯一能做硬件验证的场景。温度、频率、ECC 报错、PCIe 状态这些都有意义。如果你要验证散热、选内存条、判断电源是否够用,只在物理机上压。

VMware/VirtualBox 虚拟机里的 Ubuntu,压测只能验证"分配给它的资源够不够"。因为 vCPU 是宿主的调度产物,内存是宿主的分配,IO 是虚拟磁盘。这种环境下适合做容量规划——比如你给一个 Web 服务分 2 核 4G,想知道并发上来够不够用,在虚拟机里压一下是有参考价值的。但别指望能测出"物理机稳定性"。

WSL Ubuntu 里的压测意义又不同。WSL2 共享宿主内存,.wslconfig可以限制内存和 CPU 核数。这里的压测主要用来验证你的开发环境资源配额。要注意 WSL 里nproc返回的是分配给 WSL 的核数,不是物理核数,-c $(nproc)会把 WSL 的资源占满,宿主 Windows 可能会卡,但不会崩。

开发板上挂载的 Ubuntu 或者嵌入式环境,压测要格外小心散热和供电。很多开发板没有主动散热,-c 4跑两分钟就降频甚至重启了,这属于正常的保护行为。

我个人在实际操作中的体会是:stress这类工具的价值,一半在参数,一半在"跑之前想清楚要验证什么"。同样一条命令,想清楚目的的人能拿到结论,没想清楚的人只能收获一个烫手的机箱。真正拉开差距的不是你会不会敲-c $(nproc),而是压完以后你会不会去看dmesg、会不会对比基线、会不会把两轮之间的散热间隔算进去。这些小动作看起来麻烦,但每一条都对应着一次实际踩过的坑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 4:37:16

Win10多用户同时远程登录配置全攻略:RDP Wrapper+组策略实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 4:34:30

十分钟部署 wewe-rss:微信公众号转 RSS 订阅完整指南

十分钟部署 wewe-rss:微信公众号转 RSS 订阅完整指南 【免费下载链接】wewe-rss 🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书) 项目地址: https://gitcode.com/GitHub_Trending/w…

作者头像 李华
网站建设 2026/9/18 4:34:17

接口测试用例设计实战:从参数校验到安全测试的完整指南

干接口测试这些年,我最大的体会是:很多人把接口测试做成了“用工具发个请求、看一眼状态码、然后完事大吉”,但真正的接口测试功底,全在用例设计上。你能不能用一套系统的方法把接口的方方面面覆盖住,决定了你这套测试…

作者头像 李华
网站建设 2026/9/18 4:34:00

DataHub 集成 Microsoft Entra ID(Azure AD)身份元数据摄取指南

DataHub 集成 Microsoft Entra ID(Azure AD)身份元数据摄取指南 【免费下载链接】datahub The Context Platform for your Data and AI Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub Microsoft Entra ID(原 Azure…

作者头像 李华
网站建设 2026/9/18 4:33:50

AKO4PTO:CANN PTO 算子 Agentic 调优工作区与迭代方法论全指南

AKO4PTO:CANN PTO 算子 Agentic 调优工作区与迭代方法论全指南 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-pe…

作者头像 李华
网站建设 2026/9/18 4:32:18

深入QEMU QOM对象模型:设备模拟与属性系统的核心机制

在QEMU里写设备模拟或者改machine代码时,逃不开的一个基础概念就是QOM(QEMU Object Model)。最开始接触这玩意儿,我一度以为它就是一套类似GLib GObject的面向对象封装,觉得能看懂object_new就行。但实际深入进去&…

作者头像 李华