New problem:

I'm following all the advice I summarized into the OP of this thread, and
testing on a test system.  (A laptop).  And it's just not working.  I am
jumping into the dedup performance abyss far, far eariler than predicted...


My test system is a laptop with 1.5G ram, c_min =150M, c_max =1.2G
I have just a single sata 7.2krpm hard drive, no SSD.
Before I start, I have 1G free ram (according to top.)  
According to everything we've been talking about, I expect roughly 1G
divided by 376 bytes = 2855696 (2.8M) blocks in my pool before I start
running out of ram to hold the DDT and performance degrades.

I create a pool.  Enable dedup.  Set recordsize=512
I write a program that will very quickly generate unique non-dedupable data:
        #include <stdio.h>
        #include <stdlib.h>
        int main(int argc, char *argv[]) {
                int i;
                int numblocks=atoi(argv[1]);
                // Note: Expect one command-line argument integer.
                FILE *outfile;
                outfile=fopen("junk.file","w");
                for (i=0; i<numblocks ; i++) 
                        fprintf(outfile,"%512d",i);
                fflush(outfile);
                fclose(outfile);
        }

Disable dedup.  Run with a small numblocks.   For example:  time
~/datagenerator 100
Enable dedup and repeat.
They both complete instantly.

Repeat with a higher numblocks...  1000, 10000, 100000...  
Repeat until you find the point where performance with dedup is
significantly different from performance without dedup. 

See below.  Right around 400,000 blocks, dedup is suddenly an order of
magnitude slower than without dedup.

Times to create the file:
numblocks       dedup=off       dedup=verify    DDTsize Filesize
100000          2.5sec          1.2sec          36 MB           49 MB
110000          1.4sec          1.3sec          39 MB           54 MB
120000          1.4sec          1.5sec          43 MB           59 MB
130000          1.5sec          1.8sec          47 MB           63 MB
140000          1.6sec          1.6sec          50 MB           68 MB
150000          4.8sec          7.0sec          54 MB           73 MB
160000          4.8sec          7.6sec          57 MB           78 MB
170000          2.1sec          2.1sec          61 MB           83 MB
180000          5.2sec          5.6sec          65 MB           88 MB
190000          6.0sec          10.1sec         68 MB           93 MB
200000          4.7sec          2.6sec          72 MB           98 MB
210000          6.8sec          6.7sec          75 MB           103 MB
220000          6.2sec          18.0sec         79 MB           107 MB
230000          6.5sec          16.7sec         82 MB           112 MB
240000          8.8sec          10.4sec         86 MB           117 MB
250000          8.2sec          17.0sec         90 MB           122 MB
260000          8.4sec          17.5sec         93 MB           127 MB
270000          6.8sec          19.2sec         97 MB           132 MB
280000          13.1sec         16.5sec         100 MB          137 MB
290000          9.4sec          73.1sec         104 MB          142 MB
300000          8.5sec          7.7sec          108 MB          146 MB
310000          8.5sec          7.7sec          111 MB          151 MB
320000          8.6sec          11.9sec         115 MB          156 MB
330000          9.3sec          33.5sec         118 MB          161 MB
340000          8.3sec          54.3sec         122 MB          166 MB
350000          8.3sec          50.0sec         126 MB          171 MB
360000          9.3sec          109.0sec        129 MB          176 MB
370000          9.5sec          12.5sec         133 MB          181 MB
380000          10.1sec         28.6sec         136 MB          186 MB
390000          10.2sec         14.6sec         140 MB          190 MB
400000          10.7sec         136.7sec        143 MB          195 MB
410000          11.4sec         116.6sec        147 MB          200 MB
420000          11.5sec         220.9sec        151 MB          205 MB
430000          11.7sec         151.3sec        154 MB          210 MB
440000          12.7sec         144.7sec        158 MB          215 MB
450000          12.0sec         202.1sec        161 MB          220 MB
460000          13.9sec         134.7sec        165 MB          225 MB
470000          12.2sec         127.6sec        169 MB          229 MB
480000          13.1sec         122.7sec        172 MB          234 MB
490000          13.1sec         106.3sec        176 MB          239 MB
500000          15.8sec         174.6sec        179 MB          244 MB
550000          14.2sec         216.6sec        197 MB          269 MB
600000          15.6sec         294.2sec        215 MB          293 MB
650000          16.7sec         332.8sec        233 MB          317 MB
700000          19.0sec         269.6sec        251 MB          342 MB
750000          20.1sec         472.0sec        269 MB          366 MB
800000          21.0sec         465.6sec        287 MB          391 MB

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to