[RSS]

I/O Improvements

Lightweight FileObject operations

  • Delete of files was incredibly slow in 6.0 (IZ 106128,
IZ 122594) especially in case of deep file hierarchies. The overhead caused by creation of lock file on disk, will be minimized by identifying cases where the lock file is really needed and creating it only in such situations.
    • when there is just one locked file, it does not need lock on disk
    • given the locking system on masterfs, it is only necessary to create file locks if we are locking file named as already locked file, then one needs to create lock files for all files with the same name and verify there are not identical
    • The speedup is about 50%+-20% compared to the poor 6.0 case. In almost all cases delete just deletes and no writes are done anymore.

Number of file object instances

There is already stuff prototyped in the excessive disk usage area and it can also significantly decrease network access. Actually I work on evaluation. See Radek's issue, #123542 for details.

todo:

  • Patched security manager for testing,
  • native libraries evaluation,
  • ...

Additional Measurements

I tried to recursively traverse NetBeans sources on different partitions (clone of NetBeans repository, built up).

HW: Tecra M3.1st measuring is immediately after system boot and login.

OS1st (s)2nd (s)3rd (s)4th (s) 5th
WinXP (ntfs) 27919271920
Ubuntu 7.10 (ext3)1664444
WinXP (samba)714682N/AN/AN/A
Ubuntu 7.10 (nfs)15515016391177

ntfs - almost defragmented, partition was almost new.

ext3 - extensively used before

nfs - hs-eprg06-01.czech:/export/home1/pf124312 on /home/pf124312 type nfs (rw,addr=129.157.16.144)

I tried also to measure how single read byte works on both platforms. Reading limewire project byte by byte:

WinXP (ntfs) 76.07978.87565.04261.01669.562
Ubuntu 7.10 44.71942.76842.74542.86742.814

The measurement was done immediately when system fully started. What I found interesting, when using system for a while (making different task), I got a better results:

WinXP53.42253.04653.04753.17254.438
Ubuntu 7.1039.61733.91433.28633.48033.572

Conclusion: The results vary, only the thing I can confirm is slower ntfs filesystem.

Eliminate single byte reads/writes in file input/output streams

We are trying to reduce the number of I/O hits. This effort is tracked in Umbrella issue.

Single byte reads/writes (number of single byte reads/writes):

Start-up6.0.16.1
w/o userdir10988631699
existing userdir77471265

Update tracking files during start-up

We eliminated ~300 update_tracking files read during start-up in autoupdate (they are no longer read and parsed.)

ActionUbuntu 6.0.1Ubuntu 6.1 (0317)WinXP 6.0.1WinXP 6.1 (0317)
Out Of The Box Startup -- Classes-Loaded69864755N/A6691
Scanning Java Project Classpath34.0s19.6s35.4s20.6s
Expand Source Packages Node [1]603ms459ms1440ms3996ms (?)
Expand Source Packages Node [2]37ms35ms40ms34ms
Invoke Code Completion dialog in Editor [1]1081ms339ms1142ms311ms
Invoke Code Completion dialog in Editor [2]632ms29ms749ms36ms
Expand folder with 100 java files [1]1949ms620ms2128ms1202ms
Expand folder with 100 java files [2]554ms423ms285ms259ms

Network Measurements

Client: Ubuntu Linux Sources: NFS, Solaris 10 Project: limewire, nbextra Actions: src node -- expand project src node, wait until all packages are computed (progress finished) dir node -- expand com.limegroup.gnutella package (>100files, several dirs)

First number in each measurement indicates time immediately after system boot and NetBeans start. Other numbers are measured after NetBeans restart.

ActionNetBeans 6.0.1NetBeans 6.1 trunk (b1471)
src node [1]17.4s 17.2s 16.0s9.1s 9.3s 8.6s
src node [2]18.3s 16.7s 16.0s10.1s 9.4s 8.4s
dir node [1]2.7s 2.5s 2.6s1.4s 1.5s 1.4s
dir node [2]2.7s 2.7s 2.5s1.6s 1.3s 1.3s

(Stopwatch measurements)

Scan scheduled

Projects opening1st2nd3rd4th5th
postponed scanning4697 ms4661 ms4760 ms4983 ms4716 ms
immediate scanning7428 ms6754 ms7412 ms6785 ms7135 ms