为什么我的SD卡速度慢?


23

我的SD卡似乎运行缓慢。我有一张ADATA 16 GB SDHC Class 10卡。我检查了兼容性列表,该列表列出了具有相似规格的卡,并指出该卡“正在工作”。即使是一些简单的任务,例如在小目录中获取目录列表,也可能在我第一次请求时花费几秒钟。有什么工具可以用来验证我从SD卡获得的性能?另外,是否可以进行任何配置更改以使SD卡更快地响应?

我将Raspberry Pi用作无头BitTorrent种子箱,因此我正在运行的所有内容仅在命令行上运行。我正在使用240/16拆分以确保我拥有最大的可用内存量。

更新

在按照@Krzysztof Adamski的建议在“ dd”下运行了一些测试后,我收到了一些不错的结果,读取速度为20 MB / s,写入速度为约10 MB / s。但是,它似乎仍然存在一些I / O速度问题。测试时,我在后台运行了“ dd”命令,然后在顶部运行,以查看发生了什么。我注意到“ mmcqd”进程占用了相当多的处理器使用率,介于5%和10%之间。我在Internet上四处张望,发现许多人报告说“ mmcqd”用尽了很多CPU。然后,我运行以下命令以同时测试读写

sudo dd if=/dev/mmcblk0 of=test.dat bs=1M count=1024

运行此命令时,我的吞吐量仅为977 kB / s,“ mmcqd”报告的处理器使用率每5到10秒介于10%到25%之间,此后它将恢复为零。因此,我进行了更多测试。我在后台运行了以下两个命令,然后观察最上面的内容。

sudo dd if=/dev/mmcblk0 of=/dev/null bs=1M count=1024 &
sudo dd if=/dev/zero of=test.dat bs=1M count=1024 &

在这种情况下,“ mmcqd”的峰值将达到35%左右的处理器使用率,但吞吐量要好得多,读取速度约为7.5 MB / s,写入速度约为5.3 MB / s。

似乎这里发生了某种问题,大量写操作导致“ mmcqd”锁定了系统。这会导致传输守护程序在等待SD卡时,一旦速度过快,就会将其减速至几乎为零。当运行传输守护程序时,我还看到“ mmcqd”的使用率很高。


您确定SD卡会导致此问题吗?您首先可以尝试使用另一张卡来排除系统的其他部分吗?
戴维德·费伦奇·罗戈扬

您是否已在系统日志和内核日志中检查了与mmc设备相关的消息?有些卡根本无法在Raspberry Pi中工作。其他一些则需要一些调整才能可靠地工作。
2012年

SD卡链接已移动
ray023

1
@ Ray023谢谢。我更新了链接。将来,您可以只编辑问题。我想是因为您是新手,所以编辑不会立即进行,而是会保存下来,以供原始海报或其他一些高级用户批准。
Kibbee

Answers:


21

测试卡读取速度:

有两种简单的方法可以测试读取速度(列出目录仅是读取操作):

  • 使用dd命令:

    sudo dd if=/dev/mmcblk0 of=/dev/null bs=8M count=100

    这将从您的SD卡中读取800MB数据,并将其丢弃到/ dev / null。如果花费大量时间,则可以将count = 100更改为count = 10以仅读取80MB。命令完成后,它应该以读取速度打印一条消息。您应该至少达到几MB MB / s。

  • 使用hdparm命令:

    sudo hdparm -t /dev/mmcblk0

    这应该为您提供与第一个命令相似的速度结果,并且至少应为MB / s几MB。

测试卡写入速度:

没有简单的方法可以测试写入速度,因为这样做必须将一些数据实际写入卡中。如果您想在较低级别(忽略文件系统)上执行此操作,则必须覆盖卡上的某些数据,并且您可能不想执行此操作。如果您有交换分区,则可以执行此操作,因为可以轻松停用它(使用swapoff -a),用dd测试(使用dd if=/dev/zero of=/dev/{yourswappartitionnanehare} bs=8M count=25),然后重新创建(使用mkswap /dev/{yourswappartitionnanehare})。

如果没有交换分区,则也可以使用dd命令测试文件系统的写入速度:

dd if = / dev / zero of = / home / pi / testfile bs = 8M count = 25

这将在中创建200MB文件/home/pi/testfile。您可以使用任何其他所需的文件名。

笔记:

  • 在测试速度时,请确保系统中没有其他程序在运行(例如torrent应用程序等)。
  • 测试之后,您可以检查dmesg命令的输出以查看是否有关于mmc子系统的消息。
  • 确保已安装最新固件。不论SD卡速度如何,都有补丁。
  • 您可能还需要检查一些较旧的固件,因为可能会有一些退化。最简单的方法(但不是最好的方法)是测试构建在不同日期的不同系统映像。较难的方法是使用github并签出固件文件的历史版本。

我的赞美 在MacBook Air上,将img文件写到6级4GB SD卡上时,速度为1.4 MB /秒。对PI的读取测试报告为20 MB /秒!
ScrollerBlaster 2012年

我有相同的东西。我的读取速度约为500MB /秒。我错了吗?
最暗的N2O,

12

对于SD卡性能而言,访问是顺序访问(如dd)还是小块随机访问都非常重要。SD卡(尤其是高级SD卡)似乎已针对顺序访问进行了优化,这非常适合存储照片或视频。但是,由于要读取和写入许多小文件,因此对于运行SD卡OS来说,随机访问更为重要。我猜想bittorrent也会产生一些随机访问。

两个讨论线程包含许多SD卡基准测试和讨论。通常,发现随机写入速度对于运行卡OS的响应能力具有决定性作用。此速度通常比顺序写入的速度低得多,后者是制造商喜欢报告的速度。SD卡类别基于顺序速度,实际上较低的类别(4或6)可能更适合于覆盆子使用。

IOZONE工具测量许多不同的访问模式的速度。我已经发布了对树莓编译IOZONE简要说明这里


2
有趣的答案。好东西。
Jivings

非常有趣,因为我刚买了10倍的4倍...当当!:-(
BerggreenDK

@ BerggreenDK:也许将来您可以将这些卡用于其他目的,然后也许会很高兴购买10类卡。
Neverland

1
随机写入速度在诸如启动顺序或目录列表之类的典型任务中影响不大。即使对于torrent,4KB写入的测试结果也无关紧要:典型的块大小约为1MB,除非您没有可用的RAM,否则磁盘缓存会将这些分组为更大的顺序写入。
德米特里·格里戈里耶夫

0

对于RasPI板载插槽,在RasPI站点上进行了大量讨论:http ://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=5057&sid=ee346e3e7cea48d2858a143bcf086362

没有时间阅读所有12页的讨论内容,但是CLK信号似乎有问题。


0

您写“ bittorrent”,这触发了我的猜测/答案。

torrent协议从随机播种机以随机顺序接收软件包。

一旦开始在任何文件系统上使用torrent,它就会变得零碎。这会损害性能。

根据我对SDCARD的了解,它运行的FAT / FAT32和thas在处理碎片方面甚至更糟。

因此,找到一种对SDCARD进行碎片整理的方法,或者从中复制所有文件,然后重新安装操作系统。

最后,编写LOT(如bittorrent引擎所用)将比正常使用更快地破坏SDCARD。我并不是说这样做是错误的,事实上我已经考虑过要和自己相似。但是-这可能是您遇到问题的原因。

我希望有一个洪流客户端,一旦下载+“保留的上载时间”完成,该客户端便会自动将下载的文件传输/移动到其他目的地。

然后进行碎片整理会快得多。


碎片如何应用于SD卡?我认为碎片只是旋转磁盘上的一个问题,因为文件将位于非顺序扇区上,从而导致读/写头必须在整个位置移动才能访问文件。在固态存储(例如SD卡)上,这不是问题。但是,我将同意您关于bittorrent造成的写入操作数量的意见。我认为这与问题有关。将其与RPi上的少量内存结合在一起(我的内存有256 MB),这似乎是导致磁盘访问缓慢的秘诀。SD卡通常也很慢。
Kibbee

好的,一旦您有很多文件片段,FAT / FAT32结构就会变得很糟糕而且很慢。而且小树莓没有太多的动力可以移动。因此,任何阻碍其前进的速度都会减慢它的速度。但是,这只是我的猜测。我对此没有任何事实。
BerggreenDK

1
RPi甚至不使用FAT / FAT32。文件系统为EXT4。
Kibbee

3
答案有一个很好的观点,那就是bittorrent可能会以随机顺序将数据小片段地写入文件。这种类型的随机写入在SD卡上效率很低。但是我认为整理碎片不会有所帮助。实际上,FAT在Pi上使用,但仅用于引导分区。
Frepa

1
@Kibbee:见我的答案在raspberrypi.stackexchange.com/questions/8850/...理解为什么SD卡拥有自己的碎片问题。许多避免物理磁盘碎片化的软件技术(例如预分配文件)对于SD卡都是无用的,因为扇区是在向其写入数据时(而不是在分配它们时)放置(或移动)的。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.