Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8008469

Java.listFiles() over SAMBA network is extremely slow on Windows 7 Client

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P4 P4
    • None
    • None
    • core-libs
    • x86
    • windows_7

      Have a network performance issue and suspect it is Java related.

      Customers using network drives (NAS) sometimes report extremely slow performance when using Java software jAlbum. Have narrowed this down to the File.listFiles() call. It seems to behave almost 100 times slower on a Win 7 client than on a Mac client (using either Java 6 or your Java 7). On a Win XP client, the performance is decent. A pure folder copy operation by dragging and dropping a network mounted folder to a local disk is far faster. Therefore suspect that something in how Java interacts with the file system on Win 7 is responsible.

      Here are some timings listing 31 folders mounted on a "QNAP" network disk on a 1GB LAN:

      Win 7 client:
      listing \\nas\Public\David\Remote Stocks: 0.0s
      listing \\nas\Public\David\Remote Stocks\Animals: 0.093s
      listing \\nas\Public\David\Remote Stocks\Animals\.jalbum: 0.312s
      listing \\nas\Public\David\Remote Stocks\Animals\.jalbum\thumbs: 0.405s
      listing \\nas\Public\David\Remote Stocks\album: 1.248s
      listing \\nas\Public\David\Remote Stocks\album\Animals: 1.31s
      listing \\nas\Public\David\Remote Stocks\album\Animals\thumbs: 1.388s
      listing \\nas\Public\David\Remote Stocks\album\Animals\slides: 1.762s
      listing \\nas\Public\David\Remote Stocks\album\Animals\res: 2.542s
      listing \\nas\Public\David\Remote Stocks\album\Sports: 2.761s
      listing \\nas\Public\David\Remote Stocks\album\Sports\thumbs: 2.839s
      listing \\nas\Public\David\Remote Stocks\album\Sports\slides: 3.229s
      listing \\nas\Public\David\Remote Stocks\album\Sports\res: 3.978s
      listing \\nas\Public\David\Remote Stocks\album\res: 4.196s
      listing \\nas\Public\David\Remote Stocks\album\Scenic: 4.695s
      listing \\nas\Public\David\Remote Stocks\album\Scenic\thumbs: 4.773s
      listing \\nas\Public\David\Remote Stocks\album\Scenic\slides: 5.194s
      listing \\nas\Public\David\Remote Stocks\album\Scenic\res: 5.99s
      listing \\nas\Public\David\Remote Stocks\album\People: 6.208s
      listing \\nas\Public\David\Remote Stocks\album\People\thumbs: 6.302s
      listing \\nas\Public\David\Remote Stocks\album\People\slides: 6.692s
      listing \\nas\Public\David\Remote Stocks\album\People\res: 7.472s
      listing \\nas\Public\David\Remote Stocks\.jalbum: 7.659s
      listing \\nas\Public\David\Remote Stocks\Sports: 7.768s
      listing \\nas\Public\David\Remote Stocks\Sports\.jalbum: 7.909s
      listing \\nas\Public\David\Remote Stocks\Sports\.jalbum\thumbs: 7.987s
      listing \\nas\Public\David\Remote Stocks\Scenic: 8.486s
      listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum: 8.642s
      listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum\thumbs: 8.72s
      listing \\nas\Public\David\Remote Stocks\People: 9.282s
      listing \\nas\Public\David\Remote Stocks\People\.jalbum: 9.422s

      From Mac:
      listing /Volumes/Public/David/Remote Stocks: 0.0s
      listing /Volumes/Public/David/Remote Stocks/Animals: 0.013s
      listing /Volumes/Public/David/Remote Stocks/Animals/.jalbum: 0.018s
      listing /Volumes/Public/David/Remote Stocks/Animals/.jalbum/thumbs: 0.022s
      listing /Volumes/Public/David/Remote Stocks/album: 0.027s
      listing /Volumes/Public/David/Remote Stocks/album/Animals: 0.03s
      listing /Volumes/Public/David/Remote Stocks/album/Animals/thumbs: 0.032s
      listing /Volumes/Public/David/Remote Stocks/album/Animals/slides: 0.034s
      listing /Volumes/Public/David/Remote Stocks/album/Animals/res: 0.038s
      listing /Volumes/Public/David/Remote Stocks/album/Sports: 0.04s
      listing /Volumes/Public/David/Remote Stocks/album/Sports/thumbs: 0.042s
      listing /Volumes/Public/David/Remote Stocks/album/Sports/slides: 0.046s
      listing /Volumes/Public/David/Remote Stocks/album/Sports/res: 0.05s
      listing /Volumes/Public/David/Remote Stocks/album/res: 0.052s
      listing /Volumes/Public/David/Remote Stocks/album/Scenic: 0.058s
      listing /Volumes/Public/David/Remote Stocks/album/Scenic/thumbs: 0.064s
      listing /Volumes/Public/David/Remote Stocks/album/Scenic/slides: 0.068s
      listing /Volumes/Public/David/Remote Stocks/album/Scenic/res: 0.074s
      listing /Volumes/Public/David/Remote Stocks/album/People: 0.08s
      listing /Volumes/Public/David/Remote Stocks/album/People/thumbs: 0.082s
      listing /Volumes/Public/David/Remote Stocks/album/People/slides: 0.085s
      listing /Volumes/Public/David/Remote Stocks/album/People/res: 0.089s
      listing /Volumes/Public/David/Remote Stocks/.jalbum: 0.091s
      listing /Volumes/Public/David/Remote Stocks/Sports: 0.103s
      listing /Volumes/Public/David/Remote Stocks/Sports/.jalbum: 0.106s
      listing /Volumes/Public/David/Remote Stocks/Sports/.jalbum/thumbs: 0.108s
      listing /Volumes/Public/David/Remote Stocks/Scenic: 0.11s
      listing /Volumes/Public/David/Remote Stocks/Scenic/.jalbum: 0.122s
      listing /Volumes/Public/David/Remote Stocks/Scenic/.jalbum/thumbs: 0.124s
      listing /Volumes/Public/David/Remote Stocks/People: 0.126s
      listing /Volumes/Public/David/Remote Stocks/People/.jalbum: 0.133s

      Win 7 multi threaded:
      listing \\nas\Public\David\Remote Stocks: 0.031s
      listing \\nas\Public\David\Remote Stocks\Animals: 0.063s
      listing \\nas\Public\David\Remote Stocks\album: 0.094s
      listing \\nas\Public\David\Remote Stocks\.jalbum: 0.125s
      listing \\nas\Public\David\Remote Stocks\Sports: 0.219s
      listing \\nas\Public\David\Remote Stocks\album\Animals: 0.234s
      listing \\nas\Public\David\Remote Stocks\Scenic: 0.328s
      listing \\nas\Public\David\Remote Stocks\Animals\.jalbum: 0.328s
      listing \\nas\Public\David\Remote Stocks\People: 0.359s
      listing \\nas\Public\David\Remote Stocks\album\Animals\thumbs: 0.421s
      listing \\nas\Public\David\Remote Stocks\Animals\.jalbum\thumbs: 0.468s
      listing \\nas\Public\David\Remote Stocks\album\Animals\slides: 0.468s
      listing \\nas\Public\David\Remote Stocks\album\Sports: 0.577s
      listing \\nas\Public\David\Remote Stocks\Sports\.jalbum: 0.765s
      listing \\nas\Public\David\Remote Stocks\People\.jalbum: 0.874s
      listing \\nas\Public\David\Remote Stocks\album\Sports\thumbs: 0.921s
      listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum: 1.014s
      listing \\nas\Public\David\Remote Stocks\album\Animals\res: 1.061s
      listing \\nas\Public\David\Remote Stocks\album\res: 1.061s
      listing \\nas\Public\David\Remote Stocks\album\Sports\slides: 1.139s
      listing \\nas\Public\David\Remote Stocks\Sports\.jalbum\thumbs: 1.233s
      listing \\nas\Public\David\Remote Stocks\album\Scenic: 1.295s
      listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum\thumbs: 1.482s
      listing \\nas\Public\David\Remote Stocks\album\Scenic\thumbs: 1.779s
      listing \\nas\Public\David\Remote Stocks\album\People: 1.81s
      listing \\nas\Public\David\Remote Stocks\album\Sports\res: 1.825s
      listing \\nas\Public\David\Remote Stocks\album\Scenic\slides: 2.013s
      listing \\nas\Public\David\Remote Stocks\album\People\thumbs: 2.293s
      listing \\nas\Public\David\Remote Stocks\album\People\slides: 2.496s
      listing \\nas\Public\David\Remote Stocks\album\Scenic\res: 2.73s
      listing \\nas\Public\David\Remote Stocks\album\People\res: 3.136s

      As you can see get 3 times better performance on Windows by using a multithreaded file listing (from 9 to 3 seconds), but that is still way from the 0.1s measured when listing the same folder tree from MacBook Pro client. Something seems seriously wrong with the combination Java File.listFiles() on a SAMBA mounted folder from a Win7 client. The slowness renders the usage of jAlbum with images stored on NAS devices impossible.

            Unassigned Unassigned
            tyao Ting-Yun Ingrid Yao (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: