Currently Being Moderated

How to report RubyMine performance problems and take CPU/memory snapshots

VERSION 11

Created on: Apr 17, 2009 12:59 PM by Eugene Toporov - Last Modified:  Nov 25, 2013 2:19 PM by Serge Baranov

This document is out of date, the new version is available at

https://intellij-support.jetbrains.com/entries/29983118-Reporting-performance-problems

Common solutions for RubyMine performance problems

Before capturing and providing the CPU snapshot, please be aware of the following known issues (and possible solutions):


  • Antiviral tools monitoring project and caches directories (USER_HOME\.RubyMineXX). Exclude RubyMine project/library/caches directories from the monitor.
  • RubyMine caches on the slow or network drive, check that USER_HOME\.RubyMineXX is on the local drive, adjust the location in RUBYMINE_HOME\bin\idea.properties if necessary (but be aware of the first item in this list).
  • Project files/Ruby installation on the network drives. Move them to your local drives.
  • Low free system memory and therefore swapping. Close other applications, free as much memory as possible. Install additional RAM, decrease the heap.
  • Very large files (>10 000 lines). Refactor them if possible. Disable inspections per file to save some resources using the Hector icon in the status bar.
  • Heavily fragmented partition and full MFT, see the related blog post. Drive defragmentation can make RubyMine much faster, we have proven it on our development machines.
  • Heavy disk activity caused by another applications, such as torrent clients, file servers. One thread can read data from the modern HDD at ~100 MB/sec. If there are 2 or more applications reading/writing to the same HDD at the same time, performance will drop to 2-3 MB/sec. Check that there are no processes constantly reading/writing to the disk. On Windows you can use SysInternals Process Monitor or Process Explorer.
  • External process modifying or generating lots of files/logs into the project directories. Synchronization will take lots of time in this case. Exclude such directories from the project.
  • When using version control, if there are many unversioned files (thousands), Changes view update may be slow. Exclude such directories from the version control in Settings | Version Control | Directory Version Control Settings by adding the directory with such files to the list and setting VCS to NONE.

 

Automatic Thread Dumps Logging

If the UI of RubyMine is unresponsive for more than 5 seconds, it starts writing thread dumps to the logs directory. If you've encountered a situation of RubyMine unresponsiveness or deadlock, please find the threadDumps-xxx directory from the session in which you've experienced the problem and send the contents to support@jetbrains.com

 

On Mac OS X, the logs directory can be found at:


~/Library/Caches/RubyMineXX/logs

for RubyMine 2.0 beta 2 or older versions

 

~/Library/Logs/RubyMineXX

for versions after RubyMine 2.0 beta 2

 

CPU snapshot capturing instructions

If you have a performance problem not related to the issues mentioned above, please contact support@jetbrains.com and provide the following information:

  • You hardware configuration (CPU, Memory, HDD)
  • OS, free memory when you start RubyMine, RubyMine heap settings, file system, RubyMine caches location (if modified)

 

 

  1. If you are using a non-released EAP build under 32-bit JVM please go to step 2). Otherwise if you are using a release or release candidate build or if you running an EAP build on 64-bit JVM follow instructions below:

     

    A yjpagent library isn't bundled in release/rc builds and a library which is provided with EAP builds will not work on 64-bit operating system when you run RubyMine under 64-bit JVM. Please obtain the library(64-bit  for 64-bit JVM) version from the YourKit Java Profiler distribution (you need Linux .zip download of 7.5 or 8.x version containing library versions for different operating systems: Linux, Mac, Solaris, Windows). You will find libraries in "bin" folder of the distribution. Copy(or replace) yjpagent library in RUBYMINE_HOME\bin with the appropriate version. Use 8.x YourKit version for RubyMine 3.x, RubyMine 2.x and 7.5 version for RubyMine 1.x, otherwise toolbar buttons will not appear!

     

  2. On Windows open RUBYMINE_HOME/bin/rubymine.exe.vmoptions, add the following line at the bottom:


    -agentlib:yjpagent

     

    On Linux open RUBYMINE_HOME/bin/rubymine.vmoptions, add the following line at the bottom:


    -agentlib:yjpagent

     

    On Mac OS X open Info.plist located in /Applications/RubyMine-X.X.app/Contents, find the following:

     

    <key>VMOptions</key>

    <string>-Xms16m -Xmx192m -XX:MaxPermSize=120m -Xbootclasspath/p:../lib/boot.jar -ea</string>

            for RubyMine 3.1.x or older versions

     

    <key>VMOptions</key>

    <string>-ea -Xverify:none -Xbootclasspath/a:../lib/boot.jar</string>

            for RubyMine 3.2.x versions

     

    Modify the string tag by adding -agentlib:yjpagent option, like:

     

    <string>-Xms16m -Xmx192m -XX:MaxPermSize=120m -Xbootclasspath/p:../lib/boot.jar -ea -agentlib:yjpagent</string>

            for RubyMine 3.1.x or older versions

     

     

    <string>-ea -Xverify:none -Xbootclasspath/a:../lib/boot.jar -agentlib:yjpagent</string>

            for RubyMine 3.2.x versions

     

     

 

Start RubyMine and you should notice 2 new buttons in the toolbar, one for taking CPU snapshot, another one for Memory snapshot. Press the CPU button and perform the actions which take a lot of CPU resources on your machine. When finished, press this button again to stop recording, save the snapshot and upload it to ftp://ftp.intellij.net/.uploads/.

 

Send us an e-mail with the file name and we'll investigate the issue. In the e-mail please also describe what you were doing in detail. If you can reproduce it in a small project, please also provide one. You can also submit an issue to our issue tracker instead of contacting us by mail.

 

 

Memory snapshot

 

In case of memory related issues (memory usage goes high, garbage is not collected, etc) please use the Memory snapshot button in the menu near the CPU snapshot button. If it's not possible to get the snapshot because of the application crashing with OutOfMemory errors, please add the

-XX:+HeapDumpOnOutOfMemoryError

option to the IDEA JVM options(the same place as for "-agentlib:yjpagent" option in above CPU snapshot section). On the next OOM error the .hrpof dump will be produced and saved by the JVM (usually in the application working directory which is IDEA_HOME\bin). Upload this dump to our FTP as described above in the CPU snapshot section.

Average User Rating
(0 ratings)




There are no comments on this document

More Like This

  • Retrieving data ...