Various users reported that IDE hangs while doing obvious things like entering first symbol in the file or switching files or focusing on the IDE from another application. There is an idea that this could be caused by "slow" filesystem, and that affects the IDE because it does many fs operations in EDT... I will try to create a test for it.
Most of these reports come from users working on NFS file system which can be very slow.
Current numbers of file system requests (File.isFile, File.exists, File.isDirectory, File.isHidden) from EDT:
new file open in the editor - 8-14
first symbol entered - 6
subsequent symbols entered - 1
file save - 15
opened file tab switch - 4
It may be beneficial to make a warning in the IDE log if we access file system
from EDT. Candidates may be:
Easiest way to track such calls is to set breakpoints in File methods (exists, isDirectory, isFile) with the condition: javax.swing.SwingUtilities.isEventDispatchThread()
I suspect that excessive I/O can lead to CPU starvation. I have seen this on a system with sufficient memory where most I/O hits the disk cache. From that perspective, reducing I/O would be very rewarding.
thanks to the fix of #218203 now:
subsequent symbols entered - 0
there are many slowness reports in different parts of the IDE because of that, just the latest:
All of them share the same root cause - accessing file system from EDT.
Thanks to everyone provided fixes!
Here is current statistics, it is much better now (less is better):
new file open in the editor 3-11 (was 8-14)
first symbol entered 2-7 (was 6)
subsequent symbols entered 0 (was 1)
file save 0 (was 15)
opened file tab switch 0 (was 4)
I plan to analyze and file what's left soon.
We've done the analysis and found only one place where IDE reads project files in EDT, see bug 229719
ups, there is another one: bug 229721
Created attachment 134419 [details]
File.* access from EDT report
this is umbrella task