首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >4级SDHC与10级SDHC卡

4级SDHC与10级SDHC卡
EN

Stack Overflow用户
提问于 2017-03-23 05:27:37
回答 1查看 492关注 0票数 0

我一直在做一些程序,要求数据被写入/存储到SDHC卡上,很少有MBs的大小,特别是Sandisk类4 SDHC * Sandisk类10 SDHC 16 GB卡。

我观察到的结果似乎更奇怪。4级卡片与10级卡片的书写速度。

使用的命令:

我使用dd命令来编写数据;类似于:

dd if=file_10mb.img of=/dev/sdc conv=fsync bs=4096 count=2560

通过以下方法测量写入速度:

iostat /dev/sdc 1 -m -t

很少有数字:

编写100文件:

在10班卡上: 53秒->Avg。写入速度= 2.03 MB_wrtn/秒 4级卡:31秒->Avg。写入速度=2.62MB_wrtn/秒

编写10文件:

10级卡:5.7秒->Max。& Min.写入速度= 1.85 &1.15MB_修万亿/秒 4级卡:4秒->Max。& Min.写入速度= 2.56 & 1.15 MB_wrtn/秒

我希望这些结果正好相反,因为10级的扑克牌应该优于4级的扑克牌。

我在两张不同的卡片上测试了这些,以消除由于旧卡而产生错误读数的可能性。而且,卡片是相当新的。

请告诉我这种奇怪的行为。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-03-23 07:29:10

互联网上的一个简短的研究让我来到了这个页面:https://www.raspberrypi.org/forums/viewtopic.php?t=11258&p=123670

它讨论“擦除块”,即“擦除”操作的大小;此擦除块通常大于扇区大小,扇区大小是写入操作的最小大小。在该页上显示了一些示例:

16 GB SanDisk极限临:擦除块大小为4MB。 8 GB超越SDHC150x:擦除块大小为4MB。 2GB超越SD 150 x:擦除块大小8 kB。

现在,传递给dd的fsync选项意味着,每次写入之后,都会对数据和元数据执行同步,这可能涉及重写部分FAT,或者如果不使用FAT,则执行一些其他块。

在一个经典的旋转磁盘上,这意味着磁头每4KB移动一次;在闪存上没有磁头,但是擦除操作非常昂贵。此外,闪存有减少磨损的内部算法,因此很难知道内存卡内部到底发生了什么。

结论是,正如注释中所指出的,4K块大小可能太小,而fsync选项速度减慢,可能会非常麻烦。去掉fsync选项,然后使用不同的块大小再次执行测试。

实际上,可能每一张不同的卡都有一组优选的参数。一种方法10类卡可以工作更快,可以选择一个大擦除块。擦除块的时间或多或少与其大小无关,因此真正大的擦除块有效地提高了速度,同时删除了更多的数据。但是,如果积木经常被擦除,速度反而会降低。

最后的答案,从推论,是你的一组参数似乎更适合4类卡,而不是10类卡。在我看来,你的参数并不适合任何事情,但是没有人能完全确定:闪存卡是复杂的。例如,我经常在我的电视解码器上记录电视传输;有一段时间,事情进展顺利,而其他时段则不然。4个月前,译码器经常抱怨“写得太慢”,结果很糟糕。几个月过去了,一切都很好。我什么也没碰,闪存的USB内存是一样的。可能它进入了另一个生命阶段..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42967919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档