Posts Tagged benchmarking

Samba vs NFS on DNS-323

So far, I was using Samba to share the files stored on my D-Link DNS-323. However, people tend to say that NFS is quicker than Samba. So let’s benchmark those two protocols and figure out which one is actually quicker.

First of all, here is my configuration:

Server Client
D-Link DNS-323
Linux dlink-5610E5 2.6.12.6-arm1
Samba 3.0.24
UNFS3 0.9.20
Raspberry Pi
Linux alarmpi 3.6.11-15-ARCH+
CIFS utils 6.1-1
NFS utils 1.2.8-9

I used IOzone to benchmark these protocols from the Raspberry Pi. You can find the package for Arch Linux ARM on one of my previous post.

I first mounted the Samba and NFS share drives in the two respective folders /mnt/storage_smb and /mnt/storage_nfs.

I then ran the following commands (not at the same time):

iozone -RazcR -U /mnt/storage_smb -f /mnt/storage_smb/testfile -b smb_excel_output.xls
iozone -RazcR -U /mnt/storage_nfs -f /mnt/storage_nfs/testfile -b nfs_excel_output.xls

You can download the output files here and here.

Or, you can simply have a look at a summary of these two files in the following table which basically compare the average speed (in Kbytes per second) for both Samba and NFS:

Samba NFS
Write 7683 6676
Re-write 7544 6795
Read 21862 50464
Re-read 22383 50210
Random read 6348 6444
Random write 7603 6751
Backward read 5909 5246
Record rewrite 80294 87225
Stride read 15629 11868
Fwrite 7471 6700
Re-fwrite 7494 6671
Fread 7739 7685
Re-fread 7596 7639

As you can see, it looks like NFS is quicker for read operations but slower for write operations than Samba. But please remember that this is true for this very specific configuration ; It could be completely different for another one.

In conclusion, I personally decided to use both Samba and NFS depending of what I need. If I need a read only access to my data, I use NFS. However, if I need to write data, I use Samba.

NB: Another reason why I didn’t completely stop using Samba is because symbolic links don’t work with NFS. Instead, you need to use binding (mounting a folder inside another folder), but this is kind of incompatible with my use of rsync to backup my data. 🙁

, , , , , , ,

No Comments

SD Card Benchmark on a Raspberry Pi

Some time ago, I bought a Raspberry Pi. I am not going to describe what it is here, but you can read more about it on this page.

The first thing you need to buy when you’ve got a Raspberry Pi is a SD card. But the question I asked myself is: “Which one?”. Indeed, there are so many models with different type, capacity and speed. 🙁

I first checked the compatibility list found on the Embedded Linux Wiki:
http://elinux.org/RPi_SD_cards#Working_.2F_Non-working_SD_cards
But this list didn’t help me much. Indeed, out of them, which one should I buy?

This is why I decided to test two SD cards with two different speed:

  • SanDisk SDSDXPA-008G-X46 8GB 95MB/S Extreme Pro SDHC Class10
  • SanDisk SDSDX-032G-FFP 32GB 45MB/S Extreme SDHC Class10

As you can see, the speed of the first one is 95MB/S against 45MB/S for the second one. Does it mean the Raspberry Pi will run twice quicker?
Let’s check it by benchmarking the cards.

I used IOzone to benchmark these cards. Unfortunately, IOzone is not available for ARM on ArchLinux. I wrote a separate article about it.

I ran the exact same command for both cards:

iozone -e -I -a -s 50M -r 4k -r 512k -r 16M -i 0 -i 1 -i 2

Please find below the result for the SD card with a speed of 95MB/S:

                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
   51200       4    1422    1502     5841     5838    5688     878                                                          
   51200     512   20743   20924    22094    22130   22121    8313                                                          
   51200   16384   20090   21349    22413    22514   22458   21351                                                          

The full output can be found here.

And the following is the result for the SD card with a speed of 45MB/S:

                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
   51200       4    1653    1858     4566     4716    3996     755                                                          
   51200     512   20515   19534    21953    22031   21867    4722                                                          
   51200   16384   15841   21240    22311    22390   22384   21177                                                          

The full output can be found here.

So, it looks like the difference is not that big. Indeed, the SD card with a speed of 95MB/S is not twice quicker than the other one. Why is that? In my opinion, this is directly linked to the actual speed of the SD card reader within the Raspberry Pi.
Which means that it doesn’t matter which card you are using, you won’t go further than 22MB/S anyway.

Finally, please find below some other benchmarks on the same topic:

, , ,

3 Comments