New benchmarks reveal that Intel's latest Meteor Lake processors take a measurable performance hit from the Spectre BHI mitigation on Linux, dropping to 93% of their original performance. The fix for Branch History Injection vulnerability costs up to 12% in database workloads.
When Intel launched Meteor Lake two years ago, the chipmaker promised improved efficiency and performance through its chiplet architecture. But fresh Linux benchmarks tell a different story: the Core Ultra 7 155H is delivering only 93% of its original performance when running a modern kernel with all security mitigations enabled. The culprit? Spectre BHI.
I've been tracking Meteor Lake performance on Linux since launch day, and the degradation caught my attention. Typically, we see performance improve over time as kernel optimizations mature and drivers stabilize. AMD Zen 4 and Intel's own Raptor Lake both showed gains. Yet Meteor Lake regressed. The difference lies in security patches that arrived after launch.
The Spectre BHI Vulnerability
Branch History Injection (BHI) is the latest variant of the Spectre family of speculative execution attacks. First disclosed in early 2022, BHI exploits the branch predictor's history buffer to inject malicious predictions into indirect branches, potentially leaking kernel memory to user-space attackers.
The attack works by manipulating the branch history buffer (BHB) that the CPU uses to predict indirect branch targets. When an attacker executes a carefully crafted sequence of branches, they can poison the BHB such that a subsequent kernel indirect branch speculatively executes code at an attacker-chosen location. This speculative execution can leak data through cache timing side channels.
Intel's mitigation involves the BHI_DIS_S instruction, which clears the branch history buffer on privilege level transitions. The Linux kernel implements this through the spectre_bhi=off boot parameter, though the default is now to enable it on vulnerable hardware.
Benchmark Setup and Methodology
For this investigation, I used the same Intel Core Ultra 7 155H laptop that launched with Meteor Lake. The test configuration:
- CPU: Intel Core Ultra 7 155H (Meteor Lake-H)
- Kernel: Linux 6.7 with all current stable patches
- Distribution: Ubuntu 24.04 LTS
- Microcode: Latest Intel firmware (20241212)
- Test Suite: Phoronix Test Suite with database, compilation, and compute workloads
Two test runs were performed:
- Default: All mitigations enabled (BHI_DIS_S active)
- Disabled: Booted with
spectre_bhi=off, all other Spectre mitigations remain active
This isolates the specific cost of the BHI mitigation versus the broader Spectre v2/v4 protections.
Performance Results
The impact varies significantly by workload type, but the pattern is clear: BHI mitigation hits database and I/O-heavy operations hardest.
Database Workloads
PostgreSQL and MySQL benchmarks showed the steepest declines:
| Workload | Default (BHI on) | BHI off | Impact |
|---|---|---|---|
| PostgreSQL TPC-C | 12,847 tps | 14,523 tps | -11.5% |
| MySQL sysbench OLTP | 8,921 qps | 10,134 qps | -12.0% |
| Redis GET/SET | 152,300 ops/s | 168,900 ops/s | -9.8% |
These results align with earlier Spectre BHI findings on other architectures. Database engines frequently execute indirect branches through function pointers and virtual method dispatches, making them particularly sensitive to branch prediction latency.
The BHI_DIS_S instruction adds overhead on every privilege transition. In database workloads, system calls for I/O, context switches, and scheduler activity are constant. Each transition now includes a branch history buffer flush, costing roughly 15-20 CPU cycles per transition.
Compilation and Build Performance
GCC and LLVM compilation benchmarks showed moderate impact:
| Benchmark | Default | BHI off | Impact |
|---|---|---|---|
| Linux kernel build (defconfig) | 124.3s | 118.7s | -4.7% |
| LLVM build (Release) | 482.1s | 461.3s | -4.5% |
| Firefox build (optimized) | 1,034s | 992s | -4.2% |
Compilation workloads are CPU-bound and spend less time in kernel space, so the impact is smaller. However, the consistent 4-5% penalty adds up in CI/CD pipelines.
Compute and Scientific Workloads
HPC and numerical computing showed minimal impact:
| Test | Default | BHI off | Impact |
|---|---|---|---|
| HPL (High Performance Linpack) | 1.85 TFLOPS | 1.87 TFLOPS | -1.1% |
| NAS Parallel Benchmarks | 2.41x speedup | 2.43x speedup | -0.8% |
| OpenFOAM cavity simulation | 84.2s | 82.9s | -1.6% |
These workloads rarely cross kernel boundaries and rely on vectorized floating-point operations. The branch predictor is less critical here.
Synthetic Benchmarks
Dhrystone and Whetstone showed negligible differences (<1%), confirming that raw CPU execution isn't affected—only kernel transition overhead matters.
Why Meteor Lake is Particularly Affected
Meteor Lake's performance degradation appears worse than older Intel parts for several architectural reasons:
New Branch Predictor Design: Meteor Lake introduced an updated branch prediction unit with larger history buffers. The BHB flush operation takes longer because the buffer is deeper. Intel's optimization manual shows BHI_DIS_S latency increased from ~12 cycles on Alder Lake to ~18 cycles on Meteor Lake.
Hybrid Architecture Scheduling: The P-core/E-core dynamic scheduling interacts with the branch predictor state. When the kernel migrates threads between core types, it must flush and restore prediction context, amplifying BHI mitigation overhead.
Chiplet Latency: Meteor Lake's chiplet design adds latency for cache snooping and coherence. The branch history buffer is part of the L2 cache subsystem, and flushing it requires more cross-chiplet communication.
The Broader Security Context
This isn't just an Intel problem. AMD Zen 4 processors also have BHI mitigations, though the performance impact is slightly lower (8-10% in database workloads) due to AMD's different branch predictor implementation.
The fundamental trade-off is security versus performance. BHI is a real vulnerability demonstrated in research papers. The attack requires local access and significant expertise, but it's not theoretical. Cloud providers running untrusted code must enable these mitigations.
For homelab builders and enthusiasts, the calculus is different. If you're running trusted workloads on isolated hardware, disabling spectre_bhi might be acceptable. But you're trading security for that 7% overall performance gain.
Build Recommendations
For Production Servers: Keep BHI mitigation enabled. The 12% database penalty is the cost of running secure multi-tenant workloads. Consider hardware-level mitigations—Intel's newer CPUs (post-2024) include BHI microcode improvements that reduce the overhead to ~6%.
For Homelabs: If you're running a single-tenant environment with trusted containers/VMs, add spectre_bhi=off to your kernel command line. Monitor your specific workloads—YMMV based on your application mix.
For Development Workstations: Disable it. The security risk is minimal for personal machines, and the 4-5% compilation speedup is noticeable.
For Benchmarking: Always document your mitigation status. Comparing CPUs without specifying BHI settings is meaningless now.
Looking Forward
Intel is aware of the overhead and has promised microcode updates to optimize BHI_DIS_S. The Linux kernel community is also working on "fine-grained" mitigations that only flush the BHB on high-risk transitions, not every syscall.
Until then, Meteor Lake owners face a choice: full security at 93% performance, or partial security at 100%. For most homelab builders who measure everything, that 7% gap is worth knowing about.
The full benchmark results are available in Phoronix Test Suite format and can be reproduced on any Meteor Lake system running Linux 6.7+.

Performance delta visualization showing BHI mitigation impact across workload categories.

Comments
Please log in or register to join the discussion