2016-06-24 12 views
0

Ich versuche, Leistung montiert SD-Karte zu meinem Board zu bekommen und ich bin mit IOZone, das zu tun, aber ich bin immer starnge Ergebnisse:SD-Karte Benchmark mit IOZone

Befehl:

# mount /dev/mmcblk2p2 /mnt/SD 
# cd /mnt/SD 
# iozone -a -s 10M -r 5K -w -e 

Ergebnisse:

         random random bkwd record stride         
      KB reclen write rewrite read reread read write read rewrite  read fwrite frewrite fread freread 
     10240  5 4283 4136 68681 378738 337652 3871 133905 96074 216912  4122  5013 364024 376181 

die Ergebnisse sind in Kbyte das ist die mittlere Geschwindigkeit Random Read 300MB/s ist ?? meine Karte ist Klasse 4 normalerweise ist die Schreibgeschwindigkeit 4 MB/s und die Lesegeschwindigkeit ist nicht sehr unterschiedlich zu diesem Wert?

+0

Ihr Betriebssystem (Linux?) Kann Daten zwischenspeichern, die von der SD-Flash-Karte gelesen wurden. Also 300 MB/s kann aus dem RAM-Speicher lesen – osgx

Antwort

0
iozone -a -s 10M -r 5K -w -e 

            random random bkwd record stride         
     KB reclen write rewrite read reread read write read rewrite  read fwrite frewrite fread freread 
    10240  5 4283 4136 68681 378738 337652 3871 133905 96074 216912  4122  5013 364024 376181 

Ja, sind die Ergebnisse in Kilobyte/s (KB/s, verwenden Sie keine -s stille Option und iozone wird es Output is in kBytes/sec sagen), und ja, es gibt 380 MB/s für "nachzulesen" speed (und 200 MB/s zum Lesen nach dem erneuten Lesen?). Allerdings kann die Geschwindigkeit Ihres Blockgerätes (SD-Karte/HDD/SSD) nicht erneut gelesen werden, wenn der Testsatz (10 MB) kleiner ist als Ihr RAM-Speicher (es ist).

Die meisten Betriebssysteme (und auch Linux) haben Software-Cache-in-RAM für Dateisysteme und Blockgeräte. Wenn Sie zum ersten Mal auf einen Block zugreifen (seit dem Booten), wird er vom Gerät gelesen und in Page Cache des Betriebssystems gespeichert. Der nächste Zugriff (Lesen) dieses Blocks erfolgt direkt aus dem RAM, nicht vom Gerät selbst (es sei denn, die Option O_DIRECT wurde im E/A-Betrieb verwendet, -I Option von izone).

Ihr Testlauf ist also falsch. Lesen Sie die Manpage von iozone vor der Verwendung: http://linux.die.net/man/1/iozone und versuchen Sie einen größeren Testsatz (Gigabyte) oder verwenden Sie -I, um den Seitencache zu umgehen.

+0

Mein RAM ist 512M und ich möchte den Test der SD-Geschwindigkeit in wenigen Sekunden bestehen, deshalb verwende ich 10M als Größe, die Option -I hilft nicht, es ist immer noch die gleiches Ergebnis. – Mondher123

0

hier die Ergebnisse, wenn ich die -I-Option am

              random random bkwd record stride         
      KB reclen write rewrite read reread read write read rewrite  read fwrite frewrite fread freread 
     10240 1024 2356 2950 19693 20865 20833 2095 20111  1734 14375  2875  3566 386809 389443 


    write seq :    2,3 Mo/s 
    read seq:     19,2 Mo/s 
    write rand:    2 Mo/s 
    read rand:    20 Mo/s 
    read blk     20 Mo/s 

warum die Lesegeschwindigkeit immer noch so hoch?

+0

Ist es zu hoch? 20 MB/s ist die angemessene Geschwindigkeit des Lesens von Daten von NAND-Flash, es ist real, SD-Schnittstelle 20 MB Daten pro Sekunde zu übergeben. Das Lesen von NAND ist immer 2-4 mal schneller als das Schreiben. SD-Schnittstelle hat mehrere Geschwindigkeit Protokolle und Bewertungen: [Secure_Digital # Geschwindigkeiten von Wikipedia] (https://en.wikipedia.org/wiki/Secure_Digital#Speeds), einige UHS-Varianten von SD können bis zu 50 und 100 MB/s übergeben. – osgx

+0

Danke für diese Informationen – Mondher123