ClamFS Benchmark Page.

ClamFS is a FUSE-based user-space file system for Linux with on-access anti-virus file scanning through clamd daemon.

Hardware

Benchmarked on Acer Aspire 5102 WLMi.

CPU

model name      : AMD Turion(tm) 64 X2 Mobile Technology TL-50
stepping        : 2
cpu MHz         : 1600.000
cache size      : 256 KB
[...]
cpu cores       : 2

Memory

MemTotal:       898056 kB

HDD

/dev/hda:
 Timing cached reads:   1634 MB in  2.00 seconds = 817.47 MB/sec
 Timing buffered disk reads:  122 MB in  3.02 seconds =  40.35 MB/sec

Software

OS

Debian 4.0 Etch (prerelease)

Kernel

Linux 2.6.18-4-amd64 SMP x86_64

Filesystem in USErspace

ii  fuse-module-2.6.18-4-amd64         2.3.0-4.2etch1+2.6.18.dfsg.1-11
ii  fuse-source                        2.3.0-4.2etch1
ii  fuse-utils                         2.5.3-4.1
ii  libfuse-dev                        2.5.3-4.1
ii  libfuse2                           2.5.3-4.1

Bonnie++

ii  bonnie++                           1.03a

Results

ReiserFS

Results for Bonnie++ on ReiserFS (without ClamFS).
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
vampire          2G 34509  80 33022  32 12211   8 26177  59 28460  10 124.0   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 13273  97 +++++ +++ 13548  98 15643  99 +++++ +++ 12690 100

ClamFS on ReiserFS

Results for Bonnie++ on ClamFS with ReiserFS backend.
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
vampire          2G 22531  54 30630   8 12806   8 24631  64 29015   5  95.0   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  6524  12 30881  15  6517  12  6385  14 +++++ +++  7121  12

 

HTML version of results, bonnie-reiserfs.txt, bonnie-clamfs-on-reiserfs.txt.

ScanCache performance

Test files

18 files with random data in different sizes (form 1kB to 2MB).

Test command

for i in `ls -1`; do /usr/bin/time -v dd if=$i of=/dev/null 2>&1 | egrep '(copied|wall)' ; done

ScanCache

First run
1024 bytes (1.0 kB) copied, 0.000127 seconds, 8.1 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
2048 bytes (2.0 kB) copied, 0.000136 seconds, 15.1 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
3072 bytes (3.1 kB) copied, 0.000126 seconds, 24.4 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
4096 bytes (4.1 kB) copied, 0.000159 seconds, 25.8 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
5120 bytes (5.1 kB) copied, 0.000196 seconds, 26.1 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.03
6144 bytes (6.1 kB) copied, 0.000186 seconds, 33.0 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
7168 bytes (7.2 kB) copied, 0.000179 seconds, 40.0 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
8192 bytes (8.2 kB) copied, 0.000162 seconds, 50.6 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
9216 bytes (9.2 kB) copied, 0.000218 seconds, 42.3 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
10240 bytes (10 kB) copied, 0.000178 seconds, 57.5 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
16384 bytes (16 kB) copied, 0.00024 seconds, 68.3 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
32768 bytes (33 kB) copied, 0.000393 seconds, 83.4 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
65536 bytes (66 kB) copied, 0.000602 seconds, 109 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.04
131072 bytes (131 kB) copied, 0.001036 seconds, 127 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.07
262144 bytes (262 kB) copied, 0.002015 seconds, 130 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.15
524288 bytes (524 kB) copied, 0.003933 seconds, 133 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.28
1048576 bytes (1.0 MB) copied, 0.00843 seconds, 124 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.57
2097152 bytes (2.1 MB) copied, 0.016713 seconds, 125 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.17
Next run
1024 bytes (1.0 kB) copied, 9.9e-05 seconds, 10.3 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
2048 bytes (2.0 kB) copied, 9.5e-05 seconds, 21.6 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
3072 bytes (3.1 kB) copied, 0.0001 seconds, 31 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
4096 bytes (4.1 kB) copied, 0.002028 seconds, 2.0 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
5120 bytes (5.1 kB) copied, 0.000138 seconds, 37.1 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
6144 bytes (6.1 kB) copied, 0.000143 seconds, 43.0 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
7168 bytes (7.2 kB) copied, 0.00016 seconds, 45 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
8192 bytes (8.2 kB) copied, 0.000148 seconds, 55.4 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
9216 bytes (9.2 kB) copied, 0.000184 seconds, 50.1 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
10240 bytes (10 kB) copied, 0.000174 seconds, 58.9 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
16384 bytes (16 kB) copied, 0.000187 seconds, 87.6 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
32768 bytes (33 kB) copied, 0.000331 seconds, 99.0 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
65536 bytes (66 kB) copied, 0.000654 seconds, 100 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
131072 bytes (131 kB) copied, 0.001164 seconds, 113 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
262144 bytes (262 kB) copied, 0.00265 seconds, 98.9 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
524288 bytes (524 kB) copied, 0.011026 seconds, 47.6 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
1048576 bytes (1.0 MB) copied, 0.016141 seconds, 65.0 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
2097152 bytes (2.1 MB) copied, 0.018541 seconds, 113 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
Previous test repeated 10 times:
time for j in `seq 1 10`; do echo "== $j ==" ;for i in `ls -1`; \
do /usr/bin/time -v dd if=$i of=/dev/null 2>&1 | egrep '(copied|wall)' ; done ; done
[...]
real    0m5.266s
user    0m0.576s
sys     0m1.552s

Without ScanCache

Every run
1024 bytes (1.0 kB) copied, 9.8e-05 seconds, 10.4 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
2048 bytes (2.0 kB) copied, 0.000131 seconds, 15.6 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
3072 bytes (3.1 kB) copied, 0.002143 seconds, 1.4 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
4096 bytes (4.1 kB) copied, 0.000154 seconds, 26.6 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
5120 bytes (5.1 kB) copied, 0.005309 seconds, 964 kB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
6144 bytes (6.1 kB) copied, 0.000184 seconds, 33.4 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
7168 bytes (7.2 kB) copied, 0.000169 seconds, 42.4 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
8192 bytes (8.2 kB) copied, 0.000196 seconds, 41.8 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
9216 bytes (9.2 kB) copied, 0.000195 seconds, 47.3 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
10240 bytes (10 kB) copied, 0.008877 seconds, 1.2 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
16384 bytes (16 kB) copied, 0.000215 seconds, 76.2 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
32768 bytes (33 kB) copied, 0.000349 seconds, 93.9 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.02
65536 bytes (66 kB) copied, 0.000585 seconds, 112 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.04
131072 bytes (131 kB) copied, 0.001066 seconds, 123 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.07
262144 bytes (262 kB) copied, 0.00213 seconds, 123 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.14
524288 bytes (524 kB) copied, 0.004748 seconds, 110 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.28
1048576 bytes (1.0 MB) copied, 0.008783 seconds, 119 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.56
2097152 bytes (2.1 MB) copied, 0.020852 seconds, 101 MB/s
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.13
Previous test repeated 10 times:
time for j in `seq 1 10`; do echo "== $j ==" ;for i in `ls -1`; \
do /usr/bin/time -v dd if=$i of=/dev/null 2>&1 | egrep '(copied|wall)' ; done ; done
[...]
real    0m25.264s
user    0m0.636s
sys     0m1.472s

Conclusion

ScanCache speeds up access to files accessed previously by reducing open() delay.

Overall performance of file system is lower than without ClamFS probably because its user-space nature, and need to call copy_from/to_userspace() for every file operation.

 

Last updated on Thu, 24 Feb 2022 18:35:10 +0000
Copyright (c) 2007 Krzysztof Burghardt <krzysztof@burghardt.pl>

 

Get ClamFS at SourceForge.net. Fast, secure and Free Open Source software downloads   Valid XHTML 1.0!   Valid CSS!  
W3C Link Checker