iESP
contents
- 1 SD card on an ESP32
- 4 SD cards on 4 ESP32s in a RAID-5 setup
- ESP32 with an Ethernet interface
- Teensy 4.1
- Linux: compared against 'tgt' and nbd-kit
performance on microcontrollers
The performance depends on the speed of WiFi and the SD-card. A quick test (software version a19934d) with a random (SDHC) 32GB card shows 418kB/s linear read and 79 iops for random reads.
click on an image to see it in full size
ESP32 & an SD card
4 node RAID-5 setup
Here I configured 4 Wemos32 to run iESP. Each had a 32 GB SD card, all connected to the same WiFi. My laptop then connected to each iSCSI target and combined them in one RAID-5 device on Linux. I then created the following graphs using the included "block-speed.py" script.
For what it is worth; a plot of the WiFi spectrum at time of the performance benchmark:
Analysis with iometer (measurer on the Linux laptop, GUI on an other (windows-)laptop):
Ethernet
Some ESPs have an Ethernet adapter on board. Like the wt32-eth01. With that board I ran my own my own benchmark which produces the following graph (using gnuplot):
CPU load & I/O wait during a run of block-speed.py against iESP over Ethernet (retrieved via SNMP from the device itself):
Teensy 4.1
The Teensy 4.1 microcontroller by Paul Stoffregen is a 600 MHz ARM based Arduino compatible microcontroller. It has an on-board SD-card reader and with some soldering an Ethernet interface. The tight coupling of all components gives speeds (with iESP or iTEENSY) of up to 6 MB while accessing the SD-card.
Bandwidth of the Teensy 4.1 compared to the ESP in different configurations:
Same benchmark data but a plot of the IOPs metric:
Here you see that this microcontroller easily maxes out the 100Mb Ethernet adapter it has on board:
Linux: compared against 'tgt' and nbd-kit
Visibile here is that the ESP32 version is dwarfed by the laptop (a regular intel i5 system). Yet iESP on a Linux laptop is on par with other network blockdevices.