Axe*_*tor 5 performance sd-card
我复制了一些 MySQL-DB 的东西到我的 Class 6 SD 卡。它需要45分钟。为转移。同一台机器用XP几分钟就搞定了,用Win7在另一台机器上传输也可以。检查了所有论坛和来源,但没有发现任何真正相关的内容。
有时,默认 IO 调度程序对这些闪存驱动器的处理很差。我发现有用的一种解决方案是将 ioscheduler 切换到该设备的截止日期或noop 。例如,
$ LSSCSI [0:0:0:0] 磁盘 ATA TOSHIBA THNS128G AGLA /dev/sda [1:0:0:0] cd/dvd HL-DT-ST DVDRAM GT30N LT09 /dev/sr0 [7:0:0:0] 磁盘爱国者内存 PMAP /dev/sdb
sudo tee /sys/block/sdb/queue/scheduler << EOF
deadline
EOF
Run Code Online (Sandbox Code Playgroud)
$ cat /sys/block/sdb/队列/调度程序 noop [截止日期] cfq
现在再次尝试数据传输,您必须在加载设备之前执行此操作。
如果这对您有用,可以创建 udev 规则来自动为所有 USB 热插拔设备设置此规则。这是我很久以前写的,有点粗糙,我相信它只扫描 USB 热插拔设备,而不扫描 MMC 卡,因此您必须检查 udev 输出以确定您的媒体属于哪个类别并进行相应调整。
如果这对您不起作用,请自行承担风险,由您自行调试
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
Run Code Online (Sandbox Code Playgroud)
$ sudo chmod +x /lib/udev/rules.d/100-usb-scheduler.rules