[LLVMdev] Debug info: type uniquing for C++ and the status on building clang with "-flto -g"
Bob Wilson
bob.wilson at apple.com
Tue Nov 12 15:07:10 PST 2013
On Nov 12, 2013, at 2:08 PM, Manman Ren <manman.ren at gmail.com> wrote:
>
>
>
> On Tue, Nov 12, 2013 at 1:01 PM, David Blaikie <dblaikie at gmail.com> wrote:
> Hi Manman,
>
> Thanks for sending this summary and progress plans - it's great to see the impact your changes have had and ideas for future direction.
>
> Type uniquing for C++ is in. Some data for Xalan with -flto -g:
> 9.9MB raw dwarf size, peak memory usage at 2.8GB
> The raw dwarf size was 58MB, memory usage was 7GB back in May, 2013.
> Other efforts at size reduction helped, and type uniquing improved on top of those.
>
> Data on building clang with "-flto -g" after type uniquing:
> 3.4GB MDNodes after parsing all bc files, 7GB MDNodes after linking all bc files
>
> What's the change between parsing and linking?
> Parsing means reading in all bc files to source modules. Linking means linking in the source modules to the destination module.
> Extra MDNodes can be generated for the destination module.
Can you give an example? I'm just curious.
>
>
> 4.6GB DIEs
>
> It seems like the DIEs are a substantial (more than the pre-linked, but post-parsed BC files) part of the footprint. I think it might be important to do the CU-at-a-time work sooner rather than later as I'm concerned about the design impact it will have on existing and future work (it's already going to substantially change the cross-CU-DIE references, potentially changing the cost/benefit of that feature since we cannot inject DIEs from later CUs into prior ones).
>
> 4G MCContext
>
> What's the data in the MCContext that's relevant to debug info?
>
> One data point on "Xalan":
> without -g, MCContext allocates 45MB,
> with -g, MCContext allocates 286MB.
So _something_ big is in the MCContext…. what is it?
>
>
> --> The memory usage is still too big.
>
> Do we have an idea of what size is "small enough"? It would be useful to have a goal.
>
> So how to reduce the memory footprint at MDNode level:
> 1> Combine integers into MDString and further combining MDStrings (see PR17891)
> A partial implementation on the important debug info nodes can reduce the MDNodes from 7GB to 5.7GB
>
> I think this'll be an interesting, and potentially valuable, change even in non-LTO cases, but not necessarily where I would start just now.
>
> 2> Release MDNodes that are only used by source modules (I will send out a proposal)
> An estimation based on partial implementation: this will reduce MDNodes from 5.7GB to 3.9GB
>
> I'll keep an eye out for your proposal, as I can't quite picture what you've got in mind from this brief description.
>
> Yes, I plan to send out the proposal today or tomorrow.
>
> Manman
>
>
>
> - David
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131112/3b1caba8/attachment.html>
More information about the llvm-dev
mailing list