GitHub Actions CI 中的 Ccache 命中率为 0.00%

问题描述 投票:0回答:1

我们的 C++ 项目中,我们设法设置 GitHub Actions 使用 ccache 构建我们的源代码。

它在 Linux 上运行得非常好,感谢

ccache
,构建在不到 5 分钟内就成功了。

不幸的是,当尝试在 macOS 上构建时,

ccache
似乎不起作用,给出:

cache directory                     /Users/runner/.ccache
primary config                      /Users/runner/.ccache/ccache.conf
secondary config      (readonly)    /usr/local/Cellar/ccache/3.7.11_1/etc/ccache.conf
stats updated                       Sun Aug 23 11:57:31 2020
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                          7175
cache hit rate                      0.00 %
cache file missing                     1
cleanups performed                  2976
files in cache                       165
cache size                         422.4 MB
max cache size                     500.0 MB

因此,macOS 构建大约需要 40 分钟才能完成。

因此,尽管我尝试以与

macOS
相同的方式设置
ubuntu-*
构建,但我未能让 ccache 正常工作,而且我不明白为什么。

如何让

ccache
也与
macOS
一起使用?

c++ macos github-actions ccache
1个回答
5
投票

问题很可能是最大缓存大小太小。如果构建的结果(主要是对象文件)不适合 最大缓存大小,则不会为下一个构建留下可用的结果,并且您只会遇到缓存未命中。

构建前执行的

清理为 2976 次,构建后为 3353 次,因此执行了 377 次自动清理。由于“最大缓存大小”为 500 MB,因此每次清理删除了大约 500 * (1 - 0.8) / 16 MB = 6.25 MB,因此所有清理总共删除了大约 377 * 6.25 MB ≈ 2356 MB 的数据。这应该大约是一次构建结果的大小。 (0.8是默认的“limit_multiple”,16指的是缓存中的子目录数量。) 尝试大幅增加缓存大小限制。根据以上计算,良好的缓存大小至少为 5 GB。您还可以或选择启用压缩 (

CCACHE_COMPRESS=1

) 以在缓存中容纳更多结果。

    

© www.soinside.com 2019 - 2024. All rights reserved.