Re: [PATCH 0/3] mtd: block2mtd: convert to folios

From: Tal Zussman

Date: Fri Oct 16 2026 - 14:52:45 EST


On 10/15/26 2:39 PM, Jörn Engel wrote:
> On Wed, Oct 14, 2026 at 11:34:53PM -0400, Tal Zussman wrote:
>>
>> The numbers below are from mtd_speedtest, in MiB/s, by folio size,
>> except the last row, which is from the MEMERASE ioctl:
>>
>> +------------------------------+-------+--------+---------+---------+
>> | Test | Folio | Base | Patched | Change |
>> +------------------------------+-------+--------+---------+---------+
>> | Eraseblock read (128 KiB) | 4K | 12545 | 12863 | +2.5% |
>> | | 16K | 12998 | 17229 | +32.6% |
>> | | 64K | 13009 | 19135 | +47.1% |
>> +------------------------------+-------+--------+---------+---------+
>
> Thank you! Code size goes down, code seems subjectively easier to read
> and performance goes up. Good stuff!
>
> The one pet complaint I have is that benchmarks should measure badness,
> not goodness. Humans tend to prioritize the big numbers. If you
> measure the bad thing (time in this case), they focus on the worst areas
> where most time is spent. If you measure the good thing, they tend to
> improve things that are already too good to worry about even further.
>
> Maybe you are immune to such psychological effects, but I am not and
> measuring time instead of throughput makes a difference to my mind.
Understandable :) I just used the output of mtd_speedtest, which
doesn't directly report time at the moment, but with some tweaks...
Results are the time in ms that mtd_speedtest takes for one pass over
a 256 MiB device.

+------------------------------+-------+--------+---------+---------+
| Test | Folio | Base | Patched | Change |
+------------------------------+-------+--------+---------+---------+
| Eraseblock read (128 KiB) | 4K | 20.25 | 19.55 | -3.4% |
| | 16K | 20.19 | 14.55 | -27.9% |
| | 64K | 20.21 | 13.24 | -34.5% |
+------------------------------+-------+--------+---------+---------+
| Eraseblock write (128 KiB) | 4K | 26.37 | 25.01 | -5.1% |
| | 16K | 26.10 | 17.62 | -32.5% |
| | 64K | 25.69 | 15.45 | -39.8% |
+------------------------------+-------+--------+---------+---------+
| Page read (512 B) | 4K | 75.70 | 72.02 | -4.9% |
| | 16K | 76.50 | 73.00 | -4.6% |
| | 64K | 76.44 | 72.96 | -4.5% |
+------------------------------+-------+--------+---------+---------+
| Page write (512 B) | 4K | 113.57 | 109.59 | -3.5% |
| | 16K | 114.42 | 109.73 | -4.1% |
| | 64K | 114.39 | 109.57 | -4.2% |
+------------------------------+-------+--------+---------+---------+
| 2-page read (1 KiB) | 4K | 48.42 | 46.40 | -4.2% |
| | 16K | 48.96 | 47.07 | -3.9% |
| | 64K | 48.59 | 47.07 | -3.1% |
+------------------------------+-------+--------+---------+---------+
| 2-page write (1 KiB) | 4K | 63.61 | 61.28 | -3.7% |
| | 16K | 63.96 | 61.20 | -4.3% |
| | 64K | 63.82 | 60.85 | -4.6% |
+------------------------------+-------+--------+---------+---------+
| Erase, blocks hold data | 4K | 15.40 | 14.13 | -8.3% |
| (mtd_speedtest) | 16K | 15.28 | 10.48 | -31.4% |
| | 64K | 15.22 | 10.13 | -33.4% |
+------------------------------+-------+--------+---------+---------+
| Erase, already erased | 4K | 23.86 | 15.11 | -36.7% |
| (2x multi-block) | 16K | 24.14 | 11.46 | -52.5% |
| | 64K | 23.63 | 10.53 | -55.5% |
+------------------------------+-------+--------+---------+---------+

Thanks,
Tal