尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Linux Page Cache 导致视频解码第一次慢、第二次快的原因分析与缓存清理方法
本人工作中遇到的实际问题结合大模型分析后找到了原因本文在CHATGPT帮助下完成1. 问题背景在使用 PyNvVideoCodec 做 GPU 视频解码测试时发现一个非常奇怪的现象同一个视频第一次运行PyNvVideoCodec decode: 10s第二次运行PyNvVideoCodec decode: 2s代码、GPU、Docker 环境完全没有变化。初步怀疑PyNvVideoCodec 第一次初始化慢NVDEC 有缓存Qwen 模型加载影响Docker 容器导致GPU 驱动问题经过多组实验最终定位真正影响性能的是 Linux Page Cache文件缓存而不是 GPU 解码本身。2. Linux Page Cache 是什么Linux 不会每次读取文件都直接访问磁盘。当程序读取文件程序 | | read() ↓ Linux Kernel | ↓ 磁盘第一次读取磁盘 ↓ Page Cache ↓ 程序Linux 会把读取的数据缓存在内存中。第二次读取程序 | ↓ Page Cache | ↓ 直接返回不需要再次访问磁盘。因此第一次磁盘 IO 解码第二次内存读取 解码速度可能产生明显差异。3. 为什么 Docker 重启后缓存还存在很多人会误以为Docker 容器退出后缓存应该消失。实际上不是。Page Cache 属于Linux Kernel不是Docker Container例如第一次Docker A 读取 video.mp4 ↓ Linux Page Cache然后Docker A退出但是Linux Kernel仍然运行。再次Docker B 读取同一个 video.mp4仍然可以命中之前的 Page Cache。所以不同 docker run 之间可以共享文件缓存。4. 如何查看一个文件是否已经缓存推荐工具vmtouch安装Ubuntusudoaptinstallvmtouch查看文件vmtouch video.mp4输出Files: 1 Directories: 0 Resident Pages: 121973/121973 476M/476M 100% Elapsed: 0.000458 secondsResident Pages 怎么理解Linux 使用 Page 管理内存。通常1 Page 4096 Bytes例如视频476MB大约476MB / 4KB ≈121973 Pages输出Resident Pages: 121973 / 121973表示总页数: 121973 已经在内存中的页: 121973也就是100%代表整个视频已经进入 Linux Page Cache。如果Resident Pages: 50000 / 121973 40%说明只有 40% 的视频数据已经缓存。5. 查看目录缓存情况查看整个目录vmtouch /data/videos递归查看vmtouch-r/data/videos例如Files: 100 Directories: 1 Resident Pages: 500000/800000 62%表示目录下所有文件约 62% 已经在内存缓存。6. 如何清理 Linux Page Cache性能测试时经常需要模拟第一次访问文件冷缓存可以使用方法一清理整个系统缓存执行sudosh-csync echo 3 /proc/sys/vm/drop_caches解释sync把脏数据写回磁盘RAM ↓ 磁盘避免数据丢失。echo 3含义1: 清理 Page Cache 2: 清理 inode/dentry cache 3: 两者都清理一般测试使用3清理后验证vmtouch video.mp4应该之前Resident Pages: 121973/121973 100%变成Resident Pages: 0/121973 0%7. 更推荐只清理指定文件缓存如果只是测试某个视频不建议清理整个系统缓存。使用sudovmtouch-evideo.mp4其中-e evict表示将该文件从 Page Cache 中移除。验证vmtouch video.mp4看到0%即可。8. 一个完整的视频解码测试流程例如测试 PyNvVideoCodec第一步清缓存sudovmtouch-evideo.mp4确认vmtouch video.mp4结果0%第二步运行解码第一次decoder[i] 10s第三步查看缓存vmtouch video.mp4结果100%说明视频已经进入 Page Cache。第四步再次运行第二次decoder[i] 2s原因Page Cache命中9. top/free 能看到这些缓存吗很多人会使用top查看内存。注意Page Cache 不属于某个进程。所以top RES不会包含文件缓存。查看free-h可以看到buff/cache但这个包含Page Cacheinode cacheslab 等不是精确的文件缓存。如果想知道某个视频是否缓存使用vmtouch更准确。10. 对视频处理系统的启示对于视频分析任务例如NAS | 复制 | 本地SSD | PyNvVideoCodec | Qwen | MediaPipe推荐不要直接从网络文件系统做随机帧读取。原因视频随机访问decoder[idx]会频繁触发seek read decode网络存储延迟会直接影响解码时间。更稳定的架构NAS作为存储 ↓ 复制到本地SSD ↓ GPU解码这样性能更加稳定也方便测试。总结Linux Page Cache 是导致第一次读取慢 第二次读取快的主要原因之一。关键命令查看文件缓存vmtouchfile清理单个文件sudovmtouch-efile清理系统缓存sudosh-csync echo 3 /proc/sys/vm/drop_caches对于视频解码性能测试必须区分磁盘/NAS读取性能Page Cache命中GPU解码性能否则容易误判“GPU解码慢”实际上可能只是“第一次读取文件慢”。
RELATED

相关推荐

量子机器学习与领域感知量子电路的设计与应用

量子机器学习与领域感知量子电路的设计与应用

1. 量子机器学习与领域感知量子电路概述量子机器学习(Quantum Machine Learning, QML)作为量子计算与经典机器学习的交叉领域,近年来在图像分类、药物发现和金融预测等任务中展现出独特优势。与传统机器学习不同,QML利用量子态的叠…

📅 2026/10/1 0:49:14
HC-08 做 YMODEM 串口升级失败。

HC-08 做 YMODEM 串口升级失败。

问题:有线升级成功,使用HC08无线升级ymodem协议卡死。 HC-08官方手册规定波特率 19200 及以上时,每包个数不能超过 120 字节。大概率第一帧握手都撑不过去。主要原因是HC08FIFO只有120字节,115200波特率下会丢数据,就算…

📅 2026/10/2 9:05:54
从Docker Compose到演示脚本:构建高可靠技术演示的工程化实践

从Docker Compose到演示脚本:构建高可靠技术演示的工程化实践

在实际技术会议、产品发布会或技术峰会的现场演示环节,如何将一个复杂的、多模块的软件项目,在有限时间内清晰、流畅、有层次地展示给观众,是一项极具挑战性的工程。这不仅仅是“跑个程序”那么简单,它涉及到环境隔离、依赖管理、…

📅 2026/10/2 8:38:39
MORE NEWS

更多资讯

📰

低龄近视不可逆,远视储备与眼轴管理是防控关键

上周门诊来了一个五岁的小男孩,幼儿园视力筛查报告写着“双眼屈光不正”,家长进门第一句话就是:“医生,是不是直接配眼镜就行?”我看了看孩子,他正凑在视力表前,眯着眼睛努力辨认第四行的方向。…

📰

OpenShell:把Shell环境变成代码,一键还原开发配置

入行前五年,我一直觉得终端这东西“能用就行”。直到后来同时折腾几台开发机,每换一台设备都要重新配zsh、装插件、迁移别名,半天就没了。更烦的是,明明在家调好的命令提示符、自动补全、目录跳转,到了公司机器上全变了…

📰

wangEditor粘贴Excel公式乱码的根因分析与解决方案

上个月在给某军工单位做质量记录管理系统时,测试组扔过来一个很典型的缺陷单:从Excel往wangEditor里粘贴工艺参数表,只要表格里带公式,粘贴出来就是一堆乱码——有的单元格是一串 {"a1":{"r":1,"c"…

📰

直播APP全局美颜实战:从SDK选型到性能优化全指南

直播行业做了六年,从最早的PC秀场到现在的移动端语音房、带货直播间,我经手过的直播APP少说也有十几个。有一件事几乎每次都要被产品经理和运营拿出来反复讨论——就是美颜。多少个直播间里,主播颜值直接决定留存和打赏,而美颜效果…

📰

手搓CPU指南:从逻辑门到能运行程序的计算机

第一次在Logisim里点亮自己手搓的CPU时,屏幕上的小灯按照预设程序依次亮起,那个瞬间让我觉得,之前所有关于计算机组成原理的抽象概念都找到了着落。从逻辑门到CPU,听起来像是高高在上的工程奇迹,但如果你愿意从最底层的…

📰

Python医药管理系统开发实战:从数据库设计到答辩演示全攻略

这个项目我前后帮几个学弟学妹调过代码,自己也完整做过一版,算是比较有发言权。Python医药管理系统,听起来像是个标准的课程设计题目,但真正动手做的时候,涉及的坑比想象中多得多——从数据库表结构怎么设计才能兼顾批…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬