Windows Inventory and Compatibility Appraisal Service Performance Issues Traced to std::vector Memory Allocation
Key Takeaways
- ▸The Inventory and Compatibility Appraisal service (InventorySvc) is a known cause of CPU hogging in Windows, with symptoms including svchost.exe processes pegging CPU cores for extended periods
- ▸Root cause analysis using ETW tracing identified inefficient std::vector memory allocation in aeinv.dll's GetAppInventory function as the culprit
- ▸The performance issue is compounded when Microsoft Defender's background scanning is triggered by the appraisal service, causing full CPU utilization and system thermal throttling that impairs usability
Summary
A detailed technical investigation has identified a significant performance bottleneck in Windows' Inventory and Compatibility Appraisal service (InventorySvc), which causes unexpected CPU hogging on recent versions of Windows. The root cause was traced to inefficient std::vector creation within the aeinv.dll binary, consuming approximately 3 seconds of a 5.8-second execution window. The issue has been particularly problematic when combined with Microsoft Defender's background scanning, which can be triggered by the appraisal service running, leading to full CPU core utilization and thermal throttling on affected systems. Using Windows Performance Analyzer (WPA) and ETW (Event Tracing for Windows) traces, the investigator identified that the GetAppInventory function call was responsible for the excessive CPU consumption, providing the technical groundwork for potential optimization and fixes.
- The unpredictable and infrequent nature of the appraisal service execution made initial debugging difficult, requiring weeks of monitoring to capture relevant performance traces



