web-dev-qa-db-fra.com

SD Card Transfer très lent

J'ai copié des données MySQL-DB sur ma carte SD de classe 6. Il fallait 45 minutes. pour le transfert. Même machine avec XP cela se fait en quelques minutes, avec Win7 sur une autre machine, le transfert fonctionne également. Vérifié tous les forums et sources mais rien trouvé vraiment lié.

5
Axel Larator

Parfois, le programmateur par défaut IO traite mal ces lecteurs flash. Une solution que j'ai trouvée utile consiste à basculer le ioscheduler sur date limite ou noop pour ce périphérique. Donc par exemple

 $ lsscsi 
 [0: 0: 0: 0] disque ATA Toshiba THNS128G AGLA /dev/sda[.____._rev[1:0:0:0] cd/dvd HL-DT -ST DVDRAM GT30N LT09 /dev/sr0
[7:0:0:0] disque Patriot Memory PMAP /dev/sdb
Sudo tee /sys/block/sdb/queue/scheduler << EOF
deadline
EOF
 $ cat /sys/block/sdb/queue/scheduler[.____.hnnop [date] cfq 

et maintenant essayez à nouveau votre transfert de données, vous devez le faire avant vous chargez le périphérique.

Si cela fonctionne pour vous, une règle udev peut être créée pour la définir automatiquement pour tous les périphériques usb hotplug. En voici une que j’ai écrite il ya longtemps et qui est un peu cruelle. Je crois qu’elle ne recherche que les périphériques USB hotplug, pas les cartes MMC. Vous devrez donc examiner la sortie udev pour déterminer la classe de votre média et ajuste en accord.

PROCEED AT VOTRE PROPRE RISQUE, SI CELA NE FONCTIONNE PAS POUR VOUS, C’EST À VOUS DE DÉBOGER

Sudo tee /lib/udev/rules.d/100-usb-scheduler.rules << EOF
# custom udev rule: 28.10.11

# adjust io scheduler for usb block devices: queue/scheduler
# scheme based on "persistent storage rules"

# forward scsi device event to corresponding block device
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change"

ACTION!="add|change", GOTO="persistent_storage_end"
SUBSYSTEM!="block", GOTO="persistent_storage_end"

# skip rules for inappropriate block devices
KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*", GOTO="persistent_storage_end"

# ignore partitions that span the entire disk
TEST=="whole_disk", GOTO="persistent_storage_end"

# for partitions import parent information
ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*"

# USB storage devices suffer from performance issues unless they use deadline io scehduler
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", \
        RUN="/bin/sh -c 'echo deadline > /sys/$env{DEVPATH}/queue/scheduler'"

LABEL="persistent_storage_end"
EOF
 $ Sudo chmod + x /lib/udev/rules.d/100-usb-scheduler.rules
3
ppetraki