IDEA EAP IU-95.260 Embedded YourKit PerformanceWatcher going berserk, writing many threaddump files

I have noticed something strange in IDEA EAP IU-95.260.  The YourKit profiler agent is enabled since this is EAP, which is fine, but I was under the impression that it doesn't do anything unless you start cpu or memory profiling.

What I have found is that during heavy processing, often in another program running on the same machine, that IDEA starts writing a bunch of thread dumps to the IDEA system directory, e.g.
C:\Users\alex\.IntelliJIdea90\system\log\threadDumps-20100622-203641-IU-95.260\20100624-172452-148

Many multiple thread dumps are being generated in rapid-fire succession. See screenshot -- there are many with the same timestamp 5:26 PM  5:27 PM, etc.

Attached is a picture of the Disk Write I/O that this was causing .  Sinc Disk I/O is the weak point in my quad core workstation, I would like to avoid this extra I/O IDEA is doing when my system is under load.

Is there a way to turn PerformanceWatcher off while still keeping ability to do cpu/memory profiler if need be?

Thanks,
-Alex

"Performance watcher"
    at sun.management.ThreadImpl.$$YJP$$dumpThreads0(Native Method)
    at sun.management.ThreadImpl.dumpThreads0(ThreadImpl.java)
    at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:374)
    at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.diagnostic.PerformanceWatcher.a(PerformanceWatcher.java:219)
    at com.intellij.diagnostic.PerformanceWatcher.e(PerformanceWatcher.java:203)
    at com.intellij.diagnostic.PerformanceWatcher.c(PerformanceWatcher.java:163)
    at com.intellij.diagnostic.PerformanceWatcher.access$100(PerformanceWatcher.java:42)
    at com.intellij.diagnostic.PerformanceWatcher$2.run(PerformanceWatcher.java:106)
    at java.lang.Thread.run(Thread.java:619)

iu-95-260-performance-watcher-thread-dump.png

iu-95-260-thread-dump-file-listing.png

3 comments
Comment actions Permalink

I checked my idea.exe.vmoptions file, and the settings for the yjpagent are different from the default.
(I copy over the default each time and never bothered to update the yjpagent line).

It shouldn't matter as yourkit doens't start profiling at startup unless you put "sampling" or "tracking" etc. in the startup parameters.

My idea.exe.vmoptions

-Xms256m
-Xmx1512m
-XX:MaxPermSize=250m
-XX:+UseCompressedOops
-ea
-agentlib:yjpagent


OOTB default idea.exe.vmoptions IU-95.260

-Xms128m
-Xmx512m
-XX:MaxPermSize=250m
-ea
-agentlib:yjpagent=disablej2ee,disablecounts,disablealloc,sessionname=IntelliJIdea90
0
Comment actions Permalink

Hello Alex,

The thread dumps are not written by YourKit, but rather by IntelliJ IDEA's
built-in profiling logic. They are written once a second if the event dispatch
thread is unresponsive for more than 5 seconds. To turn it off, add the system
property -Dperformance.watcher.threshold=0.

I have noticed something strange in IDEA EAP IU-95.260.  The YourKit
profiler agent is enabled since this is EAP, which is fine, but I was
under the impression that it doesn't do anything unless you start cpu
or memory profiling.

What I have found is that during heavy processing, often in another
program running on the same machine, that IDEA starts writing a bunch
of thread dumps to the IDEA system directory, e.g.

C:\Users\alex\.IntelliJIdea90\system\log\threadDumps-20100622-203641-I
U-95.260\20100624-172452-148

Many multiple thread dumps are being generated in rapid-fire
succession. See screenshot -- there are many with the same timestamp
5:26 PM  5:27 PM, etc.

Attached is a picture of the Disk Write I/O that this was causing .
Sinc Disk I/O is the weak point in my quad core workstation, I would
like to avoid this extra I/O IDEA is doing when my system is under
load.

*Is there a way to turn PerformanceWatcher off while still keeping
ability to do cpu/memory profiler if need be?*

Thanks,
-Alex
"Performance watcher"
at sun.management.ThreadImpl.$$YJP$$dumpThreads0(Native Method)
at sun.management.ThreadImpl.dumpThreads0(ThreadImpl.java)
at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:374)
at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.intellij.diagnostic.PerformanceWatcher.a(PerformanceWatcher.java:2
19)
at
com.intellij.diagnostic.PerformanceWatcher.e(PerformanceWatcher.java:2
03)
at
com.intellij.diagnostic.PerformanceWatcher.c(PerformanceWatcher.java:1
63)
at
com.intellij.diagnostic.PerformanceWatcher.access$100(PerformanceWatch
er.java:42)
at
com.intellij.diagnostic.PerformanceWatcher$2.run(PerformanceWatcher.ja
va:106)
at java.lang.Thread.run(Thread.java:619)
Image:iu-95-260-performance-watcher-thread-dump.png

Image:iu-95-260-thread-dump-file-listing.png

---
Original message URL:
http://devnet.jetbrains.net/message/5266407#5266407

--
Dmitry Jemerov
Development Lead
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Dmitry,

Thanks for the tip. I will add that setting in my ide.exe.vmoptions.  In my case, there is no shortage of cpu% and what is causing delays is the hard drive. I have the OS/pagefile + IDEA's caches plus a HyperV Windows VM all running on the same hard disk, and sometimes there's a freezeup usually when I am compiling the project. [I really need to add some mor drives in this system!]  Some running operations in IDEA are probably delayed when this happens, and that's when PerformanceWatcher starts taking thread dumps. I'm still unclear why it is taking dozens per second, though.

Thanks,
-Alex

0

Please sign in to leave a comment.