Hasty Briefsbeta

双语

Clang/LLVM static analyzer that detects microarchitectural hazards

2 months ago
  • #static-analysis
  • #C++
  • #performance
  • lshaz是一个基于Clang/LLVM的静态分析工具,用于在编译时检测C++代码中的微架构延迟风险
  • 该工具旨在将性能反馈环节前移到开发流程的代码编写阶段,而非等到生产环境性能分析时
  • lshaz通过字节偏移量和缓存行边界等运行时相关信息,分析结构体字段布局、原子操作选择、线程逃逸和NUMA位置问题
  • 在分析Abseil-C++代码库时,lshaz产生了256个诊断结果,揭示了潜在的性能问题
  • 关键发现包括ThreadIdentity结构体,其设计存在涉及缓存行共享和原子字段的硬件权衡考量
  • ThreadIdentity因缓存跨行和伪共享等多重并发风险触发了复合危害放大效应
  • 另一个重要发现是HashtablezInfo采样结构体,其原子字段在缓存行间呈现高密度分布
  • 256个诊断结果根据证据强度分为确证、可能和推测三个等级
  • lshaz独特之处在于能生成形式化假设和实验包,通过硬件性能计数器验证预测结果
  • 该工具已在GitHub开源,并通过SARIF输出与GitHub代码扫描等CI系统集成