最近我已升级到glibc 2.27,它显然支持新的CPU扩展,例如AVX2和AVX512。字符串函数(memcpy,memcmp等)现在正在使用这些指令。不幸的是,AVX2和更高版本导致Intel CPU减少时钟,这基于我正在研究的应用程序的基准,导致性能下降。是否有任何可以切换到glibc的编译开关,我可以在其中永久禁用选定的CPU功能,因此只能像普通的AVX或SSE4.2一样使用它?
由于您指出的原因,当前glibc中的字符串函数应仅使用便宜的AVX指令,这些指令不需要Turbo许可证。如果您知道还有任何有问题的说明,请please file a bug。
根据一个旧的错误,需要注意的perf
事件是:
cpu/event=0x28,umask=0x18,name=core_power_lvl1_turbo_license/
cpu/event=0x28,umask=0x20,name=core_power_lvl2_turbo_license/
cpu/event=0x28,umask=0x40,name=core_power_throttle/
希望您可以使用它们来确定各个说明。