<html xmlns:v="urn:schemas-microsoft-com:vml" 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=us-ascii"><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:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:DengXian;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:DengXian;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.5pt;
        mso-ligatures:none;}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=ZH-CN link="#467886" vlink="#96607D" style='word-wrap:break-word;text-justify-trim:punctuation'><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hello,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I have a question about the backporting of JDK-8223923, specifically whether it is applicable to our situation:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>It is similar to JDK-8212637, We got a report from our customer that C2 thread got 100% CPU usage. Due to their security policies in the production environment, we are unable to get more details using gdb or JIT debugging information. The probability of this issue recurring is very low, having occurred only twice in the past two months. (The customer did not preserve the scene...)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>From the flame graph, we noticed the “<i>while</i></span>“<span lang=EN-US> loop in <i>can_see_stored_value </i>caused CPU usage, and the critical path was <i>MemBarCPUOrder</i>. We found a patch in JDK-8223923, which forbids stepping over MemBarCPUOrder nodes in <i>can_see_stored_value </i>. With this fix, the conditions for the customer's issue to recur no longer exist. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Perf record:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Samples: 10K of event 'cycles:ppp', Event count (approx.): 26570671846                                   <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  Children      Self  Command          Shared Object       Symbol                                        <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>-   98.18%     0.00%  C2 CompilerThre  libjvm.so           [.] Compile::Compile                          <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     Compile::Compile                                                                                    <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     Compile::Optimize                                                                                   <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     PhaseIterGVN::optimize                                                                              <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     PhaseIterGVN::transform_old                                                                         <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     LoadNode::Value                                                                                     <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   - MemNode::can_see_stored_value                                                                       <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      + 35.08% MergeMemNode::memory_at                                                                   <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        13.03% MemBarCPUOrderNode::Opcode                                                                <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        8.97% Node::in (inlined)                                                                         <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      + 1.97% MergeMemNode::base_memory (inlined)                                                        <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   98.18%     0.00%  C2 CompilerThre  libjvm.so           [.] Compile::Optimize                         <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   98.18%     0.00%  C2 CompilerThre  libjvm.so           [.] PhaseIterGVN::optimize                    <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   98.18%     0.00%  C2 CompilerThre  libjvm.so           [.] PhaseIterGVN::transform_old               <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   98.18%     0.00%  C2 CompilerThre  libjvm.so           [.] LoadNode::Value                           <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   98.18%    50.06%  C2 CompilerThre  libjvm.so           [.] MemNode::can_see_stored_value             <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   35.08%    26.14%  C2 CompilerThre  libjvm.so           [.] MergeMemNode::memory_at                   <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   17.58%     0.00%  C2 CompilerThre  libjvm.so           [.] Node::in (inlined)                        <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   14.14%     0.00%  C2 CompilerThre  libjvm.so           [.] MergeMemNode::base_memory (inlined)       <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   13.03%    13.00%  C2 CompilerThre  libjvm.so           [.] MemBarCPUOrderNode::Opcode                <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   10.94%     0.00%  C2 CompilerThre  libjvm.so           [.] Node::in (inlined)                        <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    9.58%     0.00%  C2 CompilerThre  libjvm.so           [.] Compile::current (inlined)                <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    9.58%     0.00%  C2 CompilerThre  libjvm.so           [.] ciEnv::current (inlined)                  <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    9.58%     0.00%  C2 CompilerThre  libjvm.so           [.] CompilerThread::current (inlined)         <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    9.58%     0.00%  C2 CompilerThre  libjvm.so           [.] JavaThread::current (inlined)             <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    9.58%     0.00%  C2 CompilerThre  libjvm.so           [.] Thread::current (inlined)                 <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    9.58%     0.00%  C2 CompilerThre  libjvm.so           [.] Thread::current_or_null (inlined)         <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    8.94%     8.94%  C2 CompilerThre  libjvm.so           [.] ThreadLocalStorage::is_initialized        <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    8.94%     0.00%  C2 CompilerThre  libjvm.so           [.] ThreadLocalStorage::thread_index (inlined)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    1.97%     0.00%  C2 CompilerThre  libjvm.so           [.] MergeMemNode::base_memory (inlined)       <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     0.08%     0.08%  RxComputationSc  perf-1012711.map    [.] 0x0000fffcb00122c8                        <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     0.06%     0.06%  RxComputationSc  perf-1012711.map    [.] 0x0000fffcb0012444                        <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     0.06%     0.06%  RxComputationSc  perf-1012711.map    [.] 0x0000fffcb0023620   <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>JDK-8223923 has already been merged into JDK11&17. Based on the frequency of the issue, we are not yet able to verify the modification.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Could we get a suggestion about whether this patch should be backported to JDK 8?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks~<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>BR<o:p></o:p></span></p><p class=MsoNormal align=left style='text-align:left'><span lang=EN-US style='font-size:11.0pt;mso-ligatures:standardcontextual'>Mail: <a href="mailto:gaoxiang@kylinos.cn">gaoxiang@kylinos.cn</a><o:p></o:p></span></p><p class=MsoNormal align=left style='text-align:left'><span lang=EN-US style='font-size:11.0pt;mso-ligatures:standardcontextual'>Tel: 13502020281<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>