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 分钟才能完成。
构建示例:https://github.com/azerothcore/azerothcore-wotlk/runs/1018358261
这是定义动作的地方:https://github.com/azerothcore/azerothcore-wotlk/blob/master/.github/workflows/core_build.yml
整个项目的源代码公开于:https://github.com/azerothcore/azerothcore-wotlk
因此,尽管我尝试以与 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
) 以在缓存中容纳更多结果。
在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 分钟才能完成。
构建示例:https://github.com/azerothcore/azerothcore-wotlk/runs/1018358261
这是定义动作的地方:https://github.com/azerothcore/azerothcore-wotlk/blob/master/.github/workflows/core_build.yml
整个项目的源代码公开于:https://github.com/azerothcore/azerothcore-wotlk
因此,尽管我尝试以与 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
) 以在缓存中容纳更多结果。