Re: /usr/obj is 11GB huge on FreeBSD 12-current

From: Wolfram Schneider <wosch_at_freebsd.org>
Date: Sat, 16 Dec 2017 17:49:53 +0100
On 15 December 2017 at 20:20, Wolfram Schneider <wosch_at_freebsd.org> wrote:
> On 15 December 2017 at 19:39, Konstantin Belousov <kostikbel_at_gmail.com> wrote:
>> On Fri, Dec 15, 2017 at 06:38:48PM +0100, Wolfram Schneider wrote:
>>> On 15 December 2017 at 17:51, Wolfram Schneider <wosch_at_freebsd.org> wrote:
>>> > On 15 December 2017 at 13:02, David Wolfskill <david_at_catwhisker.org> wrote:
>>> >> On Fri, Dec 15, 2017 at 10:12:09AM +0100, Wolfram Schneider wrote:
>>> >>> Hi,
>>> >>>
>>> >>> I upgraded a machine from 11-stable to 12-current. The /usr/obj tree
>>> >>> is now 11GB huge:
>>> >>>
>>> >>> FreeBSD 12-current
>>> >>> $ du -hs /usr/obj
>>> >>>  11G /usr/obj
>>> >>>
>>> >>> on FreeBSD 11-stable it was less the size:
>>> >>> $ du -hs /usr/obj
>>> >>> 5.6G /usr/obj
>>> >>>
>>> >>> this is a problem when you have a small VM with 20GB disk space or less.
>>> >>>
>>> >>> Is there a way to use less /usr/obj disk space during build? I know
>>> >>> that we have to do some bootstrapping for newer compiler tools, but
>>> >>> does we need to keep all temp files during the build?
>>> >>
>>> >> There was a change near the beginning of November; please see UPDATING
>>> >> entry 20171101 -- you probably have several no-longer-used
>>> >> subdirectories under /usr/obj/usr/src/.
>>> >>
>>> >> Once those are cleared out, my experience (tracking stable/11 & head in
>>> >> different slices on the same machines) is that stbale/11 is using about
>>> >> 5.0G, while head uses about 6.1G.
>>> >
>>> > I think the suspect directories are "tmp" and "obj-lib32", together
>>> > they are 4.1GB huge.
>>> >
>>> > I will run a build of current again with a clean obj tree (-current on
>>> > a recent -current). Let's see.
>>>
>>> I run a test on universe12b (FreeBSD 12.0-CURRENT #0 r325426: Sun Nov
>>> 5) with an empty obj directory.
>>>
>>> `make buildworld' creates 9.7GB of obj data. After running `make
>>> buildkernel' it will grow to 12GB. This is on a ZFS filesystem (my
>>> original report was on UFS)
>>
>> Most likely reason of the bump is generation of debugging data, turned on
>> for 12.  Another not usable thing to disable are tests and profile libraries.
>> Put the following into /etc/src.conf:
>> WITHOUT_PROFILE=yes
>> WITHOUT_DEBUG_FILES=yes
>> WITHOUT_TESTS=yes
>
> Hi Konstantin,
>
> I tried these 3 variables and the results looks much better, down to
> 5.1GB from 12GB. Many thanks!
>
> $ du -hs obj*
>  12G obj-debug
> 5.1G obj-nodebug

I did another test which of the WITHOUT_* variables saves most of the space

5.5G obj-WITHOUT_DEBUG_FILES (6.5GB less)
 10G obj-WITHOUT_LIB32 (2GB less)
 11G obj-WITHOUT_PROFILE (1GB less)
 12G obj-WITHOUT_TESTS

if you are short on disk space (e.g. a small VM with SSD drive), you
should compile with
$ export WITHOUT_DEBUG_FILES=YES; make buildworld

-Wolfram

-- 
Wolfram Schneider <wosch_at_FreeBSD.org> https://wolfram.schneider.org
Received on Sat Dec 16 2017 - 15:50:10 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:14 UTC