释放某个文件的cache

之前在嵌入式设备上做视频备份,将自主开发的用户文件系统中视频数据备份成ASF文件。由于涉及file io,遇到的一个问题是Linux会cache住那些asf文件,造成free内存减少。虽然这没有什么,但是为了稳定性考虑,我们的系统在free内存少于一个阈值时会告警。

当时采取的方式是,每备份一部分数据通过echo 3 > /proc/sys/vm/drop_caches来释放cache。现在想想那种方式真是有点“简单,粗暴”了。由于cache占用内存的增大是备份的asf文件引起的,所以针对性的释放asf文件占用的cache即可,而不用采用对整个系统都有影响的echo 3 > /proc/sys/vm/drop_caches方式。

用 posix_fadvise 的POSIX_FADV_DONTNEED可以准确的释放某个文件的某些部分数据所占用的cache。

#define _XOPEN_SOURCE 600
       #include <fcntl.h>

       int posix_fadvise(int fd, off_t offset, off_t len, int advice);

有两个现成的工具可以查看文件所占用的cache,一个是linux-ftools,另一个是vmtouch。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值