Jump to content

SD card performance


Recommended Posts

Warning: This whole thread is only about historical information now since it's 2018 and we can buy inexpensive and great performing A1 rated SD cards in the meantime. Buying anything else is a mistake so directly jump to the end of the thread for performance numbers and recommendations.

 

 

 

Edit: See an early 2017 update at the end of the thread regarding new SD specs also covering random IO performance.

 

Edit 2: Some thoughts/observations on lifespan/reliability of SBC storage: http://tech.scargill.net/a-question-of-lifespan/ (see also/especially the comments there)

 

Edit 3: CNX Software picked up recent performance reports (eg. by Andreas Spiess) and other important issues around SD cards: http://www.cnx-software.com/2017/06/13/micro-sd-cards-for-development-boards-classes-tools-benchmarks-reliability-and-tips-tricks/

 

Edit 4: See an early 2018 update testing real world A1 performance class products at the end of the thread.

 

Edit 5: See here and there for some rather boring but very important information about Armbian's tries to prevent SD cards wearing out too fast.

 

 

SD_Cards.jpg

 

Preparations:

 

I tested 8 different SD/TF cards under identical conditions. I created an Armbian 5.07 image to be used on Banana Pi (A20 SoC with 4.4.6 kernel, ext4 rootfs (Armbian defaults == no journal), 960MHz scaling_max_cpufreq, scaling_governor == performance. All test runs were done using 'iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2' and monitored using 'sudo iostat 5' for anomalies (none detected).

 
Kernel version matters (since with Allwinner's 3.4 kernel sequential throughput is limited to ~16MB/s, with mainline kernel we get close to Banana Pi SDIO implementation's max: ~23MB/s) and filesystem settings matter too (enabled journal for example slows down 4K writes a lot).
 
Sequential speeds:
 
sequential_io.png
 
Random I/O:
 
random_io.png
 
The 4 Samsung cards were bought within the last 3 weeks and manufactured between 09/2015 and 12/2015 according to the card's metadata. Interesting observation: I used three of these cards the first time and they all show identical behaviour especially regarding writes with small record sizes: pretty slow in the beginning and getting faster over time (the Samsung Pro for example started with only 1400KB/s 4K writes and 3 runs later the same test showed 3270KB/s -- maybe an indication that some sort of calibration happened. Anyway: I know why I always repeat tests and do not rely on a single test run)
 
Sequential speed mostly irrelevant / random I/O differs and matters a lot!
 
The SanDisk Extreme Pro has been bought nearly 3 years ago. This card shows superior sequential read/write performance compared to the three Samsung EVOs. But only when used in combination with a host that can make use of these speeds. My MacBook writes 4 times faster an OS image to the Extreme Pro compared to the EVOs. But this doesn't matter at all since the SDIO implementation of the board in question is limited to ~23MB/s (50MHz @ 4 bit). The same sequential write/read speed limitation applies to most SBCs since to be able to exceed this slow mode the voltage the SD/TF card is fed with would've to be adjusted (default 3.3V, the faster modes require a dynamic switch to 1.8V instead which some/most SoCs can perform but if the SBC vendor doesn't implement this you're limited to ~23MB/s).
 
Therefore cards labeled as being capable of "up to 90MB/s" do not perform different than those that can only do "up to 20MB/s" as long as we're talking about sequential transfers since the SD card interface is already the bottleneck. But since we're using SD/TF cards not in cameras but as storage media for the rootfs of an SBC something different is more important: Random I/O. And here performance of cards that are labeled identical ('class 10' for example) differs a lot.
 
All 4 Samsungs outperform the other cards easily in this area. The SanDisk Extreme Pro can not compete regarding random I/O compared to superiour (but mostly irrelevant) sequential transfer speeds. And funnily the 3 other cards show horribly slow random write performance, especially with 16k record size. According to card metadata the 2 Intenso are oemid 0x5048 / manfid: 0x000027 (cheap crap known to die way too early) and I would believe the SanDisk 'class 10' card is a fake or at least uses the same controller as the 2 Intenso since 16K random writes are also way slower than 4K writes.
 
Detailed results (summary table also available as .ods, .xlsx or .txt):
 
Samsung Pro 64GB (brand new) http://sprunge.us/DEYd
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     1399     2709     4927     8189     7752     2463
          102400      16     7132     7288    13872    13893    13906     6461
          102400     512    21500    21548    22515    22512    22512    21541
          102400    1024    21874    21968    22650    22651    22649    21998
          102400   16384    22052    22088    22847    22849    22849    22069

          102400       4     2800     3017     8114     8119     8077     2484
          102400      16     6970     7336    13877    13884    13879     6531
          102400     512    21363    21549    22582    22459    22585    21525
          102400    1024    21998    22016    22767    22764    22763    22077
          102400   16384    22126    22186    22910    22904    22908    22239

          102400       4     3248     3066     8244     8277     8244     2493
          102400      16     6958     7333    13873    13880    13873     6519
          102400     512    21692    21805    22749    22771    22761    21820
          102400    1024    22105    22223    22848    22864    22854    22102
          102400   16384    22214    22224    22916    22923    22919    22150

          102400       4     3273     3056     8209     8220     8166     2501
          102400      16     6976     7325    13861    13885    13859     6544
          102400     512    21540    21611    22713    22710    22725    21576
          102400    1024    21958    22048    22792    22797    22785    21976
          102400   16384    22090    22100    22904    22919    22928    22140

f2fs:
          102400       4     1983     2007     8068     8064     8052     1756
          102400      16     7657     7381    13862    13853    13856     6112
          102400     512    21451    21743    22586    22595    22588    21707
          102400    1024    21927    22197    22727    22732    22721    22167
          102400   16384    22058    22324    22899    22911    22917    22268

data:
                 cid: 1b534d303030303010a2b8063800f96b 
                 csd: 400e00325b590001dcff7f800a4040f1 
                 scr: 02c5800300000000 
                date: 09/2015 
                name: 00000 
                type: SD 
preferred_erase_size: 16777216 
               fwrev: 0x0 
               hwrev: 0x1 
               oemid: 0x534d 
              manfid: 0x00001b 
              serial: 0xa2b80638 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=00000 MODALIAS=mmc:block 
          erase_size: 512 
 
 
Samsung EVO+ 64GB (brand new) http://sprunge.us/NLQd
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     3058     3033     6918     6840     6922     3191
          102400      16    10003    10559    14591    14567    14576    10803
          102400     512    21211    21276    22643    22623    22635    21341
          102400    1024    21534    21604    22792    22793    22792    21614
          102400   16384    21659    21670    22885    22885    22885    21692

          102400       4     3207     3250     7515     7523     7525     3383
          102400      16    11107    12030    14602    14593    14609    12043
          102400     512    21334    21384    22758    22758    22758    21451
          102400    1024    21644    21655    22876    22876    22875    21748
          102400   16384    21700    21711    22944    22944    22948    21735

          102400       4     3263     3334     7518     7526     7527     3389
          102400      16    11146    12026    14604    14594    14608    12049
          102400     512    21187    21251    22609    22613    22588    21260
          102400    1024    21506    21590    22698    22700    22699    21594
          102400   16384    21703    21703    22929    22933    22934    21728

          102400       4     3304     3343     7517     7524     7522     3415
          102400      16    11207    12132    14600    14596    14608    12145
          102400     512    21312    21373    22736    22734    22736    21432
          102400    1024    21641    21701    22885    22885    22882    21768
          102400   16384    21657    21726    22949    22949    22948    21744
          
f2fs:
          102400       4     3407     3347     7524     7530     7516     3450
          102400      16     8268     9925    14593    14599    14600    11123
          102400     512    13853    14986    22775    22784    22776    20936
          102400    1024    14572    15736    22870    22877    22875    20985
          102400   16384    15575    15950    22894    22936    22938    17145

data:
                 cid: 1b534d3030303030105dd7045000fb33 
                 csd: 400e00325b590001dcff7f800a4040f1 
                 scr: 02c5800300000000 
                date: 11/2015 
                name: 00000 
                type: SD 
preferred_erase_size: 16777216 
               fwrev: 0x0 
               hwrev: 0x1 
               oemid: 0x534d 
              manfid: 0x00001b 
              serial: 0x5dd70450 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=00000 MODALIAS=mmc:block 
          erase_size: 512
 
 
Samsung EVO+ 32GB (brand new) http://sprunge.us/heGL
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2978     3168     7502     7508     7507     3146
          102400      16    10791    12151    14592    14582    14597    12226
          102400     512    21375    21403    22810    22812    22807    21491
          102400    1024    21677    21664    22879    22881    22877    21768
          102400   16384    21681    21679    22948    22943    22946    21709

          102400       4     3316     3387     7496     7503     7506     3434
          102400      16    10749    12226    14589    14580    14596    12246
          102400     512    21408    21425    22817    22822    22817    21549
          102400    1024    21620    21742    22927    22928    22925    21782
          102400   16384    21681    21717    22892    22892    22892    21677

          102400       4     3333     3366     7500     7507     7504     3443
          102400      16    11403    12253    14587    14580    14595    12306
          102400     512    21426    21442    22850    22847    22848    21527
          102400    1024    21680    21729    22917    22921    22923    21796
          102400   16384    21641    21677    22894    22892    22894    21694

          102400       4     3346     3414     7486     7505     7506     3453
          102400      16    11434    12306    14592    14582    14598    12334
          102400     512    21321    21407    22711    22716    22710    21474
          102400    1024    21648    21627    22808    22854    22855    21707
          102400   16384    21772    21734    22949    22950    22949    21723
          
f2fs:
          102400       4     3350     3423     7498     7504     7492     3514
          102400      16     9465     9818    14580    14588    14587     9107
          102400     512    13910    15319    22706    22710    22706    20576
          102400    1024    14776    16229    22855    22858    22853    20642
          102400   16384    15859    16209    22917    22934    22935    18968

data:
                 cid: 1b534d30303030301049fb02a300fc63 
                 csd: 400e00325b590000ee7f7f800a404055 
                 scr: 02b5800200000000 
                date: 12/2015 
                name: 00000 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x1 
               oemid: 0x534d 
              manfid: 0x00001b 
              serial: 0x49fb02a3 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=00000 MODALIAS=mmc:block 
          erase_size: 512 
 
 
Samsung EVO 64GB (already used some time) http://sprunge.us/DUOS
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     3233     3339     7547     7557     7561     3392
          102400      16    11326    12256    14628    14618    14636    12237
          102400     512    21248    21333    22682    22684    22680    21402
          102400    1024    21487    21640    22805    22806    22805    21688
          102400   16384    21747    21756    22938    22940    22939    21798

          102400       4     3358     3414     7545     7557     7561     3470
          102400      16    10393    12281    14626    14635    14632    12304
          102400     512    21265    21407    22637    22636    22633    21425
          102400    1024    21614    21653    22790    22789    22790    21743
          102400   16384    21747    21689    22889    22888    22888    21679

          102400       4     3353     3406     7546     7556     7561     3475
          102400      16    11348    12306    14628    14620    14636    12312
          102400     512    21288    21388    22696    22700    22690    21444
          102400    1024    21662    21634    22852    22854    22852    21753
          102400   16384    21715    21745    22891    22892    22890    21775

          102400       4     3338     3405     7546     7544     7557     3463
          102400      16    11377    12253    14623    14608    14636    12248
          102400     512    21325    21426    22728    22729    22723    21443
          102400    1024    21625    21702    22799    22800    22790    21701
          102400   16384    21757    21737    22943    22943    22943    21789 

f2fs:
          102400       4     3347     3411     7534     7544     7527     3514
          102400      16     8995     9460    14613    14618    14620     9751
          102400     512    14407    15388    22844    22850    22844    21201
          102400    1024    14251    15997    22934    22940    22937    20626
          102400   16384    15878    16186    22936    22942    22931    17273

data:
                 cid: 1b534d3030303030104030047600fc11 
                 csd: 400e00325b590001dcff7f800a4040f1 
                 scr: 02c5800300000000 
                date: 12/2015 
                name: 00000 
                type: SD 
preferred_erase_size: 16777216 
               fwrev: 0x0 
               hwrev: 0x1 
               oemid: 0x534d 
              manfid: 0x00001b 
              serial: 0x40300476 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=00000 MODALIAS=mmc:block 
          erase_size: 512 
 
 
SanDisk Extreme Pro 8GB (already used some time) http://sprunge.us/ZPFZ
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2828     2886     8380     8376     8357     1250
          102400      16    11725    11702    15923    15901    14903     3242
          102400     512    20692    20061    22835    22829    22808     3078
          102400    1024    19709    21215    22881    22881    22867     5981
          102400   16384    19986    21296    22959    22956    22956    21269

          102400       4     2830     2939     8442     8439     8170     1277
          102400      16    11471    12395    15995    15996    15905     3337
          102400     512    19761    21076    22852    22849    22833     3058
          102400    1024    20702    20241    22913    22908    22899     5985
          102400   16384    21009    20231    22961    22961    22960    21275

          102400       4     2901     3010     8421     8428     8152     1275
          102400      16    11453    12369    15976    15985    15924     3350
          102400     512    19662    20955    22671    22663    22649     3053
          102400    1024    20664    20204    22855    22852    22847     5982
          102400   16384    21006    20243    22958    22955    22955    21270

          102400       4     2903     3026     8442     8448     8184     1274
          102400      16    11450    12393    16004    16010    15931     3347
          102400     512    19682    20997    22695    22693    22678     3056
          102400    1024    20715    20246    22931    22926    22921     5987
          102400   16384    21008    20250    22965    22962    22963    21262

f2fs:
          102400       4     3028     3047     8201     8216     8128     1300
          102400      16    12319    12488    15882    15882    15844     3247
          102400     512    19908    20613    22699    22707    22705     3263
          102400    1024    19587    20926    22908    22921    22915     5699
          102400   16384    19627    20854    22941    22952    22953    18046

data:
### mmc0:e624 info:

                 cid: 0353445355303847801013315600d69b 
                 csd: 400e00325b5900003b377f800a4040af 
                 scr: 0235800300000000 
                date: 06/2013 
                name: SU08G 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x8 
               oemid: 0x5344 
              manfid: 0x000003 
              serial: 0x10133156 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SU08G MODALIAS=mmc:block 
          erase_size: 512
 
 
SanDisk 'Class 10' 8GB (already used some time) http://sprunge.us/OHjT
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2221     2258     7937     7938     7920      789
          102400      16     6762     7252    15545    15582    14623      107
          102400     512     7663    11468    22813    22814    22752     2803
          102400    1024     8429    11789    22942    22943    22938     4926
          102400   16384     9314    10608    22932    22931    22932    10470
          
f2fs: not worth to measure

data:
                 cid: 035344534c30384780437635a900f78f 
                 csd: 400e00325b5900003b377f800a4040af 
                 scr: 0235800100000000 
                date: 07/2015 
                name: SL08G 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x8 
               oemid: 0x5344 
              manfid: 0x000003 
              serial: 0x437635a9 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SL08G MODALIAS=mmc:block 
          erase_size: 512 
 
 
Intenso 'Class 10' 16GB (already used some time) http://sprunge.us/LUMZ
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     1794     1828     7211     7212     6085      465
          102400      16     6378     6298    12541    12536    11668       32
          102400     512    10247    10126    22126    21508    22036     1040
          102400    1024    10529    10114    22403    22404    21260     2072
          102400   16384    10800    10366    22544    22545    22543     8896

f2fs: not worth to measure

data:
                 cid: 2750485344313647300133870f00e5e1 
                 csd: 400e00325b590000734f7f800a40001b 
                 scr: 0235800301000000 
                date: 05/2014 
                name: SD16G 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x3 
               oemid: 0x5048 
              manfid: 0x000027 
              serial: 0x0133870f 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SD16G MODALIAS=mmc:block 
          erase_size: 512 
 
 
Intenso 'Class 4' 4GB (already used some time) http://sprunge.us/GbAY
 

 

ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     1272     1303     7799     7865     6380      140
          102400      16     5270     5177    10395    10398     9655       37
          102400     512     9054     9713    15676    15727    15673     1199
          102400    1024     9199     9988    15878    15878    15847     2332
          102400   16384     9837     9640    15924    14124    15921     8077

f2fs: not worth to measure

data:
                 cid: 27504853443447423001b280db00f2fd 
                 csd: 400e00325b5900001da77f800a40002d 
                 scr: 0235800001000000 
                date: 02/2015 
                name: SD4GB 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x3 
               oemid: 0x5048 
              manfid: 0x000027 
              serial: 0x01b280db 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SD4GB MODALIAS=mmc:block 
          erase_size: 512 
 
 
Some updates from Igor (still showing superiour EVO results but the clear winner is ODROID's eMMC module with SD card adapter):
 
Transcend Premium 300x 16GB (almost new) http://sprunge.us/UcSD

 

 

 


ext4:    
															  random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2410     2501     6895     6892     6450     1553
          102400      16     5530     5882    15385    15388    15056     2845
          102400     512    11266    11187    22825    22825    22696    10355
          102400    1024    12479    12674    22950    22952    22937    10549
          102400   16384    12547    12928    22961    22962    22961    11600

          102400       4     2369     2533     6837     6837     6713     1344
          102400      16     5739     7179    15224    15254    14952     3906
          102400     512    11598    12743    22810    22814    22698     9600
          102400    1024    11270    11806    22924    22927    22819     9872
          102400   16384    11796    11779    22966    22964    22937    11117         

data:
		  
                 cid: 744a45555344553110458a05ea00eb79 
                 csd: 400e00325b59000075cd7f800a4000c1 
                 scr: 0235800300000000 
                date: 11/2014 
                name: USDU1 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x1 
               oemid: 0x4a45 
              manfid: 0x000074 
              serial: 0x458a05ea 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=USDU1 MODALIAS=mmc:block 
          erase_size: 512   

 

 

 

Sandisk Extreme Pro 8Gb (almost new) http://sprunge.us/aDJJ

 

 

 


ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2750     2872     8381     8380     8162     1241
          102400      16    11780    12351    16092    16094    15059     3070
          102400     512    20417    20061    22846    22844    22818     3025
          102400    1024    19764    21301    23003    23004    22992     5912
          102400   16384    19963    21291    22965    22962    22961    21269

          102400       4     3000     3128     8375     8376     7938     1254
          102400      16    11410    12340    16058    16062    15964     3202
          102400     512    20292    20962    22710    22710    22690     3003
          102400    1024    19709    21204    22888    22885    22879     5907
          102400   16384    19959    21289    22959    22958    22960    21262

          102400       4     2909     3042     8383     8386     8109     1251
          102400      16    11399    12348    16081    16078    16039     3184
          102400     512    20427    21082    22894    22891    22863     3004
          102400    1024    19738    21260    22945    22947    22929     5910
          102400   16384    19946    21283    22963    22969    22963    21272		  

data:
                 cid: 0353445355303847800fa814ae00eb5f 
                 csd: 400e00325b5900003b377f800a4040af 
                 scr: 0235800300000000 
                date: 11/2014 
                name: SU08G 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x8 
               oemid: 0x5344 
              manfid: 0x000003 
              serial: 0x0fa814ae 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SU08G MODALIAS=mmc:block 
          erase_size: 512   

 

 

 

Hardkernel eMMC 8G via SD reader (brand new) http://sprunge.us/SHXF

 

 

 


ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4    11485    12921     7044     7060     7010    11957
          102400      16    17668    19117    17584    17579    17467    16706
          102400     512    22711    22641    22962    22967    22942    21219
          102400    1024    22800    22871    23056    23054    23041    22737
          102400   16384    22803    22852    22990    22989    22989    22764        

          102400       4    11412    13181     7072     7085     7026    12612
          102400      16    17577    17969    17587    17616    17482    18382
          102400     512    22683    22809    22959    22956    22933    22360
          102400    1024    21974    22807    22975    22979    22945    22645
          102400   16384    22815    22832    22983    22984    22982    22800

          102400       4    11367    13001     7073     7090     7033    12933
          102400      16    17841    17579    17486    17522    17387    18909
          102400     512    22635    22716    22875    22875    22848    22509
          102400    1024    22602    22713    22967    22964    22946    22657
          102400   16384    22762    22766    22986    22985    22984    22763		  
		  
data:

                 cid: 15010038474e44335201b5c3406d13c7 
                 csd: d02701320f5903fff6dbffef8e40400d 
                 prv: 0x1 
                date: 01/2016 
                name: 8GND3R 
                type: MMC 
         rel_sectors: 0x1 
preferred_erase_size: 524288 
               fwrev: 0x0100000000000000 
               hwrev: 0x0 
               oemid: 0x0100 
enhanced_area_offset: 18446744073709551594 
         ffu_capable: 1 
  raw_rpmb_size_mult: 0x4 
              manfid: 0x000015 
              serial: 0xb5c3406d 
              uevent: DRIVER=mmcblk MMC_TYPE=MMC MMC_NAME=8GND3R MODALIAS=mmc:block 
          erase_size: 524288 
  enhanced_area_size: 4294967274   

 

 

 

Sandisk Ultra 8Gb (old and very used) http://sprunge.us/OWZf

 

 

 


ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     1353     1378     7139     7139     7127      687
          102400      16     7825     7565    14797    14815    13876       54
          102400     512    12511    14238    22759    22760    22691     1717
          102400    1024    12623    14502    22917    22918    22878     3474
          102400   16384    14251    13622    22925    22927    22923    14273

data:

                 cid: 03534453553038478004add48400cc2b 
                 csd: 400e00325b5900003b377f800a4040af 
                 scr: 0235800100000000 
                date: 12/2012 
                name: SU08G 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x8 
               oemid: 0x5344 
              manfid: 0x000003 
              serial: 0x04add484 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SU08G MODALIAS=mmc:block 
          erase_size: 512  

 

 

 

Sandisk 8GB (almost new) http://sprunge.us/iViT

 

 

 


ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2230     2207     7700     7700     7697      784
          102400      16     6793     7338    15329    15352    14718      107
          102400     512     8931    10596    22591    22595    22588     2741
          102400    1024     9541    11083    22799    22796    22797     4491
          102400   16384     9944    10954    22926    22929    22861    11421

          102400       4     2356     2232     7793     7795     7773      750
          102400      16     7570     7320    15445    15458    15445      109
          102400     512     9057    10621    22734    22736    22688     2802
          102400    1024     8573    10944    22827    22827    22789     5271
          102400   16384     9400    11379    22922    22925    22923    10981             		  

          102400       4     2335     2375     7774     7773     7766      764
          102400      16     7314     7066    15413    15431    15377      108
          102400     512     8610    11666    22744    22742    22736     2718
          102400    1024     8684    11466    22934    22934    22929     5547
          102400   16384     9369    11400    22931    22934    22930    10761     
		  
data: 

                 cid: 035344534c303847804376351700f7db 
                 csd: 400e00325b5900003b377f800a4040af 
                 scr: 0235800100000000 
                date: 07/2015 
                name: SL08G 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x8 
               oemid: 0x5344 
              manfid: 0x000003 
              serial: 0x43763517 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SL08G MODALIAS=mmc:block 
          erase_size: 512   

 

 

 

Sandisk 8G (new) http://sprunge.us/XHjj

 

 

 


ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     1790     1849     8530     8527     8354      876
          102400      16     7343     7431    16423    16456    15852       52
          102400     512    12041    13073    22596    22596    22552     1652
          102400    1024    12172    13216    22805    22807    22791     3319
          102400   16384    13069    13276    22943    22943    22941    12862                     

          102400       4     1954     2007     8586     8587     7975      876
          102400      16     7331     7569    16417    16440    16364       52
          102400     512    12179    13225    22738    22737    22726     1666
          102400    1024    12312    13423    22949    22948    22943     3348
          102400   16384    13184    13435    22952    22952    22952    13050       

          102400       4     1857     1914     8577     8579     8539      886
          102400      16     7387     7649    16497    16526    16446       52
          102400     512    12067    13103    22839    22846    22838     1650
          102400    1024    12155    13263    22982    22985    22979     3315
          102400   16384    13067    13240    22952    22954    22954    12874

data:
                 cid: 035344534c3038478043a20b9a0103d7 
                 csd: 400e00325b5900003b377f800a4040af 
                 scr: 0235800100000000 
                date: 03/2016 
                name: SL08G 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x8 
               oemid: 0x5344 
              manfid: 0x000003 
              serial: 0x43a20b9a 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SL08G MODALIAS=mmc:block 
          erase_size: 512 

 

 

 

Transcend 8Gb (used) http://sprunge.us/NTRT

 

 

 


ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2190     2201     7646     7678     7279      780
          102400      16     3705     5449    15554    15558    15410     1786
          102400     512     6653     7261    20779    20847    20833     4779
          102400    1024     7172     7548    20954    20951    20944     5887
          102400   16384     7242     7138    20800    20937    20937     6983    

          102400       4     2259     2372     7645     7651     7529      841
          102400      16     5418     6149    15722    15718    15509     2907
          102400     512     6742     7474    20737    20812    20801     4822
          102400    1024     7115     7074    20816    20881    20869     5988
          102400   16384     6808     7155    20925    20953    20947     7255

data:
                 cid: 744a45555344202002c9409e2f00ec63 
                 csd: 400e00325b5900003bcd7f800a400041 
                 scr: 0235800100000000 
                date: 12/2014 
                name: USD   
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x2 
               hwrev: 0x0 
               oemid: 0x4a45 
              manfid: 0x000074 
              serial: 0xc9409e2f 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=USD   MODALIAS=mmc:block 
          erase_size: 512  

 

 

 

Samsung EVO 32Gb (brand new) http://sprunge.us/bTQh

 

 

 


ext4:
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2886     3256     7620     7627     7625     3419
          102400      16     9870    10306    14685    14672    14687     9314
          102400     512    21362    21398    22755    22758    22752    21462
          102400    1024    21631    21666    22829    22832    22832    21719
          102400   16384    21746    21789    22942    22944    22942    21768         

          102400       4     2675     3354     7636     7640     7641     3219
          102400      16    11198    12135    14696    14688    14703    12177
          102400     512    21368    21399    22773    22773    22766    21478
          102400    1024    21639    21647    22852    22853    22853    21752
          102400   16384    21665    21718    22902    22900    22900    21725

          102400       4     3308     3373     7629     7639     7590     3433
          102400      16    10232    12149    14696    14687    14700    12176
          102400     512    21427    21458    22846    22850    22845    21565
          102400    1024    21638    21727    22857    22857    22856    21726
          102400   16384    21773    21742    22955    22952    22953    21729    

data: 
                 cid: 1b534d3030303030107d4655c801022d 
                 csd: 400e00325b590000ee7f7f800a404055 
                 scr: 02b5800200000000 
                date: 02/2016 
                name: 00000 
                type: SD 
preferred_erase_size: 4194304 
               fwrev: 0x0 
               hwrev: 0x1 
               oemid: 0x534d 
              manfid: 0x00001b 
              serial: 0x7d4655c8 
              uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=00000 MODALIAS=mmc:block 
          erase_size: 512  

 

 

 
 
Further readings:

Conclusions:

  • If the board's SD card interface is the bottleneck since it's not supporting the faster SDIO modes using expensive cards that exceed the interface's maximum sequential bandwidth is useless. An expensive Samsung Pro Plus won't be faster than a way more cheap EVO when it's about sequential transfer speeds since you will stay at ~22MB/s anyway
  • Sequential read and especially write speeds are all the SD association's speed ratings are about (to ensure reliable recording of videos/images in cameras/recorders)
  • When an SD card is used in an SBC sequential speeds aren't that important. It's all about random I/O, especially with small block sizes (reading and writing small random chunks of data from/to the card)
  • No commonly used 'random I/O' speed ratings exist so you have to check the card in question prior to usage or rely on appropriate benchmarks (see the two links directly above). Again: the 'speed class' won't tell you anything. You can get two different 'class 10' cards that differ by 500% or even more regarding real world storage performance (again: random I/O matters). In the example above the Intenso 'class 10' card is 385 slower compared to the EVOs when it's about 16K random writes (good luck if you have a database running that uses this page size)
  • Interestingly more expensive cards are outperformed by cheaper ones (the EVOs show a better overall performance compared to the Samsung Pro since sequential speeds are limited by the interface)
  • One extreme example: Using an identical cloned installation that was somewhat outdated on the small 4GB Intenso card and on the 64GB EVO resulted in the following times for an 'apt-get upgrade' (+200 packages): EVO less than 6 minutes vs. 390 minutes (yes, ~6.5 hours) with the Intenso. The time to finish depends largely on fast random writes.
  • It's easy to test the card in question when running Armbian since we ship with iozone. Therefore simply execute the iozone call from the first paragraph after logging in as a normal user. Starting with Armbian 5.06 a even better method exists that also tests the whole card for errors: armbianmonitor -c will report precisely both performance and health state of your card
Link to comment
Share on other sites

Toshiba Memory Exceria M301 8GB MicroSDXC Class 10 48 Mbps

http://sprunge.us/bSfN

brand new card, result of 3rd test

        Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
        Output is in kBytes/sec
        Time Resolution = 0.000001 seconds.
        Processor cache size set to 1024 kBytes.
        Processor cache line size set to 32 bytes.
        File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
          102400       4      637      629     7416     7420     6402      611
          102400      16     6997     7375    10210    10654    10091       63
          102400     512    16026    15845    22069    22070    21991     2022
          102400    1024    16468    16261    22488    22488    22443     4027
          102400   16384    16558    16217    22443    22442    22440    12880
Link to comment
Share on other sites

Samsung Memory 32 GB EVO

http://sprunge.us/NVTg

brand new card, it should be 10th test (i cannot scroll it up)

    Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
    Output is in kBytes/sec
    Time Resolution = 0.000001 seconds.
    Processor cache size set to 1024 kBytes.
    Processor cache line size set to 32 bytes.
    File stride size set to 17 * record size.
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     3365     3419     7577     7589     7588     3483
          102400      16    11342    12297    14648    14640    14654    12303
          102400     512    21408    21468    22814    22814    22814    21464
          102400    1024    21654    21708    22871    22866    22869    21764
          102400   16384    21703    21737    22950    22948    22949    21786
Link to comment
Share on other sites

Kingston 16GB Micro SDHC Card 90 MB/s UHS-I U3 + Adapter - Class 10

used card

    Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
    Output is in kBytes/sec
    Time Resolution = 0.000001 seconds.
    Processor cache size set to 1024 kBytes.
    Processor cache line size set to 32 bytes.
    File stride size set to 17 * record size.
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4      710      705     9292     9296     7777      685
          102400      16     8510     8595    11731    12567    11787       72
          102400     512    20311    19950    22217    22220    22144     2185
          102400    1024    19277    20341    22538    22540    22497     4330
          102400   16384    20925    20539    22575    22574    22572    15891 

/var/log/armhwinfo.log has been uploaded to http://sprunge.us/Lihf

 

 

EDIT: second run, same card

                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4      712      698     9286     9285     7804      686          
          102400      16     8444     8633    11652    12562    11775       72
          102400     512    20264    19939    22124    22126    22040     2187
          102400    1024    19252    20345    22474    22475    22433     4302
          102400   16384    20934    20526    22566    22568    22564    15537
Link to comment
Share on other sites

In this 'Let's start a collective benchmark' thread might appear a few other results (and 4 cards are already there that are missing here): 

 

But IMO we can already sum it up: 

  • On boards that only implement the slowest SDIO mode (4 bit @ 50 MHz) the SDIO interface between SoC and SD card becomes the bottleneck when we're talking about sequential transfer speeds. You won't exceed ~23MB/s anyway. Therefore choosing cards where sequential write/read exceed this treshold is somewhat useless unless you use them also somewhere else where the host is capable of higher speeds (this was one of my former use cases: burning OS images in minimum time with +80 MB/s on my laptop -- now mostly irrelevant since FEL/NFS booting is way more fast and convenient when it's about testing new Armbian images)
  • Many 'normal' SanDisk, Toshiba and Transcend cards aren't that fast and show a strange random I/O write weakness with 16k record size (does not apply to the more/most expensive series from the same vendors!)
  • The speed differences when we're talking about small record sizes (the typical card accesses when you put your rootfs or user homes on SD card) vary a lot, especially when it's about random I/O and especially random writes
  • To my surprise the rather cheap Samsung EVOs in our scenario were as fast as the more expensive EVO+ (these show higher potential sequential performance you can't make use of if the SDIO implementation is already the bottleneck) and outperform the even more expensive Samsung Pros in most areas. The EVO's sequential write speeds are advertised as '10 MB/s' but in reality that's something +20 MB/s at least with the few samples we tested with
  • The top performer was Hardkernel's eMMC module combined with their Micro SD adapter. Sequential transfer speeds limited as with the others but random I/O simply rocks. You get what you pay for  ;)

Things to mention:

  • Boards exist that do not share the slow SDIO limitation as our test boards using Allwinner's A20. On these random I/O might be nearly identical but the sequential speed limitation of ~22/23 MB/s isn't existent. With these boards you might see huge differences when using more expensive branded cards as long as we're talking about sequential transfer speeds (writing/reading huge amounts of data constantly)
  • Regarding more recent SoCs you always have to differentiate between SoC and implementation/board. For example Allwinner's cheap 64-bit A64 is able to use the faster SDIO modes. But on cheap boards like Pine64 this isn't implemented (requires on-the-fly voltage switching between 3.3V and 1.8V for the faster modes). A64 is also able to access eMMC which could be magnitudes faster than SD cards. But since some of the needed eMMC pins are already used for other stuff on the Pine64 you're limited to the slowest SDIO access mode (which also means: all performance numbers above are valid for Pine64 -- I did some cross checks to confirm)
  • Please keep in mind that the Kingston results above as well as all results for cheap 'normal' SanDisk, Toshiba or Transcend cards are hard to interpret. Kingston buys flash chips and controllers on spot markets and combines whatever is cheap at the moment. Therefore you get the irrelevant sequential speeds as advertised but random I/O might vary between different batches a lot (please remember: On SBCs random I/O is more important)
  • Same applies to the cheap SanDisk, Toshiba and Transcend cards, especially if the tested cards are a few years old. Chances are great that you now get a card that is labeled identical but features both a new controller and new NAND chips that are many times faster when we're talking about random I/O
  • Always remember that there are a few renowned storage brands that just buy bunches of unknown flash chips to combine them with unknown controllers. Both performance and reliability might vary a lot between different batches
  • Then there exist manufacturers that own NAND factories, produce their own controllers, have engineers that do not just think about optimal combinations but realize them and ship final products. Think about the difference to the aforementioned group when buying cards

And finally... reliability:

  • You read all of the above and thought 'Well, what can be wrong ordering 5 of these cheap and performant EVO?' Maybe, that you get something different. Fraud/counterfeit cards are still a massive problem, so always test any card you buy directly after purchase. Always! No excuses! It's really easy and worth the efforts (more info)
  • What about longevity? SD cards were made for cameras/recorders (sequential transfers, access pattern: mostly idle). This is an absolutely different use case than using these cards with an SBC, especially when a lot of random I/O happens (Armbian already helps here with a rather high commit interval: with our defaults all disk related changes are collected and then written to the card just every 10 minutes)
  • I talked recently to someone who deploys lots of devices built of SBCs relying on SD cards. His conclusion: Never ever buy anything again but SanDisk Extreme Plus (not Pro -- yes, those that are twice as expensive ;) ). The costs to replace a broken card at a customer's location are many times higher than buying reliable hardware in the beginning
  • What to do if this is not your situation but you still care about reliability/longevity? You can try to do burn-in tests (maybe lasting a few months/years of continual random writes/reads and results with no meaning since the manufacturer exchanged the controller and/or NAND dies in the meantime) or you take the trust the vendor has into his own products into account. Choosing cards with a warranty of 10 years or even more is not the worst choice in such a situation.
Link to comment
Share on other sites

In this 'Let's start a collective benchmark' thread might appear a few other results (and 4 cards are already there that are missing here): 

As a moderator you should be able to move single messages from one topic to another.

 

Armbian already helps here with a rather high commit interval: with our defaults all disk related changes are collected and then written to the card just every 10 minutes

Unless software explicitly bypasses cache for writing.

 

Choosing cards with a warranty of 10 years or even more is not the worst choice in such a situation.

SSH keys, (almost) plaintext passwords and other stuff is not something you want to give to someone if card becomes read-only and you can't erase any data without physically damaging the card (or using high voltage).

Link to comment
Share on other sites

As a moderator you should be able to move single messages from one topic to another.

 

SSH keys, (almost) plaintext passwords and other stuff is not something you want to give to someone if card becomes read-only and you can't erase any data without physically damaging the card (or using high voltage).

 

As a moderator I already created so much mess that I better stay away from this ;)

 

People are also continually submitting new results in the other thread so we should try to use this thread here for drawing conclusions (one below). And you're right: Returning a used/read-only SSD card if you're not allowed to totally destroy it is not a good idea if it contains sensitive data. But I spoke more about the amount of trust a vendor has in his own products if he gives you a 10 year warranty.

 

Some interesting EVO/EVO+ performance comparisons

 

One interesting conclusion can already be drawn: It's already known that better SD card controllers use parallelism. In case there are enough NAND dies used on the card, a good controller starts to implement stuff known as RAID-0 from disks. Reading/writing in parallel to different NAND chips which increases performance. In the meantime we got results for Samsung EVO and EVO+ of all sizes up to 64 GB. And it seems the magical size limit is 32GB:

 

 

 

Samsung EVO 8GB (02/2015)

                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2200     1566     6410     6683     6164      904
          102400      16     6012     7033    14437    14704    14169     2649
          102400     512     7962     9815    21489    21360    20575     4009
          102400    1024     9289    13453    22043    22037    21919     6692
          102400   16384    11469    11671    22836    22869    22823    11764

Samsung EVO 16GB (10/2015)
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     2310     2299     6679     6674     6562     1310
          102400      16     6313     6716    15062    15140    14668     3962
          102400     512     9232    11316    22431    22425    22291     9952
          102400    1024    10457    12193    22704    22703    22568     9447   
          102400   16384    10818    12223    22712    22713    22662    11409

Samsung EVO 32GB (02/2016)
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     3308     3373     7629     7639     7590     3433
          102400      16    10232    12149    14696    14687    14700    12176
          102400     512    21427    21458    22846    22850    22845    21565
          102400    1024    21638    21727    22857    22857    22856    21726
          102400   16384    21773    21742    22955    22952    22953    21729

Samsung EVO PLUS 32GB (12/2015)
                                                              random    random 
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     3346     3414     7486     7505     7506     3453
          102400      16    11434    12306    14592    14582    14598    12334
          102400     512    21321    21407    22711    22716    22710    21474
          102400    1024    21648    21627    22808    22854    22855    21707
          102400   16384    21772    21734    22949    22950    22949    21723

Samsung EVO 64GB (12/2015)
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     3338     3405     7546     7544     7557     3463
          102400      16    11377    12253    14623    14608    14636    12248
          102400     512    21325    21426    22728    22729    22723    21443
          102400    1024    21625    21702    22799    22800    22790    21701
          102400   16384    21757    21737    22943    22943    22943    21789

Samsung EVO PLUS 64GB (12/2015)
                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     3304     3343     7517     7524     7522     3415
          102400      16    11207    12132    14600    14596    14608    12145
          102400     512    21312    21373    22736    22734    22736    21432
          102400    1024    21641    21701    22885    22885    22882    21768
          102400   16384    21657    21726    22949    22949    22948    21744

 

 

 

The EVO and EVO+ we tested do not perform different since they would only differ regarding higher sequential speeds if the SBC's SDIO implementation wouldn't already be the bottleneck. So spending more money for an EVO+ when used with these sorts of SBCs is useless. More interestingly random I/O is also identical if the card's capacity is 32GB or higher (due to parallelism, see before). Same can be seen when it's about sequential writes: EVOs with less than 32GB seem to use only one NAND die while on the 32GB model data will be written to two in parallel which leads to twice the throughput.

 

Therefore choosing an EVO with 32GB capacity will lead to better overall storage performance than when choosing one with smaller capacity (beware: that does only apply to EVOs or in general: cards that have been tested thoroughly. No conclusions can be drawn regarding no-name cards, Kingston, PNY and the like since you never know which controllers they use in a specific production batch). It would be interesting how a 16GB EVO+ behaves (maybe using more parallelism and showing higher random I/O and sequential writes than a 16GB EVO). But given the low prices for these cards today I would simply choose a 32GB and enjoy 15 GiB more useable capacity.

Link to comment
Share on other sites

You're writing about SD card speed but what about reliability? Is eMMC more reliable than SD card (ex. Samsung EVO)?

 

Well, I talked about realibility already -- please see above. At least with onboard eMMC you can't get fraud flash storage as it's pretty common with SD/TF cards.

 

And regarding longevity/reliability I would assume it depends on the use case. If you constantly have to write large amounts of random data to media better consider using SD cards in this scenario (since it's a bit challenging to replace onboard eMMC compared to switching SD cards ;) )

 

In case I would have to put data of value on any media I always try to fight data corruption (using ZFS or btrfs and periodic scrubbing and also sending snapshots to another device to have a safe backup)

Link to comment
Share on other sites

Some quick test with f3write on eMMC on Orange Pi+ 2E. Writing speed starts with excellent 24MB/s. After approx. 3GB written data the writing rate drops nearly instantly to 7,5 MB/s and stays for it until the end of the 12GB.

Any clue why this happens? Reading rate is about 60MB/s, not so bad.

Link to comment
Share on other sites

Writing speed starts with excellent 24MB/s. After approx. 3GB written data the writing rate drops nearly instantly to 7,5 MB/s and stays for it until the end of the 12GB.

 

24MB/s is not that much or in other words: An indication that F3 uses rather small block sizes. Please compare with post #45 and #48 here: http://forum.armbian.com/index.php/topic/990-testers-wanted-sd-card-performance/?p=9886

 

Would be interesting if it's a thermal issue or not (I had the same issues on Beelink X2's eMMC way early)

Link to comment
Share on other sites

I think it is because to move data you first write it in RAM and Linux uses all the

available RAM for it.

In that case at the beginning the writing speed is lying in fact it is reading speed.

That behavior was quite surprising when writing on floppy disks.

Link to comment
Share on other sites

I think it is because to move data you first write it in RAM and Linux uses all the available RAM for it.

 

That's the reason I use iozone with test sizes twice the amount of available DRAM. Simply test it out and compare

iozone -e -I -a -s 4096M -r 16384k -i 0 -i 1
iozone -e -I -a -s 4096M -r 4k -i 0 -i 1

to get an idea what's important (block size). BTW: Both tests above are rather stupid since we're interested in random I/O unless we want to use the eMMC later as data logger (only then sequential transfer speeds are interesting -- this is what most people miss, they think an SBC is a digital camera and that's why we find all these moronic 'dd' and 'hdparm' pseudo benchmarks on the net. To test random I/O too we would have to add '-i 2' to the command line. And then we can also reduce the test size from 4GB to just 100 MB (and end up with the exact iozone command line at the start of this thread).

Link to comment
Share on other sites

Guest fossxplorer

I've never used iozone, but according to http://linux.die.net/man/1/iozoneit supports DIRECT_IO:

-I

Use DIRECT IO if possible for all file operations. Tells the filesystem that all operations to the file are to bypass the buffer cache and go directly to disk. (not available on all platforms)

 

I dunno what "if possible" means though as when using dd with iflag/oflag=direct it always bypasses the cache/buffer in Linux.

On server i generally use 'fio' to test IOPS, and dd or hdparm to get a quick indication of the sequential read/write performance.

 

Link to comment
Share on other sites

On server i generally use 'fio' to test IOPS, and dd or hdparm to get a quick indication of the sequential read/write performance.

 

But we're not talking about 'servers' here. Simply give the above two iozone calls a try, compare with dd and hdparm and see why the latter are inappropriate (again: block/record size matters, I won't repeat this any here since it's that easy to get the idea by simply trying the stuff out -- this thread here is full of examples that show how much different record/block sizes matter. People using dd don't think about this -- sometimes they use the default, that's just 512 bytes, sometimes they do copy&paste from stuff on the web and end up with 'bs=1M', both values pretty dumb to describe normal IO workload scenarios :) )

Link to comment
Share on other sites

Fio can be used wherever you want to test the IOPS performance.Fio is especially interesting on flash based devices (SSD/eMMC/SD), although i've only tested on SSDs. And it gives you IOPS as a metric.

It can give an indication of IOPS of the device given a block size the test is run with.

I will give iozone a try and if i get time, also try to compile fio on Armbian. :)

Link to comment
Share on other sites

try to compile fio on Armbian. 

 

Why? Regarding available software Armbian is more or less the distro chosen (Wheezy, Jessie, Ubuntu Trusty or Xenial). Simply try out what you get when searching for it:

apt-cache search "^fio"

The packages Armbian provides are mostly u-boot, kernel (+ headers), firmware and board support packages. Simply compare with the output from:

apt-get -q update && awk -F": " '/Package: / {print $2}' /var/lib/apt/lists/apt.armbian.com* | sort | uniq
Link to comment
Share on other sites

Hi

On another forum I learned that using the noatime option in /etc/fstab for ext4 SD cards was a good idea.

Any thoughts on that ?

Basically it avoids writing access time each time something is read from the card.

rw,noatime,nodiratime,errors=remount-ro,commit=600

Those are default mount options on Armbian since early days.

Link to comment
Share on other sites

I think it is because to move data you first write it in RAM and Linux uses all the

available RAM for it.

 

My first thinking too, but f3 doesn't use cache (under linux - see homepage of f3) but writes directly. Verified by the values of the top program.

 

 

24MB/s is not that much or in other words: An indication that F3 uses rather small block sizes. Please compare with post #45 and #48 here: http://forum.armbian.com/index.php/topic/990-testers-wanted-sd-card-performance/?p=9886

 

Would be interesting if it's a thermal issue or not (I had the same issues on Beelink X2's eMMC way early)

 

Checked with another board, same behavior. But now I monitored it with armbianmonitor running by side. Temperature starts at 50°C, with the high IO values. After 2GB of writing the temperature reaches 72°C and the rate drops to 7MB/s. Both stays there to the end of writing. Board was without any cooling at all.

 

Checked now with my new heat sink (passive one, covered the CPU full, but the 4 eMMC only partial). The writing rate is now nearly constant 11 MB/s. The temperature starts at ca. 40°C (hehe, its really hot here in Germany at the moment ;) ) and goes to approx. 52°C. And this only with a f.. simple heat sink. Why they don't deliver one mounted as standard. These are only cents. And we have with armbian already a cool system, not comparable with the original android they deliver. So I love my Odroid C2, already a nice heat sink mounted and it stays cool.

 

So why the check with f3 and not iozone?

1. I want to verify the eMMC. And both boards are ok.

2. I want to check if there are IO drops, if the used memory get higher. Think of some Samsung SSDs, they have lousy rates if they are nearly full, or think of NVidias disaster with some 4GB Video cards, with the slow last GB.

 

So maybe a interesting comparison, check the io rate with iozone on an empty card. Create a huge dummy file and compare it again with iozone. Btw, don't know how much space is required for iozone.

Link to comment
Share on other sites

Nice review and a great work !
I try to test my storage but after I run iozone and cancel it(it take too long and didn't finish) some strange things happens !
My file system get locked! 

root@orangepipc:~# touch test
touch: cannot touch ‘test’: Read-only file system
root@orangepipc:~# reboot
-bash: /sbin/reboot: Input/output error

my board : orange pi pc 
my sd card: galecy bit 16Bit U1

my kernel: Linux orangepipc 3.4.112-sun8i #8 SMP PREEMPT Tue May 31 19:00:17 CEST 2016 armv7l GNU/Linux

Link to comment
Share on other sites

My file system get locked!

 

And dmesg will tell you the reason: Filesystem corrupted due to using faulty or counterfeit SD card and kernel trying to save your FS by setting it to read-only :)

 

Call dmesg and watch for ext4/corruption, then follow the checking procedure on another system as outlined in our documentation: http://docs.armbian.com/User-Guide_Getting-Started/#how-to-prepare-a-sd-card or throw the card away.

Link to comment
Share on other sites

Which one is the best for maximum number of writing times?

Hard to say, we haven't done durability tests ... BTW: I was using Samsung EVO for www / database server for about one year. No problems, but also not enough time to make any conclusions.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines