当前位置: 首页 > news >正文

为什么ubuntu大文件拷贝会先快后慢?

这是 Linux(包括 Ubuntu)上常见的大文件拷贝现象:一开始速度很快,随后逐渐下降。其根本原因主要在于 缓存机制、存储介质特性以及 I/O 调度策略 的综合作用:

1. 页缓存(Page Cache)的作用

  • 一开始快:当你执行 cp、rsync 等拷贝命令时,数据会先写入内存中的页缓存,系统立即返回“写入成功”,此时拷贝速度显示的是“内存写入速度”(几百 MB/s 甚至 GB/s)。
  • 后来慢:随着缓存被填满,内核必须逐步把数据真正写入硬盘。此时速度就取决于硬盘的真实写入能力(例如机械硬盘几十 MB/s,SSD 上百 MB/s)。因此速度下降并趋于稳定。

2. 存储介质的特性

  • 机械硬盘 (HDD):
    开始时硬盘缓存(几 MB 到几百 MB 的 DRAM 缓存)能吸收一部分数据,写入看似很快;缓存写满后,速度掉到盘片的真实顺序写速度(50–200 MB/s)。如果涉及磁头频繁寻道(碎片化、并发任务),速度会更低。
  • 固态硬盘 (SSD):有 SLC 缓存(几十 GB 甚至更大),在缓存可用时写入速度极快;一旦超过缓存容量,就会掉到 TLC/QLC 原生写入速度(可能从 1 GB/s 掉到 100 MB/s 甚至更低)。

3. 文件系统与 I/O 调度

  • 文件系统元数据开销:ext4、xfs 在大文件连续写入时表现较好,但如果文件碎片化、开启日志模式,速度会下降。
  • I/O 调度策略:Linux 的 CFQ、BFQ 等调度器可能会根据负载动态调整优先级,导致初始快、后期慢。
  • 写回机制:/proc/sys/vm/dirty_background_ratio 和 dirty_ratio 参数决定了缓存多久写回到磁盘,过大可能造成“先快后慢”的体验。

4. 总结

Ubuntu 下大文件拷贝“先快后慢”是正常现象:前期利用了 内存缓存 和 硬盘缓存 → 速度虚高;后期进入 真实磁盘写入速度 → 速度下降并趋于稳定。若要更稳定的速度,可以:用 SSD 替代机械硬盘;调整 rsync --inplace 避免缓存过大;修改内核参数(dirty_ratio 等)优化写回策略。

http://www.xdnf.cn/news/1480483.html

相关文章:

  • spring事务传播机制
  • 智能驾驶调研
  • 智慧灌区系统:科技赋能,让农田灌溉更智能、更高效、更可持续
  • MySQL数据库精研之旅第十七期:深度拆解事务核心(下)
  • 【营销策略算法】关联规则学习-购物篮分析
  • 淘宝拍立淘按图搜索及淘宝API(JSON数据返回)核心解析
  • Python列表:从入门到灵活运用的全攻略
  • [光学原理与应用-425]:非线性光学 - 非线性光学研究的内容:非线性晶体、光波频率的变化
  • Python中list()使用详解及注意事项
  • 微服务的编程测评系统21-项目部署-mysql-nacos
  • Java线程通信
  • ChatGPT下的相关聊天提示词
  • 深度学习:残差网络ResNet与迁移学习
  • 【LeetCode热题100道笔记】二叉树的直径
  • 【杂类】Spring 自动装配原理
  • 基于多级特征编码器用于声学信号故障检测模型
  • 嵌入式学习日记
  • Linux系统编程—进程控制
  • 产品更新与路线图平台ShipShipShip
  • Java中的字符串
  • 提示词工程(Prompt Engineering)的崛起——为什么“会写Prompt”成了新技能?
  • Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
  • 【FastDDS】Layer Transport ( 04-TCP Transport )
  • 数据库中间件ShardingSphere v5.2.1
  • (算法 哈希表)【LeetCode 242】有效的字母异位词
  • 关于 React 19 的四种组件通信方法
  • 十三、计算机领域英语
  • TDengine 时间函数 WEEKOFYEAR() 用户手册
  • 【C++框架#3】Etcd 安装使用
  • Blender 3D建模工具学习笔记