qq_35552637 2016-07-08 11:50 采纳率: 66.7%
浏览 1194
已采纳

linux系统下,做的视频记录仪,写入固态硬盘的数据量比实际的小很多的问题

楼主是个linux新菜鸟,目前在做一个linux系统下的视频记录仪,记录H264的视频,简单说就是从网络读取视频流写入固态硬盘,固态硬盘挂载到linux系统的/MNT下,现在有个问题就是屏幕打印实际读取的数据量例如为12345678字节,如果正常接收关闭信号,关闭文件退出系统则固态硬盘里的数据量与实际相差无几,但一旦是直接关电那么固态硬盘内数据就少很多,最多少过50几秒的视频数据,平均码流是1.5mBPS

程序简单历程就是
recv从网络读取 buf【2048】
fwrite讲buf写入已挂载的硬盘里打开的文件

有关机信号
关闭文件,umount,退出系统

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-07-08 16:10
    关注

    linux系统有文件系统缓冲,也就是实际上会写入内存,然后才写入硬盘。固态硬盘按照块去写入,一般一个块有4kb甚至更大。如果你更新这个地址范围内哪怕一个字节,都需要把整个块全部写一次。这不但降低了性能,而且极大造成了固态硬盘不必要的磨损,导致硬盘寿命大大减少。
    操作系统的缓存机制使得你对相邻的地址改写后,其实都在内存操作,再一次性写入硬盘,这是一种必要的优化。如果你的linux系统可以配置,你可以想办法关掉缓存,立刻写入数据,但是强烈不推荐你这么做。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建