tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Very slow transfers to/from micro SD card on a RPi B+
While I was already sure that changing the I/O scheduler from disksort
to fcfs on the Pi increases sequential write speed from nearly 10MB/s
to 15 MB/s on average, it turned out that´s not true.
In fact, the writes speed varies for no recognizable reason. An
example of a "good" case:
rpi/root> dd if=/dev/zero of=myfile bs=4k count=10000
10000+0 records in
10000+0 records out
40960000 bytes transferred in 2.750 secs (14894545 bytes/sec)
tty ld0 CPU
tin tout KB/t t/s MB/s us ni sy in id
5 49 18.97 18 0.330 0 0 0 0 100
4 49 0.000 0 0.000 0 0 0 1 99
2 46 0.000 0 0.000 0 0 0 0 100
1 48 55.83 12 0.648 0 0 2 1 97
0 44 63.55 212 13.15 0 0 8 0 92
0 44 64.00 194 12.13 0 0 6 1 93
0 156 63.54 206 12.78 0 0 5 0 95
0 44 0.000 0 0.000 0 0 0 0 100
0 45 0.000 0 0.000 0 0 0 1 99
This is an example of a "bad" case:
rpi/root> dd if=/dev/zero of=myfile bs=4k count=10000
10000+0 records in
10000+0 records out
40960000 bytes transferred in 4.718 secs (8681644 bytes/sec)
1 46 0.000 0 0.000 0 0 0 1 99
6 266 0.000 0 0.000 0 0 1 0 99
8 148 0.000 0 0.000 0 0 2 1 97
1 47 63.54 69 4.301 0 0 5 0 95
0 44 64.00 234 14.60 0 0 7 2 90
0 44 62.60 142 8.656 0 0 3 0 97
0 44 0.000 0 0.000 0 0 0 0 100
0 156 58.02 185 10.49 0 0 2 11 86
0 44 64.00 18 1.114 0 0 0 0 100
0 45 0.000 0 0.000 0 0 0 1 99
0 44 0.000 0 0.000 0 0 0 0 100
There is even one second in the process without a single xfer. Can
this be caused by the SD card itself, or may there be something
improvable in the kernel?
2015-08-25 15:05 GMT+02:00 Stephan <stephanwib%googlemail.com@localhost>:
> Nobody having an idea about DIRHASH? I´ve also seen that tmpfs has the
> same regression.
>
>
> I corrected 2 minor flaws in my tool, if it´s useful to somebody:
>
>
> ------8<---------------------------------
>
> #include <fcntl.h>
> #include <stdlib.h>
> #include <stdio.h>
> #include <sys/time.h>
>
> int main(int argc, char **argv) {
> struct timeval tv_start, tv_finish;
> unsigned long duration;
> int i;
> char filename[16];
>
> if (argc < 2) { printf("Usage: %s <count>\n", argv[0]); exit(1); }
> int howmany = atoi(argv[1]);
>
> for (i = 0; i < howmany; i++)
> {
> snprintf(filename, sizeof(filename), "%d", i);
> gettimeofday(&tv_start, NULL);
> int fd = open(filename, O_CREAT);
> gettimeofday(&tv_finish, NULL);
> close(fd);
> duration = (tv_finish.tv_sec * 1000000 + tv_finish.tv_usec) -
> (tv_start.tv_sec * 1000000 + tv_start.tv_usec);
> printf("Duration: %lu\n", duration);
> }
>
> return 0;
> }
>
> 2015-08-20 18:16 GMT+02:00 Stephan <stephanwib%googlemail.com@localhost>:
>> 2015-08-19 15:51 GMT+02:00 Thor Lancelot Simon <tls%panix.com@localhost>:
>>> We should be shipping with DIRHASH turned on.
>>
>>
>> That´s it - top speed!
>>
>> /root/test/files> time seq 1 30000|xargs touch
>> 1.05s real 0.03s user 0.84s system
>>
>> Is DIRHASH still considered experimental? It fixes one of NetBSD´s
>> most annoying shortcomings.
>>
>> FreeBSD received dynamic memory allocation for DIRHASH which might be
>> even better.
>>
>>
>>
>> (re-sending this as my editor intermittently distributes HTML mails)
>>
>>
>>>
>>> On Tue, Aug 18, 2015 at 04:19:57PM +0000, Michael van Elst wrote:
>>>> stephanwib%googlemail.com@localhost (Stephan) writes:
>>>>
>>>> >This is from an amd64 server box with an aac raid controller.
>>>>
>>>> >/root/test/files> time seq 1 10000|xargs touch
>>>> > 3.10s real 0.01s user 3.07s system
>>>> >/root/test/files> rm *
>>>> >/root/test/files> time seq 1 20000|xargs touch
>>>> > 9.88s real 0.01s user 8.51s system
>>>> >/root/test/files> rm *
>>>> >/root/test/files> time seq 1 30000|xargs touch
>>>> > 23.45s real 0.04s user 20.41s system
>>>> >/root/test/files> time seq 1 40000|xargs touch
>>>> > 43.35s real 0.05s user 38.32s system
>>>>
>>>> >That is clearly not linear.
>>>>
>>>> Each lookup is linear (unless you use DIRHASH), so the total
>>>> time goes with n^2.
>>>>
>>>> --
>>>> --
>>>> Michael van Elst
>>>> Internet: mlelstv%serpens.de@localhost
>>>> "A potential Snark may lurk in every tree."
>>>
>>> --
>>> Thor Lancelot Simon tls%panix.com@localhost
>>>
>>> "We cannot usually in social life pursue a single value or a single moral
>>> aim, untroubled by the need to compromise with others." - H.L.A. Hart
Home |
Main Index |
Thread Index |
Old Index