Re: ccache
- Reply: Bakul Shah : "Re: ccache"
- In reply to: Craig Leres : "Re: ccache"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 30 May 2023 21:00:53 UTC
On 4/3/23 18:48, Craig Leres wrote:
> On 4/3/23 17:09, Bakul Shah wrote:
>> Am I use ccache incorrectly or is there a bug?
>>
>> # CCACHE_DIR=/usr/obj/ccache ccache -s
>> cache directory /usr/obj/ccache
>> primary config /usr/obj/ccache/ccache.conf
>> secondary config (readonly) /usr/local/etc/ccache.conf
>> stats updated Mon Apr 3 16:54:31 2023
>> ...
>> cleanups performed 507
>> files in cache 2795230
>> cache size 2.9 GB <===
>> max cache size 15.0 GB
>> # find /usr/obj/ccache -type f |wc
>> 2795395 2795395 142222206
>> # du -sh /usr/obj/ccache
>> 83G /usr/obj/ccache <===
>>
>> I have
>>
>> WITH_CCACHE_BUILD=yes
>> CCACHE_DIR=/usr/obj/ccache
>>
>> in /etc/make.conf
>
> Thank you for bringing this up; I have the same issue and have never
> figured it out. But I think I've found another piece or two of the puzzle.
>
> Using my favorite ktrace trick we can see that by default it tries to
> open /usr/local/etc/ccache.conf:
>
> zinc 32 % cd /tmp && ktrace -di ccache -s > /dev/null
> zinc 33 % kdump | fgrep NAMI | fgrep ccache.conf
> 17418 ccache NAMI "/usr/local/etc/ccache.conf"
> 17418 ccache NAMI "/home/zinc/u0/leres/.ccache/ccache.conf"
>
> I suspect the trick here is when ccache runs inside a poudriere jail,
> ccache.conf is not present and/or not in the right location.
>
> On my build server I have /var/cache/ccache/ccache.conf which I believe
> works for some things but I still have 46 GB in /var/cache/ccache and
> /var/cache/ccache/ccache.conf is trying to limit use to 8 GB.
>
> If I start up a poudriere jail and look around I find
> /root/.ccache/ccache.conf is a copy of /var/cache/ccache/ccache.conf. So
> I don't get why it doesn't work.
>
> (Now I'll sit back and wait for something who knows more chimes in...)
Nobody stepped up and I haven't figured out how to make ccache obey
max_size when run from inside the context of a poudriere jail but I do
see now how to keep a lid on ccache disk usage.
I found that if I ran "ccache -c" as root, a .ccache directory would get
created in /root. I could also see an attempt to open
/usr/local/etc/ccache.conf so I created this with the following:
cache_dir = /var/cache/ccache
max_size = 8.0G
I then added a cron job to run this command at midnight:
/usr/local/bin/ccache -c | fgrep -v 'Cleaned cache'
As the saying goes, "crude, but effective."
Craig