Following on from yesterday’s benchmark, I’m adding in some ZFS tests.
All hardware is the same.
Of note:
$ zdb | grep ashift
ashift: 9
$ sudo diskinfo -v ada0
Password:
ada0
512 # sectorsize
128035676160 # mediasize in bytes (119G)
250069680 # mediasize in sectors
0 # stripesize
0 # stripeoffset
248085 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
S12PNEACB31368P # Disk ident.
$ sudo smartctl -i /dev/ada0 | grep Sector
Sector Size: 512 bytes logical/physical
create the zpool
[root@bulldog:/home/dan] # zpool create -m /mnt example /dev/ada0 [root@bulldog:/home/dan] # dmesg | grep ada0 ada0 at ahcich1 bus 0 scbus1 target 0 lun 0 ada0:ATA-9 SATA 3.x device ada0: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada0: Command Queueing enabled ada0: 122104MB (250069680 512 byte sectors: 16H 63S/T 16383C) ada0: Previously was known as ad6 [root@bulldog:/home/dan] # mkdir /mnt/dan [root@bulldog:/home/dan] # chown dan:dan /mnt/dan [root@bulldog:/home/dan] # exit root@bulldog:/home/dan # exit [dan@bulldog:~] $
[dan@bulldog:~] $ cd /mnt/dan [dan@bulldog:~] $ ~/bin/ddFileSystem dd if=/dev/zero of=testing32 bs=32k count=300k 307200+0 records in 307200+0 records out 10066329600 bytes transferred in 35.546824 secs (283185063 bytes/sec) dd if=/dev/zero of=testing64 bs=64k count=300k 307200+0 records in 307200+0 records out 20132659200 bytes transferred in 80.051449 secs (251496499 bytes/sec) dd if=/dev/zero of=testing128 bs=128k count=300k 307200+0 records in 307200+0 records out 40265318400 bytes transferred in 171.402642 secs (234916556 bytes/sec) dd if=/dev/zero of=testing256 bs=256k count=300k dd: testing256: No space left on device 210945+0 records in 210944+1 records out 55297835008 bytes transferred in 226.678619 secs (243948173 bytes/sec) dd if=/dev/zero of=testing1024 bs=1024k count=300k dd: testing1024: No space left on device dd if=/dev/zero of=testing2048 bs=2048k count=300k dd: testing2048: No space left on device [dan@bulldog:/mnt/dan] $ ls -lh total 122830455 -rw-r--r-- 1 dan dan 37G Feb 7 18:11 testing128 -rw-r--r-- 1 dan dan 51G Feb 7 18:15 testing256 -rw-r--r-- 1 dan dan 9.4G Feb 7 18:07 testing32 -rw-r--r-- 1 dan dan 18G Feb 7 18:08 testing64 [dan@bulldog:/mnt/dan] $ df -h /mnt Filesystem Size Used Avail Capacity Mounted on example 117G 117G 0B 100% /mnt [dan@bulldog:/mnt/dan] $
dd before filling the SSD
$ ~/bin/ddFileSystem dd if=/dev/zero of=testing32 bs=32k count=300k 307200+0 records in 307200+0 records out 10066329600 bytes transferred in 35.546824 secs (283185063 bytes/sec) dd if=/dev/zero of=testing64 bs=64k count=300k 307200+0 records in 307200+0 records out 20132659200 bytes transferred in 80.051449 secs (251496499 bytes/sec) dd if=/dev/zero of=testing128 bs=128k count=300k 307200+0 records in 307200+0 records out 40265318400 bytes transferred in 171.402642 secs (234916556 bytes/sec) dd if=/dev/zero of=testing256 bs=256k count=300k dd: testing256: No space left on device 210945+0 records in 210944+1 records out 55297835008 bytes transferred in 226.678619 secs (243948173 bytes/sec) dd if=/dev/zero of=testing1024 bs=1024k count=300k dd: testing1024: No space left on device dd if=/dev/zero of=testing2048 bs=2048k count=300k dd: testing2048: No space left on device [dan@bulldog:/mnt/dan] $ ls -lh total 122830455 -rw-r--r-- 1 dan dan 37G Feb 7 18:11 testing128 -rw-r--r-- 1 dan dan 51G Feb 7 18:15 testing256 -rw-r--r-- 1 dan dan 9.4G Feb 7 18:07 testing32 -rw-r--r-- 1 dan dan 18G Feb 7 18:08 testing64 [dan@bulldog:/mnt/dan] $ df -h /mnt Filesystem Size Used Avail Capacity Mounted on example 117G 117G 0B 100% /mnt [dan@bulldog:/mnt/dan] $ rm testing*
dd after SSD filled
I’m doing it this way because that’s what happened in previous tests, more or less.
[dan@bulldog:/mnt/dan] $ rm testing256 dd if=/dev/zero of=testing256 bs=256k count=300k [dan@bulldog:/mnt/dan] $ dd if=/dev/zero of=testing256 bs=256k count=300k 307200+0 records in 307200+0 records out 80530636800 bytes transferred in 316.159015 secs (254715611 bytes/sec) [dan@bulldog:/mnt/dan] $ dd if=/dev/zero of=testing512 bs=512k count=100k dd: testing512: No space left on device 86273+0 records in 86272+0 records out 45231374336 bytes transferred in 186.070643 secs (243087107 bytes/sec) [dan@bulldog:/mnt/dan] $ rm testing* [dan@bulldog:/mnt/dan] $ dd if=/dev/zero of=testing512 bs=512k count=100k 102400+0 records in 102400+0 records out 53687091200 bytes transferred in 210.601851 secs (254922219 bytes/sec) [dan@bulldog:/mnt/dan] $ rm testing* [dan@bulldog:/mnt/dan] $ dd if=/dev/zero of=testing1024 bs=1024k count=100k 102400+0 records in 102400+0 records out 107374182400 bytes transferred in 422.826334 secs (253943933 bytes/sec) [dan@bulldog:/mnt/dan] $ ': df -h /mnt Filesystem Size Used Avail Capacity Mounted on example 117G 100G 17G 85% /mnt
Some smaller blocksizes
These are really interesting. Results range between 206MB/s and 567MB/s:
[dan@bulldog:/mnt/dan] $ ls
[dan@bulldog:/mnt/dan] $ cat ~/bin/ddFileSystem4k
#!/bin/sh
COUNTS="100 200 400 800 1600 3200"
for count in ${COUNTS}
do
CMD="dd if=/dev/zero of=testing${count} bs=4k count=${count}k"
echo '$' ${CMD}
`${CMD}`
done
[dan@bulldog:/mnt/dan] $ ~/bin/ddFileSystem4k
$ dd if=/dev/zero of=testing100 bs=4k count=100k
102400+0 records in
102400+0 records out
419430400 bytes transferred in 0.705185 secs (594780714 bytes/sec)
$ dd if=/dev/zero of=testing200 bs=4k count=200k
204800+0 records in
204800+0 records out
838860800 bytes transferred in 2.350452 secs (356893406 bytes/sec)
$ dd if=/dev/zero of=testing400 bs=4k count=400k
409600+0 records in
409600+0 records out
1677721600 bytes transferred in 6.259230 secs (268039609 bytes/sec)
$ dd if=/dev/zero of=testing800 bs=4k count=800k
819200+0 records in
819200+0 records out
3355443200 bytes transferred in 15.466264 secs (216952407 bytes/sec)
$ dd if=/dev/zero of=testing1600 bs=4k count=1600k
1638400+0 records in
1638400+0 records out
6710886400 bytes transferred in 28.426775 secs (236076247 bytes/sec)
$ dd if=/dev/zero of=testing3200 bs=4k count=3200k
3276800+0 records in
3276800+0 records out
13421772800 bytes transferred in 53.636045 secs (250237929 bytes/sec)
[dan@bulldog:/mnt/dan] $ df -h /mnt
Filesystem Size Used Avail Capacity Mounted on
example 117G 24G 92G 21% /mnt
Again, with deletes between the files
[dan@bulldog:/mnt/dan] $ ls
[dan@bulldog:/mnt/dan] $ cat ~/bin/ddFileSystem4k
#!/bin/sh
COUNTS="100 200 400 800 1600 3200"
for count in ${COUNTS}
do
CMD="dd if=/dev/zero of=testing${count} bs=4k count=${count}k"
echo '$' ${CMD}
`${CMD}`
rm testing${count}
done
[dan@bulldog:/mnt/dan] $ ~/bin/ddFileSystem4k
$ dd if=/dev/zero of=testing100 bs=4k count=100k
102400+0 records in
102400+0 records out
419430400 bytes transferred in 0.722075 secs (580868204 bytes/sec)
$ dd if=/dev/zero of=testing200 bs=4k count=200k
204800+0 records in
204800+0 records out
838860800 bytes transferred in 3.779956 secs (221923424 bytes/sec)
$ dd if=/dev/zero of=testing400 bs=4k count=400k
409600+0 records in
409600+0 records out
1677721600 bytes transferred in 5.745623 secs (291999939 bytes/sec)
$ dd if=/dev/zero of=testing800 bs=4k count=800k
819200+0 records in
819200+0 records out
3355443200 bytes transferred in 11.859253 secs (282938829 bytes/sec)
$ dd if=/dev/zero of=testing1600 bs=4k count=1600k
1638400+0 records in
1638400+0 records out
6710886400 bytes transferred in 27.687562 secs (242379100 bytes/sec)
$ dd if=/dev/zero of=testing3200 bs=4k count=3200k
3276800+0 records in
3276800+0 records out
13421772800 bytes transferred in 55.870071 secs (240231891 bytes/sec)
[dan@bulldog:/mnt/dan] $
Now let’s try it with a partition, and not all the SSD
In this test, we’re doing something slightly different. I’ve heard that not using all the SSD can result in improvments. So let’s try leaving 20% of the SSD unused.
# gpart create -s GPT ada0
ada0 created
# gpart add -b 1000 -a 4k -t freebsd-zfs -s 95G ada0
ada0p1 added
# gpart show ada0
=> 34 250069613 ada0 GPT (119G)
34 966 - free - (483k)
1000 199229440 1 freebsd-zfs (95G)
199230440 50839207 - free - (24G)
# zpool create -m /mnt example /dev/ada0p1
# zpool status
pool: example
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
example ONLINE 0 0 0
ada0p1 ONLINE 0 0 0
errors: No known data errors
# mkdir /mnt/dan
# chown dan:dan /mnt/dan
Doing the dd again
Testing with deletes first (not sure if order matters).
[dan@bulldog:~] $ cd /mnt/dan
[dan@bulldog:/mnt/dan] $ ls -l
total 0
[dan@bulldog:/mnt/dan] $ cat ~/bin/ddFileSystem4k
#!/bin/sh
COUNTS="100 200 400 800 1600 3200"
for count in ${COUNTS}
do
CMD="dd if=/dev/zero of=testing${count} bs=4k count=${count}k"
echo '$' ${CMD}
`${CMD}`
rm testing${count}
done
[dan@bulldog:/mnt/dan] $ ~/bin/ddFileSystem4k
$ dd if=/dev/zero of=testing100 bs=4k count=100k
102400+0 records in
102400+0 records out
419430400 bytes transferred in 0.723318 secs (579870099 bytes/sec)
$ dd if=/dev/zero of=testing200 bs=4k count=200k
204800+0 records in
204800+0 records out
838860800 bytes transferred in 1.542371 secs (543877434 bytes/sec)
$ dd if=/dev/zero of=testing400 bs=4k count=400k
409600+0 records in
409600+0 records out
1677721600 bytes transferred in 5.606008 secs (299272064 bytes/sec)
$ dd if=/dev/zero of=testing800 bs=4k count=800k
819200+0 records in
819200+0 records out
3355443200 bytes transferred in 12.277068 secs (273309819 bytes/sec)
$ dd if=/dev/zero of=testing1600 bs=4k count=1600k
1638400+0 records in
1638400+0 records out
6710886400 bytes transferred in 24.819769 secs (270384723 bytes/sec)
$ dd if=/dev/zero of=testing3200 bs=4k count=3200k
3276800+0 records in
3276800+0 records out
13421772800 bytes transferred in 55.058098 secs (243774728 bytes/sec)
[dan@bulldog:/mnt/dan] $
Testing without deleting the previous file
In this test, we do not remove the previous file when dd’ing to the next one.
[dan@bulldog:/mnt/dan] $ ls
[dan@bulldog:/mnt/dan] $ cat ~/bin/ddFileSystem4k
#!/bin/sh
COUNTS="100 200 400 800 1600 3200"
for count in ${COUNTS}
do
CMD="dd if=/dev/zero of=testing${count} bs=4k count=${count}k"
echo '$' ${CMD}
`${CMD}`
done
[dan@bulldog:/mnt/dan] $ ~/bin/ddFileSystem4k
$ dd if=/dev/zero of=testing100 bs=4k count=100k
102400+0 records in
102400+0 records out
419430400 bytes transferred in 0.704095 secs (595701528 bytes/sec)
$ dd if=/dev/zero of=testing200 bs=4k count=200k
204800+0 records in
204800+0 records out
838860800 bytes transferred in 1.452384 secs (577574984 bytes/sec)
$ dd if=/dev/zero of=testing400 bs=4k count=400k
409600+0 records in
409600+0 records out
1677721600 bytes transferred in 6.010437 secs (279134711 bytes/sec)
$ dd if=/dev/zero of=testing800 bs=4k count=800k
819200+0 records in
819200+0 records out
3355443200 bytes transferred in 17.065366 secs (196622984 bytes/sec)
$ dd if=/dev/zero of=testing1600 bs=4k count=1600k
1638400+0 records in
1638400+0 records out
6710886400 bytes transferred in 25.609126 secs (262050582 bytes/sec)
$ dd if=/dev/zero of=testing3200 bs=4k count=3200k
3276800+0 records in
3276800+0 records out
13421772800 bytes transferred in 56.259421 secs (238569338 bytes/sec)
[dan@bulldog:/mnt/dan] $
And finally, a bonnie++
[dan@bulldog:/mnt/dan] $ bonnie++ -s 66000
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
bulldog.unix 66000M 184 99 235742 27 127575 16 502 99 278025 12 1594 42
Latency 43866us 2071ms 1815ms 18794us 117ms 227ms
Version 1.97 ------Sequential Create------ --------Random Create--------
bulldog.unixathome. -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency 10677us 76us 87us 21396us 27us 51us
1.97,1.97,bulldog.unixathome.org,1,1360307806,66000M,,184,99,235742,27,127575,16,502,99,278025,12,1594,42,16,,,,,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,43866us,2071ms,1815ms,18794us,117ms,227ms,10677us,76us,87us,21396us,27us,51us
[dan@bulldog:/mnt/dan] $












Conclusion?
I’m didn’t publish any conclusions by design.
What do you think the results mean?
How the hell should i know?:)