3

我正在尝试将原始视频帧(每个 12.4MB)实时(30fps)写入通过 sata3(6Gb/秒)接口连接的 CFast 2.0(ext4)卡。

该卡的额定速度为 430MB/秒,当我用连续 100MB 文件写入对驱动器进行基准测试时,它很高兴地达到了 ~420MB/秒。

问题是当我写较小的文件时,~12MB,吞吐量下降到大约 350MB/秒,这对于我的目的来说太慢了。

文件写入例程是比较简单的基于 fopen 的(伪代码):

foreachframe()
{
    file = fopen(frame_filename)
    fwrite(file, img_header)
    fwrite(file, img_data)
    fclose(file)
}

我已经尝试过单线程和多线程,但没有太大区别。我猜想创建一个新文件并关闭它会产生一些重大开销。目前文件系统是 ext4,尽管我最终希望它与 exFat 一起工作。

有没有办法与文件系统进行低级别交互,从而允许以低得多的开销创建和填充大量文件?或者是否有将大量文件批量保存到磁盘的优化技巧?

4

0 回答 0