One of the new features introduced with Linux 6.2 is Call Depth Tracking and it can help extend the useful service life of Intel Skylake through Coffeelake era processors in providing better performance than is otherwise found out-of-the-box on Linux.
As explained in prior articles, Call Depth Tracking allows helping to lessen the mitigation performance impact of Retbleed. As a result of the Retbleed vulnerability, Indirect Branch Restricted Speculation (IBRS) became a necessity for Skylake era PCs and that comes with a heavy performance penalty for those Intel processors prior to the company having introduced eIBRS in newer processor series. The past several months saw Intel engineers working on Retbleed as a lower-cost mitigation technique for Retbleed and indeed it does help recover otherwise lost performance on the latest kernel.
Last month I carried out some Linux 6.2 Call Depth Tracking benchmarks using an Intel Xeon E3 v5 Skylake server given the commonality of them while in today’s article is focused more on Linux desktop benchmarks and using an Intel Core i7 8700K «Coffeelake» processor that by default uses IBRS.
Call Depth Tracking was merged for Linux 6.2 and needs the «CALL_DEPTH_TRACKING» Kconfig build option enabled. Additionally, it’s not used by default unless the «retbleed=stuff» option is passed to the kernel when booting the system.
Today’s article is looking at the Intel Core i7 8700K performance as its «default» / out-of-the-box state on Linux 6.2 Git followed by a run when using the same hardware/software but booting with the «retbleed=stuff» option for engaging the Call Depth Tracking. Lastly is a run with «mitigations=off» for looking at the Core i7 8700K Coffeelake performance with all of the CPU security mitigations disabled for seeing the overall performance cost to the security mitigations of recent years.
If your lscpu output currently shows IBRS as the Retbleed mitigation, your system can benefit from retbleed=stuff.