Raspberry Pi Storage Benchmarks 2019 + Benchmarking Script

Pi Benchmark 2019 Contenders
Pi Benchmark 2019 Contenders

Storage options continue to advance at a very fast pace. We’ve seen a lot of changes in the past couple of years with viable storage options for your Pi. Solid state drives are now so cheap that it can be cheaper to outfit your Pi with a SSD than buy a MicroSD card! MicroSD cards also continue to evolve with the new “Application Class” A1 and A2 certifications.

This year I wanted to do something more than just benchmark my ever-growing pile of MicroSD cards and solid state drives. Although I have a wide variety of storage to test I don’t have everything! So this time I created a benchmark that gives you a easy to compare score and anonymously submits the storage specifications and the results to this site.

Running the benchmark is extremely easy. Run the following command on your Pi:

sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

Current Benchmark Results

ScoreHost ModelUserBrandLink (Amazon Affiliate)NoteClassManuf.ModelSize (GB)DD WriteRandW IOPSRandR IOPSIO ReadIO WriteIO Rand ReadIO Rand WriteHDParm DiskProductDateHost OSArchAdapterSD Spec.SD TypeM. DateQuirks
19653B+ 1.3AnonymousSanDisk UltraView Product SanDisk Ultra
A1 Class 10 U1SanDiskSL16G1634.026351846968973596870834822.02SD2019-03-21 2:26 PMRaspbian GNU/Linux 9 (stretch)armv7l5.00SDHC02/2018
89054B 1.1jchambersLITEON M.2 OEM LG SeriesView Product LiteOn M2 SATA SSD
SSD (M.2 SATA)LITEON256193125792263436785305011572434640300.28SSD2019-06-28 5:15 PMRaspbian GNU/Linux 10 (buster)armv7lASM2115
80854B 1.1jchambersSanDisk ExtremeView Product SanDisk x110
SSD (M.2 SATA)SanDisk128191112772242636613307711704127497299.45SSD2019-06-28 8:51 PMRaspbian GNU/Linux 10 (buster)armv7lASM2115
84864B 1.1dzmPNY CS900View Product PNY CS900
SSD (2.5" SATA)PNYITY3120205111202183334784269721988029892283.52SSD2019-07-01 10:39 PMRaspbian GNU/Linux 10 (buster)armv7lASM2115
16204B 1.1AnonymousSanDisk ExtremeView Product SanDisk Extreme
A1 Class 10 V30 U3SanDiskAFGCE6438.4105036631013329619708460440.97SD2019-07-02 12:59 PMRaspbian GNU/Linux 10 (buster)armv7l5.00SDXC04/2017
87514B 1.1sacSamsung 850 ProView Product Samsung 850 Pro
SSD (2.5" SATA)SamsungSSD850PRO256G25618884572227036382281672356435021315.78SSD2019-07-08 5:19 PMRaspbian GNU/Linux 10 (buster)armv7l
90444B 1.1jchambersCrucial MX200View Product Crucial MX200
SSD (2.5" SATA)CrucialASM105x250205124272316719970328161683635742316.22SSD2019-07-08 5:11 PMRaspbian GNU/Linux 10 (buster)armv7lASM105x
15584B 1.1AnonymousCorsair SDView Product AData
A2 Class 10 V30 U3Corsair/ADataSD6424.01239426612606408910432433941.45SD2019-07-14 9:45 AMRaspbian GNU/Linux 10 (buster)armv7l6.00SDXC05/2019
13374B 1.1AnonymousSanDisk UltraView Product SanDisk Ultra
A1 Class 10 U1SanDiskSC64G6423.510813031937634298981385240.36SD2019-07-25 12:51 AMRaspbian GNU/Linux 10 (buster)armv7l5.00SDXC03/2018
65484B 1.1BKingston A400 M.2View Product Kingston A400 M2
SSD (M.2 NVME)Kingston240201115152050417855154671334216513270.95SSD2019-07-25 12:03 PMRaspbian GNU/Linux 10 (buster)armv7lASM2115
18784B 1.1AnonymousSanDisk Extreme ProView Product SanDisk Extreme Plus
A1 Class 10 V30 U3SanDiskSP32G3240.21458356312648307211897547742.19SD2019-07-25 3:13 PMRaspbian GNU/Linux 10 (buster)armv7l5.00SDHC02/2019
64754B 1.1pegasyCorsair Force Series//https://www.amazon.com/Corsair-CSSD-F120GB2B-Mounting-Bracket-Included/dp/B0073CRNI0/ref=as_li_ss_tl?keywords=corsair+force+ssd+CSSD-F120GB2%5C&qid=1575756434&sr=8-5&linkCode=ll1&tag=codemallet-20&linkId=784bc564418f141767d62589abad74c2&language=en_US Corsair Force
2.5" SATACorsair1201675768421325036221341974227585163.24SSD2019-07-27 10:38 AMRaspbian GNU/Linux 10 (buster)armv7l
88614B 1.1AnonymousAData SU800View Product AData SU800
SSD (M.2 SATA)ADataSU800128198111401777734741315172328234148299.13SSD2019-07-29 7:49 PMRaspbian GNU/Linux 10 (buster)armv7lASMedia ASM105x
15854B 1.1AnonymousTranscendView Product
A1 Class 10 V30 U3TranscendUSDU16424.01216404317161413710648417941.08SD2019-08-03 2:19 PMRaspbian GNU/Linux 10 (buster)armv7l5.00SDXC06/2019
95294B 1.1AnonymousKingston A400View Product
SSD (2.5" SATA)KingstonASM105x120220158803017037516287541849430791296.64SSD2019-08-04 10:14 AMRaspbian GNU/Linux 10 (buster)armv7lASM105x
72364B 1.1vvvCorsair Force LE SeriesView Product
SSD (2.5" SATA)CorsairForceLESSD51218389982034133522213591318825731294.44SSD2019-08-05 8:06 PMRaspbian GNU/Linux 10 (buster)armv7l
83364B 1.1AnonymousTranscend MTS800 SeriesView Product
SSD (M.2 SATA)TranscendTS120GMTS820S120138110152200234597309062181234144276.08SSD2019-08-11 7:05 AMRaspbian GNU/Linux 10 (buster)armv7l
82664B 1.1KevinWD Blue NVMEView Product
SSD (M.2 NVME)Western DigitalWDS500G1B0C-00S6201050018077362245634439282321895533664299.24SSD2019-08-12 7:07 AMRaspbian GNU/Linux 10 (buster)armv7l
67174B 1.1naibooAData SU650View Product
SSD (2.5" SATA)AData1201956198491519299225101770527779257.79SSD2019-08-14 3:53 PMRaspbian GNU/Linux 10 (buster)armv7l
70204B 1.1AnonymousSamsung 840 ProView Product
SSD (2.5" SATA)SamsungSD/MMC25618787491494431284205321607124721295.82SSD2019-08-14 4:37 PMRaspbian GNU/Linux 10 (buster)armv7l
105554B 1.1AnonymousSanDisk Extreme PortableView Product
SSD (Portable)SanDiskExtremeSSD500219149532909039574344942337539780311.25SSD2019-08-17 8:42 PMRaspbian GNU/Linux 10 (buster)armv7l
65894B 1.1nesteaWD Green M.2View Product
SSD (M.2 SATA)Western DigitalWDS240G2G0B-00EP24014899842113915855211091563822344293.08SSD2019-08-20 7:07 AMRaspbian GNU/Linux 10 (buster)armv7l
80444B 1.1jacekrufCorsair Force 3 SeriesView Product
SSD (2.5" SATA)CorsairForce3SSD12014979232307331886274842157833465227.69SSD2019-08-20 12:04 PMRaspbian GNU/Linux 10 (buster)armv7l
105514B 1.1NaroarSamsung T5 PortableView Product
SSD (Portable)SamsungPortableSSDT5500249148402909031007348112063338704312.82SSD2019-08-22 6:51 AMRaspbian GNU/Linux 10 (buster)armv7l
15424B 1.1AnonymousLexar 667XView Product
A1 Class 10 V10 U1Lexar5cMJR3217.61370400112209445610623479841.34SD2019-08-22 10:19 PMRaspbian GNU/Linux 10 (buster)armv7l5.00SDHC10/2018
77284B 1.1KraakBalSamsung 750 EvoView Product
SSD (2.5" SATA)Samsung2105120100116571488334073307512343333575297.07SSD2019-08-23 4:40 AMRaspbian GNU/Linux 10 (buster)armv7lASM2105
13574B 1.1R4W4CSamsung EvoView Product
Class 10 U3SamsungEC2QT6421.612273021981136059993364739.84SD2019-08-23 4:18 PMRaspbian GNU/Linux 10 (buster)armv7l3.00SDXC06/2017
65454B 1.1AnonymousPlextor PX SeriesView Product
SSD (2.5" SATA)Plextor1281876461481628282226271880825301121.83SSD2019-08-24 11:57 AMRaspbian GNU/Linux 10 (buster)armv7l
14884B 1.1AnonymousSamsung EvoView Product
Class 10 U1Samsung000006419.4531394713975345113930351642.93SD2019-08-25 8:08 AMDebian GNU/Linux 9 (stretch)aarch643.00SDXC03/2016
88634B 1.1AnonymousKingston UV400View Product
SSD (2.5" SATA)KingstonSUV400S37120G120201117592281631984307161649034305298.27SSD2019-08-26 12:23 PMRaspbian GNU/Linux 10 (buster)armv7l
91674B 1.1AnonymousCrucial BX500View Product Crucial BX500
SSD (2.5" SATA)CrucialCT240BX500SSD12401921146921805359483109224891351606.55SSD2019-08-29 10:20 AMRaspbian GNU/Linux 10 (buster)armv7l
66974B 1.1hastarinSanDisk ExtremeView Product SSD
SSD (2.5" SATA)SanDisk24018694292084629623198942131616684302.99SSD2019-08-30 3:06 AMRaspbian GNU/Linux 10 (buster)armv7lASM2115
89734B 1.1JosephCrucial MX500View Product
SSD (2.5" SATA)CrucialCT250MX500SSD1250212124272263433816317371713233135296.41SSD2019-08-30 11:16 AMRaspbian GNU/Linux 10 (buster)armv7lASM105x
79294B 1.1AnonymousOCZ Agility SeriesView Product asdf
SSD (2.5" SATA)OCZAGILITY364188120642249527212245961654527180211.88SSD2019-08-30 9:41 PMRaspbian GNU/Linux 10 (buster)armv7l
65754B 1.1AnonymousInland ProfessionalView Product Inland 120GB with JMicron Adapter
SSD (2.5" SATA)InlandSATA SSD1201946547374827205241331498826712193.31SSD2019-08-30 11:53 PMRaspbian GNU/Linux 10 (buster)armv7l
16504B 1.1AnonymousSanDisk Extreme ProView Product sd
A1 Class 10 V30 U3SanDiskSP64G6438.813783584984526949701466440.66SD2019-08-31 7:14 AMRaspbian GNU/Linux 10 (buster)armv7l5.00SDXC09/2017
74834B 1.1AnonymousLexar USB Flash DriveView Product SSDKingstonA400
USB FlashLexarUSBFlashDrive12018091201828520838241452066427203278.91SSD2019-08-31 10:06 AMRaspbian GNU/Linux 10 (buster)armv7l
71164B 1.1NelebhLexar NS100View Product Lexar NS100 120GB SSD
SSD (2.5" SATA)Lexar120110114542178734664241292069025581288.24SSD2019-09-02 2:54 PMRaspbian GNU/Linux 10 (buster)armv7l
84074B 1.1AnonymousCrucial MX300View Product Curr
SSD (2.5" SATA)Crucial525156116572249535456318601517034645253.04SSD2019-09-03 10:29 AMRaspbian GNU/Linux 10 (buster)armv7lASM1051
14363B+ 1.3sdrasp13minecraftSonyView Product Car SanDisk
Class 10 U1SonyUSD001623.312902773975550998464474335.65SD2019-09-04 11:59 AMRaspbian GNU/Linux 10 (buster)armv7l3.00SDHC09/2018
16644B 1.1AnonymousSanDisk ExtremeView Product western digital 256GB ssd
A1 Class 10 V30 U3SanDiskSE64G6437.4142636321009529609455488740.83SD2019-09-04 7:21 PMRaspbian GNU/Linux 10 (buster)armv7lASMedia AS21155.00SDXC04/2018
75044B 1.1AnonymousSamsung 860 QVOView Product
SSD (M.2 SATA)SamsungSSD860QVO2TB2000193114031528332534231301590925840296.10SSD2019-09-05 8:12 AMRaspbian GNU/Linux 10 (buster)armv7l
67224B 1.1KungenAvPekingWD GreenView Product SSD WD Green 120GB on Plex gear USB30 SATA
SSD (2.5" SATA)Western DigitalWDS120G2G0A-00JH30120183104572186114595185021376720470264.69SSD2019-09-05 9:47 AMRaspbian GNU/Linux 10 (buster)armv7l
13304B 1.1JMSanDisk UltraView Product A SDcard SanDisk Ultra 64GB
A1 Class 10SanDiskSB64G6421.010542929948636489245391741.62SD2019-09-05 11:36 AMUbuntu 18.04.3 LTSaarch645.00SDXC10/2018
65624B 1.1twba177Intel 320 SeriesView Product 80GBIntel
SSD (2.5" SATA)IntelSSDSA2M080G2GN8076.7122072252534039239841582424496227.16SSD2019-09-06 10:02 AMRaspbian GNU/Linux 10 (buster)armv7l
86084B 1.1AnonymousSanDisk SSD PlusView Product sandisk
SSD (2.5" SATA)SanDiskSDSSDA240G240203116152069533741309681508732903297.76SSD2019-09-06 12:48 PMRaspbian GNU/Linux 10 (buster)armv7l
82044B 1.1AnonymousCrucial M500View Product Crucial M500
SSD (2.5" SATA)CrucialStorageDevice120131116152956119891286091523134245298.78SSD2019-09-06 7:46 PMRaspbian GNU/Linux 10 (buster)armv7lASM105x
74254B 1.1quickfireukSanDisk Ultra 3D NANDView Product
SSD (2.5" SATA)SanDiskSDSSDH3250G25013184762219334938280621560830948290.12SSD2019-09-08 4:37 PMRaspbian GNU/Linux 10 (buster)armv7l
14084B 1.1AnonymousToshibaView Product sd
A1 Class 10 U1ToshibaSA16G1617.8136429991074844238758476240.85SD2019-09-08 7:10 PMRaspbian GNU/Linux 10 (buster)armv7l6.00SD02/2019
78724B 1.1AnonymousCrucial M4 SeriesView Product
SSD (2.5" SATA)CrucialM4-CT256M4SSD2256194111542274534847243281383927156305.82SSD2019-09-08 8:14 PMRaspbian GNU/Linux 10 (buster)armv7lASM1051
14634B 1.1JACCINFORMATICACorsair SDView Product SD card 64GB AData A1 Class 10 V30 U3
A1 Class 10 V30 U3Corsair/ADataSD6423.4105040341186944829755408242.71SD2019-09-09 8:01 AMUbuntu 18.04.3 LTSaarch645.00SDXC02/2019
13824B 1.1sdcard01SanDisk ExtremeView Product sd card operating system
A2 Class 10 V30 U3SanDiskSN64G6437.410622924864324957375374340.46SD2019-09-10 2:25 AMRaspbian GNU/Linux 10 (buster)armv7l6.00SDXC05/2019
13864B 1.1AnonymousSamsung Evo+View Product Sandisk Ultra 16GB
Class 10 U1SamsungEB1QT3225.812113241977626639758365040.37SD2019-09-10 10:00 AMRaspbian GNU/Linux 10 (buster)armv7l3.00SDHC07/2018
15714B 1.1leosTestSamsung Evo+View Product sandisk ultra
Class 10 U3SamsungED4QT12830.01350324811275420411030402933.43SD2019-09-12 11:10 AMRaspbian GNU/Linux 10 (buster)armv7l3.00SDXC12/2017
74474B 1.1AnonymousWD BlueView Product WD Blue SSD
SSD (2.5" SATA)Western Digital25017388031519237504223382176927185298.08SSD2019-09-14 3:32 AMRaspbian GNU/Linux 10 (buster)armv7l
92384B 1.1jangaSamsung 860 EvoView Product SSD vs SD card made by Samsung
SSD (2.5" SATA)SamsungASM105x250196121152251536918309651938836646331.49SSD2019-09-15 12:19 PMRaspbian GNU/Linux 10 (buster)armv7lASM105x
74214B 1.1AnonymousDogfish SSDView Product mSATA SSD over USB3
SSD (2.5" SATA)Dogfish25689.8113122215433924300361462732676297.90SSD2019-09-16 1:54 PMRaspbian GNU/Linux 10 (buster)armv7lASM2115
66734B 1.1AertSanDisk Ultra 3.0 USBView Product Sandisk SSD 120GB
USB FlashSanDiskUltraUSB3.0120170106842514713983187421404019691319.52SSD2019-09-17 8:42 AMRaspbian GNU/Linux 10 (buster)armv7lASM105x
72054B 1.1AnonymousAData SU630View Product newssd
SSD (2.5" SATA)ADataSU63024019588001493533055206621630225422295.15SSD2019-09-17 12:39 PMRaspbian GNU/Linux 10 (buster)armv7l
89384B 1.1CPSamsung 970 EvoView Product
SSD (M.2 NVME)SamsungSSD970EVO32617991652197436351263933068334556303.46SSD2019-09-17 2:44 PMRaspbian GNU/Linux 10 (buster)armv7l
14314B 1.1AnonymousKingston DigitalView Product 32GB SD Sandisk
A1 Class 10 V30 U3KingstonSD32G3227.712812441979644917734476841.90SD2019-09-18 2:02 AMRaspbian GNU/Linux 10 (buster)armv7l5.00SDHC07/2018
86734B 1.1AnonymousIntenso PortableSSD SeriesView Product intenso portable ssd
SSD (Portable)IntensoPortableSSD25617912231219453621530069161333431365.68SSD2019-09-18 11:36 AMRaspbian GNU/Linux 10 (buster)armv7l
73684B 1.1AnonymousSamsung 840 EvoView Product Samsung 840 EVO
SSD (mSATA)Samsung250163550121539877271361823532780117.18SSD2019-09-18 12:42 PMRaspbian GNU/Linux 10 (buster)armv7l
17224B 1.1AnonymousSanDisk ExtremeView Product SanDisk Extreme 32GB A1 V30 class3
A1 Class 10 V30 U3SanDiskSE32G3237.7149637241072531429927509441.55SD2019-09-20 4:05 PMRaspbian GNU/Linux 10 (buster)armv7l5.00SDHC03/2019
14404B 1.1PNYSamsung Evo SelectView Product PNY
Class 10 U3SamsungGD4QT12827.6834316710063385410000414741.49SD2019-09-21 5:38 PMUbuntu 18.04.3 LTSaarch643.00SDXC11/2018
81804B 1.1TakeeKingston UV500 mSATAView Product Kingston SSD
SSD (mSATA)KingstonSUV500MS120G12022395092683434788210832264324085314.54SSD2019-09-22 1:47 AMRaspbian GNU/Linux 10 (buster)armv7lGeekworm X855
17164B 1.1AnonymousSonyView Product SD card
A1 Class 10 V30 U3SonyUSD006439.6145438001302249539423463541.68SD2019-09-22 2:22 AMRaspbian GNU/Linux 10 (buster)armv7l6.00SDXC03/2025
14194B 1.1AnonymousTranscendView Product m2 SSD
A1 Class 10 V10 U3TranscendUSDU13217.41131411211859379610372396441.46SD2019-09-23 9:11 AMRaspbian GNU/Linux 10 (buster)armv7l5.00SDHC05/2019
97164B 1.1Luc HSamsung 860 Evo mSATAView Product Samsung 860 EVO Geekworm mSATA SSD Expansion Board X855
SSD (mSATA)SamsungSSD860EVOmSAT250210122312249538038319522590237073304.17SSD2019-09-23 9:12 AMRaspbian GNU/Linux 10 (buster)armv7lGeekworm X855
14434B 1.1AnonymousSamsung ProView Product Samsung Pro 64GB
Class 10 U3SamsungFC8HT6437.2775365710244330810753275433.95SD2019-09-24 3:23 AMRaspbian GNU/Linux 10 (buster)armv7l3.00SDXC01/2018
16724B 1.1AnonymousSanDisk ExtremeView Product SanDisk
A1 Class 10 V30 U3SanDiskAFGCD3237.4143736481018530539523490540.89SD2019-09-24 6:23 PMRaspbian GNU/Linux 10 (buster)armv7l5.00SDHC03/2017
13264B 1.1hipattrickSanDisk Extreme PlusView Product SanDisk Extreme Plus 128GB from Costco
A2 Class 10 V30 U3SanDiskSR12812836.710012857848321687128351840.86SD2019-09-25 8:57 PMRaspbian GNU/Linux 10 (buster)armv7l6.00SDXC07/2019
82564B 1.1Magnus RPNY Elite PortableView Product PNY ELITE External SSD 240GB Model PSD1CS1050240FFS
SSD (Portable)PNYPNYELITEPSSD240194116201509835290282691717631817275.60SSD2019-09-27 12:11 AMRaspbian GNU/Linux 10 (buster)armv7l
91964B 1.1spark343Samsung 850 EvoView Product SSD
SSD (2.5" SATA)SamsungASM105x250165117212523439137307431952638457308.15SSD2019-09-27 5:22 AMRaspbian GNU/Linux 10 (buster)armv7lASM105x
13234B 1.1EsperanzaSanDisk Extreme ProView Product SanDisk SD Card
Class 10 U3SanDiskSP64G6439.48373157901429717557291935.23SD2019-09-27 7:12 AMRaspbian GNU/Linux 10 (buster)armv7l4.00SDXC02/2017
13384B 1.1AnonymousSamsung Pro EnduranceView Product Samsung PRO Endurance 32GB
Class 10 U1SamsungJB1RT3237.85883461953233839709244640.06SD2019-10-05 10:23 PMRaspbian GNU/Linux 10 (buster)armv7l3.00SDHC11/2018
78264B 1.1AnonymousSamsung PM871 mSATAView Product
SSD (mSATA)SamsungSSDPM871mSATA12813783382226035064282881744733680295.05SSD2019-10-14 10:32 PMRaspbian GNU/Linux 10 (buster)armv7lGeekworm X855
13944B 1.1babinodSamsung EvoView Product Samsung 256GB 100MBs U3 Micro SDXC EVO
Class 10 U3SamsungEE8QT25626.810093148982038889718375341.55SD2019-10-28 1:07 AMUbuntu 18.04.3 LTSaarch643.00SDXC11/2018
Showing featured results only. View full results

Navigating the Results

As the list of submissions continues to grow there can be a lot of data to sift through. I’ve provided a filter on the table to help narrow some of that down.

To only see Micro SD cards click the “Product” drop down from the options above the table and choose “SD”. This will filter out everything but Micro SD cards. To see solid state choose “SSD”. You can also search by manufacturer, brand, etc.

I have also offered the option to export the entire results table to Excel and other formats. If you perform any advanced analysis that you think would be useful to share be sure to leave a comment with what you found and I will credit you and post it for everyone!

Scoring

The benchmark heavily favors 4k random reads / writes. This is because for application and operating system performance this is by far the most important metric. Traditional benchmarking methods like dd write, hdparm read tests, etc. are very poor indicators of everyday performance. What matters is not how fast your storage can push through giant files but how fast it can respond to random input that asks it to read / write anywhere on the disk.

To understand why we need to think of what your Raspberry Pi is usually doing. Most applications and services are not constantly writing giant sequential files which is what traditional synthetic benchmarks measure. Your Raspberry Pi is usually updating log files, reading data from different parts of the disk for various applications and services, responding to user input, etc. To your disk drive this behavior is considered “random” since it has no idea what it will be asked to read / write next.

Storage devices doing large sequential I/O like transferring files utilize extensive caching and other techniques to speed up these kinds of operations. Unfortunately these techniques do not work when the operating system and storage device doesn’t know what users / applications / services might request next. The storage device has no way to know or prepare for what your application will want next so it has to read it raw from the disk and can’t rely on cache.

This is why in our benchmarking we want to look very hard at 4k random read / writes. This is what will determine how “snappy” the Pi feels as you perform various tasks. Fast 4k random IO devices feel and perform much better than a device with huge throughput but poor random I/O performance.

The current scoring method is:

(DDWriteSpeed * 1024 + fio4kRandReadIOPS * 4 + fio4kRandWriteIOPS * 10 + io4kRead + io4kWrite + IO4kRandRead * 4 + IO4kRandWrite * 10) / 100

Methodology

The benchmark runs a few different tests in order to get a good overall idea of storage performance. It runs 4k read / write and random read / write in two separate benchmarks to verify the results and reduce variance. Here are the tests used in the benchmark:

FIO – An industry standard used for true storage benchmarking vs. just measuring throughput (like DD Write and HDParm — not considered true benchmarks). The benchmark tests 4k block size sequential read/write and random read/write. Gives a result in IOPS which stands for Input/Output Operations Per Second

IOZone – A very popular benchmarking program. We also test 4k block size sequential read / write and 4k random read / writes here to verify our results are close to the FIO results

DD Write – Basic throughput test of writing 0’s as fast as possible

HD Parm – Tests disk read throughput in direct mode (avoids caching)

Recommendations – 2019

The top recommendation this year for Pi storage will depend on your form factor. Let’s break it down:

My project is stationary (servers, media centers, etc.)

The best choice is a 2.5″ Solid State drive connected via USB. This is the highest performance choice and is very cheap.

If you have a Pi 3B+ or older the benchmarks show that any solid state drive is so fast that it maxes out the Raspberry Pi’s USB 2.0 bus. I’ll talk about this more in the SSD analysis section below but basically it’s best to get the cheapest option while still picking a reliable brand.

If you have a Pi 4 then the performance of the solid state that you get is a performance factor. Differences between drive quality can affect performance but the performance of *any* quality solid state drive is going to crush SD cards and USB flash drives.

The best way to find good fast drives is to go to the full Pi Storage Benchmark results and soft by drive and see which ones score higher and by how much. When you look at prices you can determine if you want to pay extra for the highest classes of performance and where your sweet spot is.

The new Pi 4 has a much faster USB 3.0 bus on it that allows solid state’s potential to be unleashed leading to huge performance gains.

Here is my current recommendation:

Raspberry Pi Storage Benchmarks 2019 + Benchmarking Script

Kingston A400 SSD 120GB SATA 3 2.5” Solid State Drive

Raspberry Pi Storage Benchmarks 2019 + Benchmarking Script

StarTech 2.5″ SATA to USB 3.0 Adapter

My project moves around but can fit a USB drive

Many USB drives are a poor choice for Pi storage media because they have very poor 4k random read / write performance. Micro SD cards are faster than a run of the mill / genreic flash drive.

That being said, with the new Raspberry Pi 4 the USB 3.0 bus is having really high end flash drives outperforming Micro SD cards. On the 3B+ and older boards without the new bus USB flash drives are usually not a good choice (even the good ones).

One drive that shows great performance even on a 3B+ is a special USB drive by SanDisk that is actually a solid state drive on a stick. It has the same size / dimensions of a regular flash drive but uses solid state storage internally giving it great 4k random read / write performance. I own it and it benchmarked at 2330 putting it more than double any MicroSD card and only a couple hundred points below Samsung Pro 2.5″ SSDs.

Raspberry Pi Storage Benchmarks 2019 + Benchmarking Script

SanDisk Extreme Pro 128GB USB Solid State Flash Drive

My project is small form factor and can’t use USB adapters or storage

There’s lots of cool projects out there that using any type of USB attached storage is not an option. For these projects Micro SD is still king. The good news is that Micro SD has had some recent developments such as the A1 / A2 application class cards. A2 is not supported by Raspberry Pi yet (or almost anything else really) so A1 is the important mark to hit.

I’ll cover Micro SD in depth in the Micro SD analysis section but here are the current recommendations:

Raspberry Pi Storage Benchmarks 2019 + Benchmarking Script

SanDisk Extreme 32 GB A1 U3 V30 Micro SD Card

The SanDisk Extreme A1 Application Class version continues to dominate other Micro SD cards on the benchmarking charts.

SSD Analysis

SSD benchmarking so far has shown that there is not much of a difference between an older cheap SSD like a outdated mSATA Hynix drive and top of the line drives like the Samsung 850 Pro. The difference from the oldest cheap drives and top of the line was only about 100 points.

This is because the Pi has a USB 2.0 bus. Even the slowest oldest SSDs are so fast that they hit the maximum possible data transfer rate over USB 2.0. Because of this it makes sense to buy the cheapest SSD drive possible that is still reliable. See my recommendations section for ideas.

Micro SD Analysis

The Micro SD market has always been a difficult place for Raspberry Pi owners. Since there traditionally was no classification that indicated random read / write performance we simply had to buy different cards and benchmark them.

The problem with that was that Micro SD manufacturing processes change. They can even change from batch to batch. The 2015 Samsung Evo cards were a good example of this. We found a card with amazing 4k random read / write performance but one day they changed their process and the new ones are not even close.

Fortunately things have recently improved for us somewhat because of, well, smartphones! Let’s talk about the application class.

Micro SD A1 / A2 Application Class

Application class cards were created because smartphones have become one of the top use cases for SD cards. Many people run applications directly off their SD card or have applications that keep their active storage on there. Tech savvy smartphone users sick of slow performing cards demanded a speed class was created to measure this type of performance.

This is great for us Pi owners because this type of use is 4k random reads / writes and is exactly the same as what we do on the Pi. Thank you smartphone owners!

It’s important to note that right now the Pi (and pretty much everything else) cannot currently make use of the new A2 standard as it requires special driver support to take advantage of the new features. I have benchmarked both the SanDisk Extreme and the SanDisk Extreme Pro A2 cards in my benchmark results and they did not perform any better than the A1 cards because of this.

Lets look at the application class performance features:

Raspberry Pi Storage Benchmarks 2019 + Benchmarking Script

The new A1 application cards are fantastic and performing very well on the benchmark. So far every application card benchmarked has hit the minimum A1 targets. If you are looking for a better performing SD card then A1 is the way to go.

Video Class (V30, etc) and U Class (U1 and U3)

These don’t matter for the Pi. Basically at all. They are measurements for maximum sequential I/O throughput. For example if you have a video camera that needs to record in 4k it will need a very high sequential I/O maximum transfer rate.

The Pi depends on 4k block size random I/O as I’ve explained in earlier sections and these classifications don’t measure that. Indeed, my 3 worst performers on the benchmark are all U1 cards and got easily stomped (nearly doubled in score) by a SanDisk Ultra Class 10.

This doesn’t mean U capable cards are bad. The Samsung Pro+ is a U1 class card and performed incredibly well on the benchmark. It just means that the Samsung Pro+ has much higher quality memory / a better controller inside it.

The conclusion is that unlike the application class these classifications will not tell you if your card is going to be good or awful for the Pi. You need to benchmark them to know!

Picking the Fastest Micro SD Card

This can be difficult as manufacturers change their manufacturing processes and start using a different type of memory or on-board storage controller (likely to a cheaper one) for these cards. This can even happen on the same product line (such as the Samsung Evo) so manufacturer date is important when looking at these.

For example, the Samsung Evo+ was terrible a few years ago but more recent batches are scoring very well. The Samsung Evo “orange” older cards tend to be faster than the newer ones.

This is a big reason why I created this benchmark. With a bigger sample size of cards we as a community can pool our card benchmarks together and figure out which manufacturers and lines of cards are getting the good memory / on-board storage controllers.

Since manufacturers change their processes all the time to keep up we will need to watch the benchmark results and see where the “good stuff” is going and when the card quality quietly changes!

If you are currently in the market for a Micro SD card check the recommendations and the results table to see which current batches are performing the highest!

How you can contribute

The best way to help contribute to this research is to run the benchmark on your own Micro SD cards.

We are especially looking for the more unusual Micro SD card brands. Right now there are several manufacturers of Micro SD cards that have as yet to be identified. This information isn’t published anywhere publicly so the only way we can get them is through benchmarks submitted by you!

It is important to fill out everything you can see for the “Brand” question that comes up when you run the benchmark. Look at your card and fill in any branding markings you see.

This helps me identify unusual card vendors and add them to the script so they can be identified to help everyone compare between the different cards.

Conclusions

  • Use a solid state drive (SSD) if possible. Instructions on how to set one up with the Pi are in this article
  • SanDisk A1 application class cards are dominating the Micro SD results so far
  • The only sensible Micro SD cards to buy right now are application class (A1) due to their outstanding 4k blocksize I/O performance vs. older cards.
  • Micro SD card performance among the same brands and even the same models varied wildly depending on the manufacturing date. Memory quality and storage controller performance vary from batch to batch. Generally the newer they are the higher they tend to score on the benchmark as card technology is always improving.
  • The Pi cannot utilize A2 so don’t pay extra for it (although sometimes the A2 versions are cheaper). A2 cards will run in A1 mode on the Pi.
  • USB flash drives are terrible choices for Pi storage
  • Old “spinny disk” 5400 RPM and 7200 RPM HDDs underperform decent Micro SD cards

With the new benchmark we should be able to learn a lot more about storage on the Pi. Micro SD cards seem to be the area we need to learn the most about. As more people run the benchmark we’ll continue to analyze and revise recommendations based on what everyone finds!

45 thoughts on “Raspberry Pi Storage Benchmarks 2019 + Benchmarking Script”

  1. Avatar for Francisco

    Hi!!! Congrats for this great page! I’m going to install a web server ngix based on raspberry pi 4, and I would like to know if your current recommendation is still Kingston A400 + StarTech Adapter solution, since this article was written in July.
    Thank you so much in advance and congrats again!!!

  2. Avatar for Scott

    Hi James,
    I’ve been trying to set up a Minecraft Server from a RasPi 4 using your custom Ubuntu image. I’ve gotten as far as trying to get the Pi to boot from an SSD. lsblk seems to indicate that the SSD is the boot drive but Storage.sh is measuring the speed of the SD card (assuming I’m reading everything correctly). Current score is 1390. My other Pi4 server booting from an SSD got 7478.

    I tried adding the quirks but it made no difference. I’m using the USB/SATA cable you recommended (StarTech) and a Crucial BX500 SSD. Any thoughts? I feel like if I do it all over I’ll make whatever mistakes I made again! Thx

    1. Avatar for jamesachambers

      Hey Scott,

      Is the SSD the /boot drive or is it the / (root fs) drive? If it’s the boot drive they need to be swapped. I agree with you that the storage score definitely looks like a SD card score (like, almost certainly, that’s definitely a score for a good SD card but not a SSD).

      Let’s try running this command and see what is returned:
      findmnt -n -o SOURCE /

      This will tell you what drive is being mounted for your root drive (/).

      In Ubuntu partitions are mounted differently than in Raspbian. When you boot it looks for a drive with the label “writable”. It doesn’t use the PARTUUID’s at all in Ubuntu. I think maybe I need to update the SSD boot drive if the command I posted above returns that it is running from a mmcblk device instead of a SDA device.

      I *think* off the top of my head this would do it. You would change the mmcblk0p2 label like this:

      sudo e2label /dev/mmcblk0p2 oldwritable

      and then reboot. However, if you don’t want to risk doing it all over again I will be running this on my own tomorrow and make sure!

  3. Avatar for hapklaar

    For some reason my results are not accepted or processed in this chart. Do you perform any kind of filtering before showing the results on the board? I’m using an FX-11124 based USB3 to SATA adapter on rPi4B.

    Suggestion: Can you also include the model/chipset of the used USB-SATA controller in the charts? This seem to be the most important factor, even before drive model and can help us choose the best adapter for the job.

    Thanks!

    1. Avatar for jamesachambers

      Hey hapklaar,

      Great question! If a model has never been seen before it isn’t automatically put on the list. I had missed the Samsung SSD 840 Pro in the list but it has now been added. They all still stay on the server if they are new and are just waiting for me to add them to the list of recognized devices.

      I think showing the USB adapter is a really good idea. I’ll definitely put that in!

  4. Avatar for DerFritz

    Hi,
    great page. Is there somewhere an option to export the benchmark database as a csv-formated structure and fit it (sort and filter) to my purposes?
    Regards

    1. Avatar for jamesachambers

      Hey DerFritz,

      Absolutely! It is available at the full page Raspberry Pi Storage Benchmarks right under the Benchmarking Results section (you’ll see a CSV button).

      My site’s SSL certificate was broken for a bit so you wouldn’t have seen the button if you checked here but it has now been fixed.

  5. Avatar for Archy

    I believe I followed the guides that I have found on your site to the best of my ability. I am using a Kingston A400 with the Startech SATA adapter on a Pi 4 4gb. I scored ~4800 after running your script.
    I found that once I changed the boot to sda2, that the fstab steps did not seem to apply. My root drive has pointed to the SSD and I have ~111GB available. Not sure if something changed with your latest image.

    Either way, any suggestions to try and get this into the 8-9K range? Thanks!

    1. Avatar for jamesachambers

      Hey Archy,

      You’re right, it seems low compared to the other scores even when I sort by Ubuntu Server as the host OS.

      I’d like to help narrow this down. Have you ran the benchmark on Raspbian? This can help narrow down if it’s the image or your adapter/drive setup.

      I’d also like you to check out this post and try applying quirks and running the benchmark again: https://www.raspberrypi.org/forums/viewtopic.php?t=245931

      Let’s get to the bottom of it!

      1. Avatar for Carlos

        I actually tried the tips given on this URL and actually the performance for worse (From 6000 to 3000 on the kingston A400), undone the steps given there and got back the 6000 performance (not even close of 9000 that some person got on this SSD).

        1. Avatar for jamesachambers

          Hey Carlos,

          That’s really interesting. The quirks definitely don’t help everyone! I do have some insight about the SSD score. The bigger ones tend to have faster memory chips (this is true with pretty much every brand, Samsung’s 1 TB SSDs for example have a different speed rating than their 256/512), so the 120 or 240 ones are unlikely to ever hit scores as high as 9000. It can also vary by model quite a bit (there’s several models of the A400 now, I think the most common one ends in A400S37) but there are some other models out there that you can see on the page that have varying performance.

          Nevertheless, your comment is a good reason why nobody should assume that certain tweaks will help their performance case and that you should always test and make sure your score is going up and not down!

          1. Avatar for CARLOS

            My suggestion: Post the average/median and the standard deviation, this way we can find out about outliers tests, maybe this 9k score is a rare case.

  6. Avatar for stuart

    I downloaded Storage.sh and edited the script to run it against my USB drive, so I have been able to submit a test result for my non-boot device.

    The device is a Samsung DUO Plus 64GB USB drive, which scored 1,306, marginally worse than my cheap 64GB MicroSD card.

    stuart

    1. Avatar for jamesachambers

      Hey stuart,

      Amazing work, I was just going to reply and say to set the BootDrive variable manually in Storage.sh! I have Storagev2.sh script in the works that is able to parse drive information better as well as let you choose which drive to test. This has been slightly delayed due to work on some of my other projects (such as the Ubuntu 64 bit image) but it’s definitely still coming!

      If anyone has submitted a score for a new device and it is not showing up on the page it just means that the server has never seen that device before so it wasn’t automatically approved. The scores are still on the server and I just need to go through the backlog and add the brand new devices people have submitted to the auto-approve list.

      That score is definitely in the ball park of other USB (flash) drives. There are a few outliers like the SanDisk SDCZ880 USB Stick 3.1 SSD that outperform SD cards but they are specialty drives that use a much higher (and more expensive) grade of storage.

      Thanks again stuart, and sorry everyone for the slow work on testing additional drives, the wait should be worth it!

  7. Avatar for stuart

    Just echoing other (unanswered) requests: is it possible to run the script against a drive this isn’t the boot drive? Is there a command line argument for Storage.sh that will let me check my USB drive, for example? Great tool, by the way, and thank you for the database. I’ll definitely be investing in an SSD after seeing these result.

  8. Avatar for Denny Fox

    Thanks for the great test script and database! It is very useful in my evaluation of adapters and SSDs for the Raspberry Pi 4. I had been using fio scripts exclusively before I ran across Storage.sh. Your script provides a broader look at performance using different tests and the weighting makes sense for the use case. I have seven different adapter cables/enclosures and only two of them work out of the box on the Pi4 with USB3. They both have the ID 174c:55aa ASMedia Technology Inc. chip. All the others based on JMicron chips need the “quirks” fix in /boot/cmdline.txt to operate. This reverts to mass storage protocol in the driver. See:
    https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=245931#p1501426
    STICKY: If you have a Raspberry Pi 4 and are getting bad speeds transferring data to/from USB3.0 SSDs, read this

    One request:
    Could you please include the Description typed in after the test in the database? I have been using this to keep track of the adapters and drives I have been testing. Having it as a field in the database would be very helpful.

    Many thanks!

    1. Avatar for jamesachambers

      Hey Denny,

      Thanks very much for the feedback. I will definitely add the description field in.

      I’ll also get the quirks information on here as yes that definitely needs to be stickied and added into the post!

      1. Avatar for Denny Fox

        I was happy to find the “quirks” page since is at least allows adapters with the JMicron chipset to work, even if it is not optimal. Hopefully we will see an improvement in the Pi’s driver in the future. I am particularly interested in booting directly from USB like the Pi3B’s.

        I installed smartmontools and when I run
        smartctl -i /dev/sda
        I get an output line that says:
        SATA Version is: SATA 3.2, 6.0 Gb/s (current: 3.0 Gb/s)

        I’m wondering why it is only running at 3.0 Gb/s?

        Thanks for adding the Description field!

  9. Avatar for jonne

    Hi, I have SSD mounted not as / but different folder. Is it possible to test that external disc giving sda1 as parameter for this script (or changing some part of it)?

    My discs are like this, but I think it defaults to *mmcblk*

    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 238,5G 0 disk
    └─sda1 8:1 0 238,5G 0 part /home/pi/
    mmcblk0 179:0 0 28,9G 0 disk
    ├─mmcblk0p1 179:1 0 256M 0 part /boot
    └─mmcblk0p2 179:2 0 28,6G 0 part /

  10. Avatar for DerFritz

    Great work you have done. For me it is THE standard for storage benchmarks on the Raspberry Pi. Thank you for your effort.
    One drawback of your database is the lack of information about the used USB2SATA Converter. Especially for the performance of the Raspi4 this may be relevant.

  11. Avatar for John Colby

    I was looking for my results and cannot figure out any way to how to see them. A “date run” and trhen a sort on date would at least give me a shot. I love that you have done this.

  12. Avatar for Mark L

    I just moved my /root to an SSD on my new Raspberry Pi 4 as you instructed. It’s working well, but now the script freezes as it builds iozone. It always freezes with the word “SCSI”. Any ideas?

    1. Avatar for jamesachambers

      Hey Mark,

      Does the whole Pi freeze or just the script? The SCSI part would show during hardware detection most likely.

      1. Avatar for Mark L

        I’m trying to determine this, it’s very strange. The whole Pi seems to be affected. top does not show anything out of the ordinary, yet the Pi is functioning like it’s partially frozen. I can sometimes close the script window but that doesn’t help. Windows will sometimes open but won’t close. I can’t logout or shutdown, the GUI gets called but never comes up, despite top showing everything’s fine. I should try rebooting from the CLI. Once before I started using top the resource monitor showed 100% CPU usage yet the temperature kept low like at idle.

        This script worked fine on my 3B+ with an SD card and with an SSD, it’s my 4 that’s affected. Works fine with the SD card, it’s the SSD it doesn’t like.

        I’m thinking there’s some hardware I plugged in it doesn’t like, but all I have plugged in is a generic keyboard. I’ve tried with a different generic keyboard and a wireless keyboard/mouse combo (lsusb says Cypress Semiconductor). I’m now still using that wireless mouse but also a Bluetooth keyboard.

    2. Avatar for DerFritz

      I did the test too with an Raspi4 and a mSATA SSD, everything went fine.
      Sounds like a problem to the power supply of your SSD.
      What hardware are you using? Do you connect to the USB3-ports? Are you using a USB3-cable?

  13. Avatar for Ben

    I’m having difficult submitting my data using the new Raspberry Pi 4 (Raspbian Buster). The error I get is `curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)`.

      1. Avatar for Ben

        Nope, same issue unfortunately 🙁 not to worry; it looks like a reasonable amount of data has been collected.

  14. Avatar for Alex

    Thanks for your effort!
    One question: Is there a easy way to run the test on a other drive then the boot-Drive? I’ve a USB-Flashdrive in my PI, that is claiming it is a SSD inside, and I like to run a test on it. But it is not the boot-drive.

  15. Avatar for Bob

    If I am recording a 15 minute video at full 5MP resolution at 10fps with MJPEG compression. It seems that SSD drives will still be the best. Is this accurate?

    1. Avatar for jamesachambers

      Definitely! The write cache optimizations that SSDs have will help as well with this. The data can be stored in the write buffer while it is being written to the drive which takes pressure off the Pi.

Leave a Comment

Your email address will not be published. Required fields are marked *

Type here..