opjitconv runs indefinitely

大平怜 <[email protected]>
Newsgroups gmane.linux.oprofile
Message-ID <CAERM-Pj5mKuM-wxR46VyLnyUaVZqSsLj0NLZ8qDb9EqOZh8OAw@mail.gmail.com>
Hi,

I found opjitconv ran indefinitely when profiling a Java application
running on
OpenJDK/ppc64le.  This is because OpenJDK sometimes reports generation of
zero-size jitted code via JVMTI, but scan_overlaps() in opjitconv does not
assume
the existence of jitted code with size zero.

(1) scan_overlaps() finds overlap between a normal jitted code and a
zero-size
     jitted code.
(2) eliminate_overlaps() tries to split the zero-size jitted code but
cannot.
(3) resolve_overlaps() incorrectly thinks the split has happened and invokes
     scan_overlaps() again.
(4) Back to (1)

One workaround would be to remove all the zero-size entries before resolving
overlaps (patch attached), but I am not sure if this is a good solution.
It works at least in my environment.


Regards,
Rei Odaira


--- oprofile-1.0.0/opjitconv/jitsymbol.c 2014-09-12 09:39:47.000000000 -0500
+++ oprofile-1.0.0-openjdk8-src/opjitconv/jitsymbol.c 2015-05-05
13:37:13.931202002 -0500
@@ -201,6 +201,26 @@
  }
 }

+static void invalidate_zero_size_entries(void)
+{
+ u32 i;
+ int flag;
+ struct jitentry * a;
+
+ flag = 0;
+ for (i = 0; i < entry_count; i++) {
+ a = entries_address_ascending[i];
+ if (a->code_size == 0) {
+ invalidate_entry(a);
+ flag = 1;
+ }
+ }
+ if (flag) {
+ resort_address();
+ resort_symbol();
+ }
+}
+

 /* select the symbol with the longest life time in the index range */
 static int select_one(int start_idx, int end_idx)
@@ -505,6 +525,7 @@
  int cnt = 0;

  invalidate_earlybirds(start_time);
+ invalidate_zero_size_entries();
  while ((rc = scan_overlaps()) && rc != OP_JIT_CONV_FAIL) {
  resort_address();
  if (cnt == 0) {

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y

_______________________________________________
oprofile-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oprofile-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.