Linux机器上的SD卡吞吐量

时间:2015-12-11 19:49:05

标签: linux embedded android-sdcard hard-drive

我试图在嵌入式Linux平台上运行自定义应用程序(Linux 4.1)。此应用程序将1 MB数据连续写入SD卡(Sandisk UHS I类)。该应用程序使用write()调用将数据写入SD卡。

以下是我对SD卡写入吞吐量进行监控时的观察结果。

  1. 整个平均值大约为每秒10 MB。
  2. 每写入50 MB数据后,瞬时吞吐量(每1 MB传输测量)就会下降。吞吐量降至每秒200千字节。
  3. 我尝试使用fwrite()系统调用代替O_SYNC,并设置<table class="my-class"></table> 标记。有了这个,瞬时吞吐量增加到1MBps。
  4. SD卡规范称支持的最小吞吐量为10 MBps。为什么瞬时吞吐量会下降?

    预计会出现这种情况吗?什么限制了瞬时吞吐量?

    我的应用程序需要的最小瞬时吞吐量为4MBps。我该怎么办?

1 个答案:

答案 0 :(得分:0)

  1. 确保连接嵌入式Linux设备和SD卡的接口和驱动程序支持吞吐量。 (例如,当它通过“Bitbanging”连接时,吞吐量可能远低于您的预期)。
  2. 使用众所周知的工具(dd)测试吞吐量并在以下情况之前刷新缓存: 同步; echo 3 | sudo tee / proc / sys / vm / drop_caches dd if = / dev / zero of = bs = 500K count = 2024
  3. 最后请参阅:https://raspberrypi.stackexchange.com/questions/32884/why-does-the-sd-card-random-write-performance-for-record-size-8-128-kb-drops-bel