<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Agreed. Though the tricky part is the staleness, e.g. refresh every day vs every week may have different results.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I think eventually it might make sense to have a switch to control how we want to treat non-existing samples (0 or unknown), and that needs to be paired with a witch in llvm-profgen to control whether we fill in 0 for unsampled lines. These
 two switches need to be coordinated, or even better, the setting can be stored in profile file, then compiler can adapt to how profile is generated.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Users can choose which mode to use depending on refresh frequency and sensitiveness to profile size.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Wenlei<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Wei Mi <wmi@google.com><br>
<b>Date: </b>Thursday, November 19, 2020 at 3:36 PM<br>
<b>To: </b>Wenlei He <reviews+D90125+public+34d9fdca657d53b2@reviews.llvm.org><br>
<b>Cc: </b>Wenlei He <wenlei@fb.com>, Hongtao Yu <hoy@fb.com>, David Li <davidxl@google.com>, higuoxing@gmail.com <higuoxing@gmail.com>, dougpuob@gmail.com <dougpuob@gmail.com>, 88888yl@gmail.com <88888yl@gmail.com>, Lei Wang <wlei@fb.com>, Michał Górny <mgorny@gentoo.org>,
 lxfind@gmail.com <lxfind@gmail.com>, Modi Mo <modimo@fb.com>, llvm-commits <llvm-commits@lists.llvm.org>, matthew.voss@sony.com <matthew.voss@sony.com><br>
<b>Subject: </b>Re: [PATCH] D90125: [CSSPGO] Infrastructure for context-sensitive Sample PGO and Inlining<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">On Thu, Nov 19, 2020 at 2:59 PM Wenlei He via Phabricator<br>
<reviews@reviews.llvm.org> wrote:<br>
><br>
> wenlei added inline comments.<br>
><br>
><br>
> ================<br>
> Comment at: llvm/include/llvm/ProfileData/SampleProf.h:504-506<br>
> +      // For CSFDO, in order to conserve profile size, we no longer write out<br>
> +      // locations profile for those not hit during training, so we need to<br>
> +      // treat them as zero instead of error here.<br>
> ----------------<br>
> wenlei wrote:<br>
> > wmi wrote:<br>
> > > davidxl wrote:<br>
> > > > CSFDO ==> CSSPGO<br>
> > > It means CSSPGO will treat all the new lines as cold, even if some of them may be inferred from other parts of the profile. How much extra size is needed if zero is emitted?<br>
> > Knowing that CS profile will be much bigger, we started with trimming zero counts trying to save size as much as we can. But I don't actually have the data at hand. Let me see if I can get some data on this.<br>
> ><br>
> > New lines will be less of a problem for pseudo-probe if they don't change CFG.<br>
> ><br>
> I took a look at current profile generation tool. It requires some extra work to fill in zeros for not sample lines for CSSPGO. I collected AutoFDO for mysql w/ and w/o zeros filled, here's the size difference. CSSPGO is likely to see similar or bigger relative
 size difference (profile for context can be more sparse).<br>
><br>
> w/ zero filled for unsampled lines: 3.9M<br>
> w/o zero filled for unsampled lines: 1.4M<br>
><br>
<br>
Thanks for the data. That matches my expectation. It will be<br>
interesting to know the performance impact for both CSSPGO and current<br>
SPGO. For example, we can have some stale profile with and without<br>
zero filled for unsampled lines. Coupled with needed compiler change,<br>
we can compare whether the zeros are necessary for performance,<br>
especially under the source drift circumstance. If not, it can bring<br>
some substantial profile size saving and build time reduction for<br>
current SPGO.<br>
<br>
><br>
> Repository:<br>
>   rG LLVM Github Monorepo<br>
><br>
> CHANGES SINCE LAST ACTION<br>
>   <a href="https://reviews.llvm.org/D90125/new/">https://reviews.llvm.org/D90125/new/</a>
<br>
><br>
> <a href="https://reviews.llvm.org/D90125">https://reviews.llvm.org/D90125</a>
<br>
><o:p></o:p></p>
</div>
</div>
</body>
</html>