GitHub 操作 CI 中的缓存命中率 0.00 %

Ccache hit rate 0.00 % in GitHub Actions CI

our C++ project, we managed to setup GitHub Actions building our sources using 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 分钟才能完成。

因此,尽管我尝试以与 ubuntu-* 相同的方式设置 macOS 构建,但我未能使 ccache 正常工作,而且我无法弄清楚原因。

如何使 ccache 也与 macOS 一起工作?

问题很可能是最大缓存大小太小了。如果构建的结果(主要是目标文件)不适合最大缓存大小,那么下一个构建将没有可用的结果,您只会得到缓存未命中。

执行的清理 在构建之前为 2976,在构建之后为 3353,因此执行了 377 automatic cleanups。由于 最大缓存大小 为 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) 以在缓存中容纳更多结果。