GitHub Actions中的Ccache命中率0.00%

问题描述

our C++ project中,我们成功设置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

AzerothCore macOS ccache issue

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

因此,尽管我尝试以与macOS相同的方式设置ubuntu-*的构建,但是我仍无法使ccache正常工作,并且我不知道为什么。

如何使ccachemacOS一起工作?

解决方法

问题很可能是最大缓存大小太小了。如果某个构建的结果(主要是目标文件)不符合最大高速缓存大小,那么下一个构建将没有可用的结果,并且只会丢失高速缓存。

执行的清理是在构建之前为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),以在缓存中容纳更多结果。