-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Labels
P2Priority 2Priority 2
Description
Problem
CMake configuration phase takes dramatically longer on Linux compared to Windows when using vcpkg with a fully built cache.
Timing Comparison
Windows NoCUDA (Build #19787730835)
- Prep phase Configure: 1 minute 8 seconds
- Test phase Configure: 1 minute 8 seconds
- Build: https://github.com/Apra-Labs/ApraPipes/actions/runs/19787730835
Linux NoCUDA (Build #19788331486)
- Prep phase Configure: 1 hour 7 minutes 30 seconds
- Test phase Configure: 1 hour 10 minutes 12 seconds
- Build: https://github.com/Apra-Labs/ApraPipes/actions/runs/19788331486
Analysis
The Linux CMake configure step takes approximately 68x longer than Windows, despite both using cached vcpkg dependencies. This suggests the issue is NOT with building dependencies, but with:
- CMake find_package() performance: CMake may be scanning the filesystem extensively on Linux
- vcpkg toolchain file overhead: The vcpkg CMake toolchain may have performance issues on Linux
- Filesystem performance: Linux runner filesystem may be slower (network-mounted?)
- CMake version differences: Different CMake versions or configurations between platforms
Impact
- Linux CI builds take 1+ hour just for CMake configuration
- This affects developer productivity and CI costs
- Total Linux build time is 2+ hours vs 20-30 minutes on Windows
Suggested Investigation
- Enable CMake verbose/trace mode to see what's taking time
- Check if vcpkg is rebuilding packages instead of using cache
- Compare CMake versions between Linux and Windows runners
- Profile the CMake configuration step
- Check if there are I/O bottlenecks on Linux runners
Environment
- Linux: ubuntu-22.04 GitHub runner, CMake 3.29.6
- Windows: windows-2022 GitHub runner, CMake 3.29.6
- vcpkg: Same baseline across both platforms
- Cache key: Linux-4 / Windows-4
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P2Priority 2Priority 2