Announcement is available here: https://jamesachambers.com/benchmark-storage-performance-on-linux/
Storage benchmarking script featuring a storage benchmark with a heavy emphasis on random read/write performance (essential for OS / application). This is far more accurate of a representation of actual performance than simply simulating writing a large file.Anonymously uploads your score to pibenchmarks.com for the purposes of making real, meaningful performance comparisons between the different storage devices themselves as well as the platforms they are being used on (PC vs Raspberry Pi vs cloud storage vs others).
You can optionally supply a username which is used as a sort of tracking tag where you can easily see all benchmarks you've ever taken across all devices!
View current benchmarks, discussion and analysis at: https://jamesachambers.com/2020s-fastest-raspberry-pi-4-storage-sd-ssd-benchmarks/
View the full results at: https://pibenchmarks.com/
sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
If you want to choose which drive to test you can also use:
wget https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh
chmod +x Storage.sh
sudo ./Storage.sh /path/to/storage
Most of the packages the script installs are core system packages most of which should already be present. There are a couple benchmarking-only related ones that should be safe to remove if you want an absolute minimalist system.
If you want to remove the packages the script installed afterward you may do:
sudo apt remove iozone3 fio
These are iozone and fio which are both benchmarking utilities and should be safe to use unless you have something else installed that relies on them as a dependency (probably not likely but possible so make sure before removing packages).
People have expressed some interest in this (you are all saints, thank you, truly)
- PayPal: 05jchambers@gmail.com
- Venmo: @JamesAChambers
- CashApp: $theremote
- Bitcoin (BTC): 3H6wkPnL1Kvne7dJQS8h7wB4vndB9KxZP7
- Added export LC_ALL=C to top of script to prevent language related issues on some systems
- Fix null bytes breaking test_nvme
- Fixed display issue with DD and HDParm tests showing the wrong units on very slow or very fast machines
- Increase DD write test to 130k blocks for increased NVMe accuracy
- Fix minor path errors on Orange Pi
- Fix parsing inside Docker (thanks mhaas, issue #24
- Add udev to dependencies (thanks mhaas, issue #25
- Fixed findmnt failing when target is not a mountpoint (thanks mhaas, issue #23
- Fixed udevadm giving a message that option 'w' was missing on some versions -- now runs a fallback test without that option
- PC results now show in "Latest" and a "Top PC Scores" section has been added!
- Reduce argument sizes to prevent curl upload error
- Fixed curl "argument list too long" error
- Fixed sdparm test overlapping with smartctl test
- Improve apt dependency installation -- won't run apt-update if all dependencies are present to save time
- Remove RAM column if it's not being used (it's not used on the Pi 4 and higher as the speed is fixed)
- Clean up garbled mess output from curl when submitted to website
- Remove clutter and useless output from IOZone test to show more data and less fluff
- Added 20 second timeout to udevadm test to prevent it from getting stuck forever in rare cases on some boards (thanks munecito issue #22)/li>
- Removed vendor field parsing
- Added some additional messages to help with debugging
- Added a couple more Gigabyte SBCs
- Added 4 Shuttle models that had benchmarks submitted for them -- marketed as the "smallest PC in the world"
- Added additional System Boards to PiBenchmarks.com System Boards and README
- System boards for PC and other types of devices like laptops, desktops, etc. are starting to be added quietly in the background
- PC results won't show on the "Latest" tab yet but you can find models that have already been done by searching for something like "Dell" or "HP" and you'll see System Boards that are being added from those manufacturers
- Removed "Vendor" field from submitted fields as it is no longer used for parsing
- Added list of additional supported models (see bottom of README)
- Added support for other SBCs similar to the Pi such as ODROID, Banana Pi, Pine64, Radxa Rock Pi, Tinker Board, OrangePi, NVIDIA Jetson Nano and more
- These models were chosen based on the fact that people had already submitted benchmarks with them. I will add others if people benchmark on those devices as well!
- Full list of models available here
- Added instructions to remove packages the script uses that should be safe
- Added pre-run requirement check for lsblk and fio to be installed (tries automatically but if you are on an unusual distro you may need to manually install them)
- Fixed an issue where DD write wasn't being read correctly from computers using Japanese
- Fixed an issue with btrfs that would add the characters [/@] at the end of the detected drive (about 19 tests impacted)
- Removed Ubuntu PPA as it doesn't support focal and is no longer necessary as libraspberrypi-bin is available in the repositories now that the Pi is "officially supported" on Ubuntu
- If you ran the storage script on a focal release and your apt is returning an error complaining about this you can remove the PPA with:
sudo add-apt-repository -r ppa:ubuntu-raspi2/ppa
This has been fixed on the live version and is no longer added to the apt list.
- Added some additional status messages to make it more clear what the script is doing at any given time
- Added --no-install-recommends to most apt package installers to cut down on time running on a new system and unnecessary packages
- Moved upload URL to the new pibenchmarks.com domain
- Added dependency for libxml-dumper-perl to fix inxi on some platforms (thanks DMC!)
- Moved project frontend to pibenchmarks.com domain name
- Added xxd dependency (thanks vszakats)
- Added option to choose which drive/folder to test (thanks hvdwolf)
- Launched early beta of https://pibenchmarks.com/ results browser
- Fixed an issue where dmesg was giving too much output resulting in "argument list too long" error that prevented results from submitting (thanks winkelement)
- Added new smartctl test to help identify drives on USB adapters that don't support hdparm
- Improved the hwinfo test to provide better drive identifying information
- Added new NVME test to help better identify NVME drives
- Double quoted variables to ensure maximum compatibility across distros
- Merged pull request from pschmitt improving the test dramatically on Arch Linux (thanks!)
- Fixed issue where dmesg test could contain characters that could break the test
- Removed all instances of "N/A" in favor of leaving the field blank and saving thousands of unneccessary bytes
- Added SSD adapter detection
- Added dmesg test in order to detect applied storage quirks
- Speed increases to dependency detection
- Parted out some tests into separate variables -- cleaning up code/tests for upcoming system improvements
- Further improved SSD drive detection
- Improved drive detection for SSDs going through adapters
- Added detection of SSD adapters being used
- Improved Micro SD card type detection
- Further improved rootfs device and size detection
- Improved portability with non-Raspbian platforms
- Improved hdparm detection
- Improved rootfs device detection
- MMC storage is now correctly identified
- Improved CPU/core/memory clock detection in older Pis
- Improved Arch Linux support
- Improved system architecture detection
- Added several new SD and MMC manufacturers
- Fixed a portability with parsing dd test output
- Improved USB Flash drive detection
- Added Platinum manufacturer identification
- Added Hama manufacturer identification
- Improved HDD and SSD identification including form factor, speed, size and class
- Added Lexar as SD manufacturer 0x00009e
- Added Sony as SD manufacturer 0x00009c
- Added cross platform CPU frequency detection to use if vcgencmd is not present
- Improved boot drive detection
- Added fallback for SD drivers that don't populate the udevadm information
- Added check to prevent installing iozone if it is already present on system
- Added "Team Group" as SD vendor (code -B, 0x000045)
- Added Maxell MicroSD vendor (code TI)
- Added fix to get gpu_freq on older Raspberry Pis that don't have core_freq
- Added x86_64 and x86 support
- Added Transcend to known vendors
- Eliminated wget dependency (uses pure curl for everything)
- Attempt to use native iozone package if available, otherwise build
- Added Arch Linux support
- Added Ubuntu support
- Initial release
- ASUS Tinker Board
- ASUS Tinker Board S
- Radxa ROCK Pi 4A
- Radxa ROCK Pi 4B
- Radxa ROCK Pi X
- Pine64 Pine64+
- Pine64 Rock64
- Pine64 RockPro64
- Xunlong OrangePi One / One Plus
- Xunlong OrangePi Zero
- Xunlong OrangePi 3
- Xunlong OrangePi 4
- Xunlong OrangePi Plus / Plus2
- Xunlong OrangePi PC
- Xunlong OrangePi PC2
- Xunlong OrangePi Lite2
- Hardkernel ODROID-C4
- Hardkernel ODROID-C2
- Hardkernel ODROID-HC4
- Hardkernel ODROID-N2
- Hardkernel ODROID-N2Plus
- Hardkernel ODROID HC1
- Hardkernel ODROID XU4
- Hardkernel ODROID M1
- NVIDIA Jetson Nano Developer Kit
- NVIDIA Jetson Nano 2GB Developer Kit
- NVIDIA Jetson Xavier Developer Kit
- FriendlyElec ZeroPi
- FriendlyElec NanoPi NEO3
- FriendlyElec NanoPi-NEO-Core2
- FriendlyElec NanoPi RS / R2S
- FriendlyElec NanoPi M4
- LeMaker Banana Pi
- Cubietech Cubietruck
- AAEON Atomic Pi MF-001
- Shenzen Amediatech X96 Max
- Firefly ROC-RK3328-CC
- Rockchip RK3318 BOX
- Khadas VIM2
- Intel Compute Stick STCK1A32WFC
- SolidRun Cubox-i Dual/Quad
- Tronsmart Vega S96
- ZOTAC ZBOX-BI320
- ZOTAC ZBOXNANO-AD12
- ZOTAC ZBOX-ID88/ID89/ID90
- MeCool KIII Pro
- Beelink BT3 Pro
- Phicomm N1
- Compulab fitlet2
- Gigabyte GB-BACE-3150-System
- Gigabyte GB-BXBT-1900
- Shuttle DS57U
- Shuttle DS61
- Shuttle DS437
- Shuttle NC01U