【VPS 硬件选型指南 (CPU 篇) 01】突发 CPU 与限速:为什么你的 VPS 半夜快、白天卡?

半夜跑得快、白天卡成狗?本文讲清突发积分、cgroups 限频与 steal time 三大限速真凶,并给出可复制的排查命令与 RackNerd / Contabo / ColoCrossing 选购建议。

你有没有过这种体验:刚买的一台便宜 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(RackNerdContaboColoCrossing 这类)几乎都是这种。

下面这张表把三种模型的关键差异摆在一起,选购时一眼就能看出套餐"虚"在哪:

分配模型典型基线steal 表现适合场景代表商家
独享 vCPU100% 满速长期 <1%生产环境、数据库Hetzner、Linode 高阶
突发型10%–25%积分耗尽后阶梯式上升流量波动大的站点AWS T、Azure B
共享型看邻居脸色随机 5%–30%轻量应用、网络通道、测试RackNerdContaboColoCrossing

二、突发积分(CPU Credits):前半小时猛如虎,后面软脚虾

突发积分机制最早由 AWS 的 T 系列带火。它的规则很机械:1 个积分等于"1 个 vCPU 以 100% 跑满 1 分钟"。实例空闲时攒分,忙碌时花分,分用光就被钳到基线频率。以 t3.medium 为例,它每 vCPU 基线 20%,每小时攒 24 分,一共 2 个 vCPU,所以可持续算力其实是 2 × 20% = 40%。只要你长期超过这个数,积分余额一定会归零。

实例vCPU 数每核基线每小时攒分
t3.nano25%6
t3.micro210%12
t3.small220%24
t3.medium220%24
t3.large230%36

最容易被误判的现象是:你压测前十分钟成绩漂亮,之后性能像被台阶一样"咔"地掉下去再也回不来,负载没变,响应时间却翻倍。这不是机器坏了,是突发额度被你跑光了。在 AWS 上你能用 CloudWatch 直接看 CPUCreditBalance 曲线,余额归零的那一刻就是性能断崖的起点;但在 RackNerdContabo 这类没有"积分"概念的共享 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 700000000

nr_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起步价
RackNerdKVM共享 / 超售约 23109.4%$21.99/年(1C1G/20G/3T)
ContaboKVM共享 / 老 EPYC约 26408.7%$6.99/月(8G/4C/200G)
ColoCrossingKVM共享 / 自营机房中规中矩中等$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 你是在买内存和硬盘,不是在买 CPUColoCrossing 是 2003 年成立的美国老牌 IDC,2023 年被 HostPapa 收购,自营 10+ 机房,VPS 年付 $10.99 起,性能中庸但胜在线路和机房选择多。

六、选购与避坑:怎么不买到"白天卡"的机器

  1. 先想清负载画像:持续高 CPU(编译、数据库、转码)别碰共享型;流量波动大的站点才适合突发机型。
  2. 看 CV 比看峰值更重要:峰值跑分高但波动大(CV >8%)的机器,实际体验就是"时快时慢",不如峰值低但稳的。
  3. 避开老 EPYC / 老 Xeon E5:单核弱,建站吃的是单核,内存大没用。
  4. 买前用 YABS 跑一脚:Yet Another Bench Script 会同时出 Geekbench、fio、iperf,30 秒看清真实成色。
  5. 选有支付宝/PayPal 的老牌厂RackNerdColoCrossing 都支持,跑路风险低,续费价透明(RackNerd 有价保)。
  6. 真要稳就上独享 vCPU:预算够直接 HetznerVultr 这类明说 dedicated vCPU 的,省去所有猜测。

最后给一句实在话:便宜 VPS 的"被限速"大多不是商家使坏,而是共享机型的物理宿命。你能做的,是用上面这些命令把它量化出来,判断这台机器到底适不适合你的活儿,而不是半夜被延迟惊醒时还在猜。

💡 延伸阅读:关于架构与基础设施的更多深潜指南,请前往 VPS 主题导读中心 (Hub) 获取全盘策略。