【VPS 硬件选型指南 (CPU 篇) 01】突发 CPU 与限速:为什么你的 VPS 半夜快、白天卡?
2026-08-15 · DevCraft Studio
半夜跑得快、白天卡成狗?本文讲清突发积分、cgroups 限频与 steal time 三大限速真凶,并给出可复制的排查命令与 RackNerd / Contabo / ColoCrossing 选购建议。
专题连载:VPS 硬件选型指南 (CPU 篇)
本文是该系列第 1 篇。阅读该系列其他文章:
- 【VPS 硬件选型指南 (CPU 篇) 01】突发 CPU 与限速:为什么你的 VPS 半夜快、白天卡?
- 【VPS 硬件选型指南 (CPU 篇) 02】AMD EPYC vs Intel Xeon 云 VPS 横评:2026 年 Genoa/Bergamo 与 Sapphire/Emerald Rapids 实测对比与选购指南
- 【VPS 硬件选型指南 (CPU 篇) 03】VPS 性价比怎么算?2026 年每美元能买多少内存/核/流量(含真实机型对比表)
- 【VPS 硬件选型指南 (CPU 篇) 04】AMD EPYC 还是 Intel Xeon?2026 VPS 选 CPU 架构避坑指南
- 【VPS 硬件选型指南 (CPU 篇) 05】Contabo VPS 评测 2026:大内存怪兽与 CPU 超售真相,适合谁不适合谁
- 【VPS 硬件选型指南 (CPU 篇) 06】Ryzen 9 vs EPYC vs Xeon:VPS CPU 怎么选,单核与多核 2026 机型盘点
- 【VPS 硬件选型指南 (CPU 篇) 07】VPS 为什么卡:vCPU 超售与 steal time 揭秘,独享 CPU vs 共享 CPU
你有没有过这种体验:刚买的一台便宜 VPS,半夜跑脚本、编译、压测的时候快得飞起,可一到白天高峰,网站响应就明显变慢,top 里的 CPU 明明没跑满,延迟却一路飙升?这不是你的错觉,也不是网络问题,十有八九是 CPU 被"限频"了。这种"半夜快、白天卡"的现象,背后藏着虚拟化三层完全不同的限速机制:邻居抢资源、突发积分耗尽、以及最隐蔽的 cgroup CFS 配额节流。本文用真实命令和可复制的排查脚本,带你把这层窗户纸捅破。
延伸阅读
更多相关攻略推荐:2026 决策指南:本地模型 vs 云 API 成本对比——你的 V、【AI自托管 01】2026 隐私优先 AI 栈:数据不出 VPS 、【知识库自托管 02】2026 实测:VPS 自托管 Anythin、【知识库自托管 03】2026 实测:搬瓦工/RackNerd 上自、别被多核骗了!为什么买 VPS 必须看单核(Single-Core)。
一、先搞清楚:你买到的到底是哪一种 "CPU"
很多新手以为"1 核 / 2 核"指的就是物理核心,其实在便宜 VPS 上,vCPU 的分配方式分三种,体验天差地别:
- 独享 vCPU(Pinning):你的虚拟核被钉死在某一颗物理核上,别人抢不走。性能稳定可预测,但价格高,一般出现在 Hetzner、Linode 高配套餐。
- 突发型 vCPU(Credit 模型):平时空闲攒"积分",需要时爆发,积分用完回到基线(通常只有满核的 10%–25%)。代表是 AWS T 系列、Azure B 系列。
- 共享 vCPU(公平调度 / 超售):宿主机用加权公平队列把物理核分给一堆邻居,谁闲你就能借,邻居一忙你就被挤。便宜 VPS(RackNerd、Contabo、ColoCrossing 这类)几乎都是这种。
下面这张表把三种模型的关键差异摆在一起,选购时一眼就能看出套餐"虚"在哪:
| 分配模型 | 典型基线 | steal 表现 | 适合场景 | 代表商家 |
|---|---|---|---|---|
| 独享 vCPU | 100% 满速 | 长期 <1% | 生产环境、数据库 | Hetzner、Linode 高阶 |
| 突发型 | 10%–25% | 积分耗尽后阶梯式上升 | 流量波动大的站点 | AWS T、Azure B |
| 共享型 | 看邻居脸色 | 随机 5%–30% | 轻量应用、网络通道、测试 | RackNerd、Contabo、ColoCrossing |
二、突发积分(CPU Credits):前半小时猛如虎,后面软脚虾
突发积分机制最早由 AWS 的 T 系列带火。它的规则很机械:1 个积分等于"1 个 vCPU 以 100% 跑满 1 分钟"。实例空闲时攒分,忙碌时花分,分用光就被钳到基线频率。以 t3.medium 为例,它每 vCPU 基线 20%,每小时攒 24 分,一共 2 个 vCPU,所以可持续算力其实是 2 × 20% = 40%。只要你长期超过这个数,积分余额一定会归零。
| 实例 | vCPU 数 | 每核基线 | 每小时攒分 |
|---|---|---|---|
| t3.nano | 2 | 5% | 6 |
| t3.micro | 2 | 10% | 12 |
| t3.small | 2 | 20% | 24 |
| t3.medium | 2 | 20% | 24 |
| t3.large | 2 | 30% | 36 |
最容易被误判的现象是:你压测前十分钟成绩漂亮,之后性能像被台阶一样"咔"地掉下去再也回不来,负载没变,响应时间却翻倍。这不是机器坏了,是突发额度被你跑光了。在 AWS 上你能用 CloudWatch 直接看 CPUCreditBalance 曲线,余额归零的那一刻就是性能断崖的起点;但在 RackNerd、Contabo 这类没有"积分"概念的共享 VPS 上,现象类似但根因不同——后面会讲。
三、被掐频率的三大真凶:邻居、积分、CFS 配额
1. 邻居抢资源(steal time 随机高)
虚拟化里有个关键指标叫 steal time(top 里的 %st)。它表示:你的 vCPU 本来想跑,但宿主机把时间片拿去喂别的 VM 了。如果 %st 是一阵一阵、随机波动,那基本是邻居在跟你抢核,跟你的程序无关。一般 %st 长期超过 5% 就说明这台宿主机超售比较严重。
2. 积分耗尽(steal 阶梯式爬升)
在突发型实例上,一旦积分归零,hypervisor 会把你钳到基线,guest 内部感知到的就是 steal 升高。但区别很明显:邻居导致的 steal 是随机起伏的;积分导致的 steal 是从某个时刻起像爬楼梯一样一路涨上去并焊死不动。看到这种"台阶状"曲线,问题在你自己的预算,不是邻居。
3. cgroup CFS 配额节流(最隐蔽,毫无痕迹)
这是本文最想提醒你的一点。前两种好歹在 top 里留了个 %st 的痕迹,而 CFS 配额节流(常见于容器、cgroup v2)连这点痕迹都不留。原理是:内核每个周期(默认 100ms)发一份固定配额给某个 cgroup,组里的任务一旦把配额烧完,整个组就被踢出运行队列,直到下个周期才开始。假设你给某容器限了 1 核、里面却开了 8 个线程,8 个线程 12.5ms 就把 100ms 配额烧光,剩下 87.5ms 整个容器完全停摆。请求要是正好落在这 87.5ms 的空窗里,就凭空多了近 90ms 延迟。
更坑的是,这时候你看平均 CPU 利用率根本不像"跑满 1 核",而像是只有 12.5% 左右;load average 也安安静静,只有 p99 延迟在规律地尖刺。判断它只需看一个文件:
cat /sys/fs/cgroup/cpu.stat
# nr_periods 100000
# nr_throttled 8000
# throttled_usec 700000000nr_throttled 占 nr_periods 的比例越高,说明被掐得越狠。
四、实操:三分钟查出你的 VPS 是不是被限速
下面这套排查顺序,能在一分钟内区分上面三种情况,建议直接存成脚本。
# 1) 看 steal time(5 秒平均),需要先装 sysstat
mpstat -P ALL 1 5
# 重点盯 %st 一列:持续 >5% 多半是邻居抢资源或超售
# 2) 从 /proc/stat 直接读 steal(第 8 列)
awk '/^cpu / {print "总 steal:", $8}' /proc/stat
# 3) 看是不是被 CFS 配额掐了(cgroup v2)
cat /sys/fs/cgroup/cpu.stat 2>/dev/null
cat /sys/fs/cgroup/cpu.max 2>/dev/null # 形如 "100000 100000" 表示每周期给 1 核
# 4) 看真实频率(/proc/cpuinfo 在空闲时只显示 800MHz,是 5.11+ 内核的省电优化,别被吓到)
cpupower frequency-info | grep "current CPU frequency"
sudo turbostat --quiet --show Bzy_MHz,TSC_MHz 1 5
# Bzy_MHz 明显低于标称频率且压测时上不去 = 被限频
# 5) 压测对比:单核爆发力 vs 持续力
sysbench cpu --cpu-max-prime=20000 --threads=1 run
sysbench cpu --cpu-max-prime=20000 --threads=1 --time=600 run # 跑 10 分钟看会不会掉速一个关键坑:新版内核里 /proc/cpuinfo 的 "cpu MHz" 在空闲时经常显示 800MHz,这是内核 5.11 之后的节能优化,不代表被限速。真正要看的是用 turbostat 或 cpupower 测到的 Bzy_MHz——如果你压满负载时 Bzy_MHz 还是上不去、卡在基线附近,那才是被掐了频率。
五、RackNerd / Contabo / ColoCrossing 实测表现
把三家白名单里常见的便宜商家放一起比(数据来自 2026 年社区基准测试,值越高越好):
| 商家 | 虚拟化 | vCPU 类型 | 单核 p99 跑分 | 波动 CV | 起步价 |
|---|---|---|---|---|---|
| RackNerd | KVM | 共享 / 超售 | 约 2310 | 9.4% | $21.99/年(1C1G/20G/3T) |
| Contabo | KVM | 共享 / 老 EPYC | 约 2640 | 8.7% | $6.99/月(8G/4C/200G) |
| ColoCrossing | KVM | 共享 / 自营机房 | 中规中矩 | 中等 | $10.99/年(1G/30G/40T) |
几个值得记住的点:RackNerd 是纯 KVM + 共享 vCPU,单核还行但波动偏大(CV 9.4%),适合 VPN、监控、静态站这类轻负载;它的洛杉矶 DC03 实际托管在 ColoCrossing 洛杉矶机房。Contabo 纸面规格炸裂(8G 内存、4 核、200G 只要 $6.99/月),但 CPU 是上一代 AMD EPYC,单核跑分甚至不如价格只有它一半的商家,CV 也偏高——买 Contabo 你是在买内存和硬盘,不是在买 CPU。ColoCrossing 是 2003 年成立的美国老牌 IDC,2023 年被 HostPapa 收购,自营 10+ 机房,VPS 年付 $10.99 起,性能中庸但胜在线路和机房选择多。
六、选购与避坑:怎么不买到"白天卡"的机器
- 先想清负载画像:持续高 CPU(编译、数据库、转码)别碰共享型;流量波动大的站点才适合突发机型。
- 看 CV 比看峰值更重要:峰值跑分高但波动大(CV >8%)的机器,实际体验就是"时快时慢",不如峰值低但稳的。
- 避开老 EPYC / 老 Xeon E5:单核弱,建站吃的是单核,内存大没用。
- 买前用 YABS 跑一脚:Yet Another Bench Script 会同时出 Geekbench、fio、iperf,30 秒看清真实成色。
- 选有支付宝/PayPal 的老牌厂:RackNerd、ColoCrossing 都支持,跑路风险低,续费价透明(RackNerd 有价保)。
- 真要稳就上独享 vCPU:预算够直接 Hetzner、Vultr 这类明说 dedicated vCPU 的,省去所有猜测。
最后给一句实在话:便宜 VPS 的"被限速"大多不是商家使坏,而是共享机型的物理宿命。你能做的,是用上面这些命令把它量化出来,判断这台机器到底适不适合你的活儿,而不是半夜被延迟惊醒时还在猜。
💡 延伸阅读:关于架构与基础设施的更多深潜指南,请前往 VPS 主题导读中心 (Hub) 获取全盘策略。