簡體   English   中英

Linux機器上的SD卡吞吐量

[英]SD card throughput on Linux machine

我正在嘗試在嵌入式Linux平台(Linux 4.1)上運行自定義應用程序。 該應用程序將1 MB的數據連續寫入SD卡(Sandisk UHS I類)。 該應用程序使用fwrite()調用將數據寫入SD卡。

以下是監視SD卡寫入吞吐量時的觀察結果。

  1. 整個過程的平均速度約為每秒10 MB。
  2. 寫入每50 MB數據后,瞬時吞吐量(每1 MB傳輸測量)下降。 吞吐量下降到每秒200 KB。
  3. 我嘗試使用具有O_SYNC標志設置的write()系統調用而不是fwrite() 這樣,瞬時吞吐量已提高到1MBps。

SD卡規范說,支持的最小吞吐量為10 MBps。 為什么瞬時吞吐量下降?

這是預期的行為嗎? 什么限制了瞬時吞吐量?

我的應用程序要求最小瞬時吞吐量為4MBps。 我該怎么辦?

  1. 確保將嵌入式Linux設備與SD卡相連的接口和驅動程序支持吞吐量。 (例如,通過“ Bitbanging”進行連接時,吞吐量可能遠遠低於您的預期)。
  2. 使用眾所周知的工具(dd)測試吞吐量,然后刷新緩存: 回聲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-貝爾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM