GENERAL INFORMATION ON PERFORMANCE TESTS
----------------------------------------

The following performance tests were based on two file sets: the
liveCD filesystem from the Ubuntu liveCD (Warty release), and the
liveCD filesystem from the Damn Small Linux liveCD (release 0.8.4).
The Ubuntu liveCD filesystem was used to test filesystem performance
from CDROM and hard disk for Zisofs, Cloop, Squashfs 2.0 and Squashfs2.1.
CRAMFS filesystem performance could not be tested for this filesystem
bacause it exceeds the maximum supported size of CRAMFS.  To test
CRAMFS performance against Squashfs, the liveCD filesystem from
Damn Small Linux was used.

NOTE: the usual warnings apply to these results, they are provided for
illustrative purposes only, and due to different hardware and/or file data, you
may obtain different results.  As such the results are provided "as is" without
any warranty (either express or implied) and you assume all risks as to their
quality and accuracy.

1. Ubuntu liveCD performance tests

   ext3 uncompressed size      1.4 GB
   Zisofs compressed size      589.81 MB
   Cloop compressed size       471.89 MB
   Squashfs2.0 compressed size 448.58 MB
   Squashfs2.1 compressed size 448.58 MB

1.1 Performance tests from CDROM

1.1.1 Directory Lookup performance

  Time taken to perform "ls -lR --color=alawys | cat > /dev/null" on filesystem
  mounted from CDROM

  Zisofs       49.88 seconds (User 2.60 secs, Sys 11.19 secs)
  Cloop        20.80 seconds (User 2.71 secs, Sys 13.50 secs)
  Squashfs2.0  16.56 seconds (User 2.42 secs, Sys 10.37 secs)
  Squashfs2.1  10.14 seconds (User 2.48 secs, Sys 4.44 secs)

1.1.2 Sequential I/O performance

  Time taken to perform "tar cf - | cat > /dev/null" on filesystem mounted
  from CDROM

  Zisofs       27 minutes 28.54 seconds (User 3.00 secs, Sys 1 min 4.80 secs)
  Cloop        5 minutes 55.72 seconds (User 2.90 secs, Sys 3 min 37.90 secs)
  Squashfs2.0  5 minutes 20.87 seconds (User 2.33 secs, Sys 56.98 secs)
  Squashfs2.1  5 minutes 15.46 seconds (user 2.28 secs, Sys 51.12 secs)

1.1.3 Random I/O performance

  Random access pattern generated by "find /mnt -type f -printf "%s %p\n" | sort
  -g | awk '{ printf $2 }' > /tmp/sort

  Time taken to perform "cpio -o --quiet -H newc < /tmp/sort > /dev/null"
  on filesystem mounted from CDROM

  Zisofs       101 minutes 29.65 seconds (User 5.33 secs, Sys  1 min 17.20 secs)
  Cloop        35 minutes 27.51 seconds (user 5.93 secs, Sys 4 mins 30.23 secs)
  Squashfs2.0  21 minutes 53.05 seconds (user 5.71 secs, Sys 2 mins 36.59 secs)
  Squashfs2.1  21 minutes 46.99 seconds (User 5.80 secs, Sys 2 mins 31.88 secs)


1.2 Performance tests from Hard disk

1.2.1 Directory Lookup performance

  Time taken to perform "ls -lR --color=alawys | cat > /dev/null" on filesystem
  mounted from Hard disk 

  Zisofs       17.29 seconds (User 2.62 secs, Sys 11.08 secs)
  Cloop        16.46 seconds (User 2.63 secs, Sys 13.41 secs)
  Squashfs2.0  13.75 seconds (User 2.44 secs, Sys 11.00 secs)
  Squashfs2.1  6.94 seconds (User 2.44 secs, Sys 4.48 secs)

1.2.2 Sequential I/O performance

  Time taken to perform "tar cf - | cat > /dev/null" on filesystem mounted
  from Hard disk

  Zisofs       1 minute 21.47 seconds (User 2.73 secs, Sys 54.44 secs)
  Cloop        1 minute 34.06 seconds (user 2.85 secs, Sys 1 min 12.13 secs)
  Squashfs2.0  1 minute 21.22 seconds (User 2.42 secs, Sys 56.21 secs)
  Squashfs2.1  1 minute 15.46 seconds (User 2.36 secs, Sys 49.78 secs)

1.2.3 Random I/O performance

  Random access pattern generated by "find /mnt -type f -printf "%s %p\n" | sort
  -g | awk '{ printf $2 }' > /tmp/sort

  Time taken to perform "cpio -o --quiet -H newc < /tmp/sort > /dev/null"
  on filesystem mounted from Hard disk

  Zisofs       11 minutes 13.64 seconds (User 5.08 secs, Sys 52.62 secs)
  Cloop        5 minutes 37.93 seconds (user 6 secs, Sys 2 mins 22.38 secs)
  Squashfs2.0  5 minutes 7.11 seconds (user 5.63 secs, Sys 2 mins 35.23 secs)
  Squashfs2.1  5 minutes 1.87 seconds (User 5.71 secs, Sys 2 mins 29.98 secs)


2. Damn Small Linux liveCD performance tests

   ext3 uncompressed size      126 MB
   CRAMFS compressed size      52.19 MB
   Squashfs2.0 compressed size 46.52 MB
   Squashfs2.1 compressed size 46.52 MB

2.1 Performance tests from CDROM

2.1.1 Directory Lookup performance

  Time taken to perform "ls -lR --color=alawys | cat > /dev/null" on filesystem
  mounted from CDROM

  CRAMFS       10.85 seconds (User 0.39 secs, Sys 0.98 secs)
  Squashfs2.0  2.97 seconds (User 0.36 secs, Sys 2.15 secs)
  Squashfs2.1  2.43 seconds (User 0.40 secs, Sys 1.42 secs)

2.1.2 Sequential I/O performance

  Time taken to perform "tar cf - | cat > /dev/null" on filesystem mounted
  from CDROM

  CRAMFS       55.38 seconds (User 0.34 secs, Sys 6.98 secs)
  Squashfs2.0  35.99 seconds (User 0.30 secs, Sys 6.35 secs)
  Squashfs2.1  33.83 seconds (User 0.26 secs, Sys 5.56 secs)

2.1.3 Random I/O performance

  Random access pattern generated by "find /mnt -type f -printf "%s %p\n" | sort
  -g | awk '{ printf $2 }' > /tmp/sort

  Time taken to perform "cpio -o --quiet -H newc < /tmp/sort > /dev/null"
  on filesystem mounted from CDROM


  CRAMFS        3 minutes 1.68 seconds (User 0.54 secs, Sys 9.51 secs)
  Squashfs2.0   1 minute 39.45 seconds (User 0.57 secs, Sys 13.14 secs)
  Squashfs2.1   1 minute 38.41 seconds (User 0.58 secs, Sys 13.08 secs)

2.2 Performance tests from Hard disk

2.2.1 Directory Lookup performance

  Time taken to perform "ls -lR --color=alawys | cat > /dev/null" on filesystem
  mounted from Hard disk

  CRAMFS       1.77 seconds (User 0.53 secs, Sys 1.21 secs)
  Squashfs2.0  2.67 seconds (User 0.41 secs, Sys 2.25 secs)
  Squashfs2.1  1.87 seconds (User 0.41 secs, Sys 1.46 secs)

2.2.2 Sequential I/O performance

  Time taken to perform "tar cf - | cat > /dev/null" on filesystem mounted
  from Hard disk 

  CRAMFS       6.80 seconds (User 0.36 secs, Sys 6.02 secs)
  Squashfs2.0  7.23 seconds (User 0.29 secs, Sys 6.62 secs)
  Squashfs2.1  6.53 seconds (User 0.31 secs, Sys 5.82 secs)

2.2.3 Random I/O performance

  Random access pattern generated by "find /mnt -type f -printf "%s %p\n" | sort
  -g | awk '{ printf $2 }' > /tmp/sort

  Time taken to perform "cpio -o --quiet -H newc < /tmp/sort > /dev/null"
  on filesystem mounted from Hard disk 


  CRAMFS       28.55 seconds (User 0.49 secs, Sys 6.49 secs)
  Squashfs2.0  25.44 seconds (User 0.58 secs, Sys 13.17 secs)
  Squashfs2.1  24.72 seconds (User 0.56 secs, Sys 13.15 secs)
