幽灵缓解谋杀用户空间表现

2021-06-19 20:26:54

我刚刚对(单线程)RR Sources命令进行了绩效改进,以缓存访问系统调用检查目录存在的访问结果。它'在我的skylake上进行了一个简单而非常有效的优化,Linux 5.12笔记本电脑:之前:[roc @ localhost代码] $ time $ rs rs〜/ pernosco / main / test-tmp / basics-demo>& 〜/ TMP / OUTPUT2REAL 3M19.648SUSER 1M9.157SSS 2M9.416SAFT:[ROC @ localhost代码] $ TIME RR消息源〜/ pernosco / main / test-tmp / basics-demo>& 〜/ tmp / output2real 0m36.160suser 0m36.009ssys 0m0.053s

一个有趣的是,即使我们'重新执行比以前更高的用户空间指令,我们将削减用户空间执行时间。频繁的系统调用实际上减慢了Userspace中的代码执行。我认为这至少部分是由于幽灵缓解,所以我把那些关掉了(带有缓解=关闭)并重新开始测试:之前:[Roc @ localhost代码] $ time $源〜/ pernosco / main / test-tmp / basics -demo>& 〜/ TMP / OUTPUT2REAL 2M5.776SUSER 0M33.052SSYS 1M32.280SSY:[ROC @ localhost代码] $ TIME RR消息源〜/ Pernosco / Main / Test-TMP / Basics-Demo≫& 〜/ tmp / output2real 0m33.422suser 0m32.934ssys 0m0.110s

因此,这些幽灵缓解使预优化用户佩运空间运行2倍较慢(由于缓存和TLB刷新我猜测)和整个工作负载总体上1.6倍较慢!在幽灵缓解之前,这些系统呼叫几乎无法减慢用户空间执行。