I got new SD card claimed to be 10 class of speed, but internal Disk utility in linux after test showed up only 6th class of speed.
How can I check my card reader speed to be sure that it's not the limit of the device, but the limit of a card?
I don't have any approved SD cards to perform tests with them.
My card reader shows like this in lspci:
0000:07:00.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 05)
0000:07:00.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
0000:07:00.2 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
0000:07:00.3 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)
Best Answer
Testing the speed of an internal card reader with Disks
In order to find the maximum throughput via the internal card reader the other components must be faster (the read/write process on both sides of the card reader, and in particular, the card. And I think the real card speed [which may differ from the nominal speed] can only be verified in a system with a card reader, that is not the bottleneck (for example an adapter via USB 3).
We can expect that a good USB 3 adapter will be at least as fast as the memory card used in the test. We can also expect that an internal HDD or SSD is faster than the card. So it should be enough that the card and the USB 3 adapter are faster than the internal card reader in order to test the speed for reading and/or writing (of the internal card reader).
A good test procedure includes flushing the buffers. Let us rely on Disks alias
gnome-disks
and simply run it usinga USB 3 adapter via a USB 3 port on the computer
Remember to tick the box in order to test also writing.
If using the internal card reader takes longer time, you can conclude that it is the bottleneck.
General discussion including testing also other hardware
It is very important that you test not only what is the output from for example
dd
orpv
, but you should measure the time of the read or write command including flushing the buffers. The following method should work in linux,and then divide the amount of data written by the 'real' time to get the real speed.
It is a good idea to test read/write of a single big file and of 'many small files'. (Writing 'many small files' is often much slower than writing a single big file measured in MB/s).
You can use some standard test or design a test for your particular use case, which may rank combinations of hardware and software in a different way from the standard test.
For write tests it is important that reading or creating the input is not the bottleneck. Running in a live system with the data in RAM is one alternative. For read tests you can write to
/dev/null
.To find the bottleneck you can try with different