Linux--- 手工释放系统cache

本文详细解析Linux vmstat命令的输出含义,并介绍了如何手动释放系统缓存,包括文件读缓冲缓存和内存缓存的释放方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux:/etc/rc.d # vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0      0 4205280  14880 2598540    0    0     0    12   11  12  0  1 98  1  0

这个cache是系统从物理内存分配一块,用来做文件系统的读缓冲,按照Linux的说明在系统内存紧张时,这个内存是会自动释放的。手工释放caches的方法:

sync;echo 3>/proc/sys/vm/drop_caches

Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

To free pagecache:

* echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

* echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

* echo 3 > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.

This tunable was added in 2.6.16.

### Linux `--cache=MODE` 参数解析 #### QEMU-KVM 缓存模式概述 QEMU-KVM 支持多种磁盘读写缓存模式来优化虚拟机 (VM) 的性能。这些模式通过调整数据如何在主机内存和 VM 磁盘之间传输,从而影响 I/O 性能和数据一致性。具体来说,有五种不同的缓存模式可供选择:writethrough、writeback、none、unsafe 和 directsync[^1]。 #### 各类缓存模式特点 - **Writethrough**: 数据会立即被写入到物理设备上,在此之前也会保存于宿主机的 RAM 中。这种方式提供了较高的安全性,因为即使发生崩溃也不会丢失未提交的数据;但是由于每次写操作都需要等待确认返回,所以速度较慢。 - **Writeback**: 宿主机先将更改存储在其内部缓冲区里而不立刻发送给目标介质直到一定条件满足为止(例如达到特定大小)。这种方法提高了吞吐量但也增加了风险——如果系统突然断电,则可能会造成部分已修改但尚未持久化的数据丢失。 - **None**: 不启用任何类型的高速缓存机制,默认情况下所有的 IO 请求都会直接传递到底层硬件处理而不会经过额外的一级或两级 buffer/Cache 层过滤。这通常用于那些本身已经具备良好 Cache 控制能力的目标设备之上。 - **Unsafe**: 类似 writeback 行为但在某些极端条件下可能违反 POSIX 标准关于同步的要求。它允许更激进地延迟刷盘动作以换取更好的响应时间表现,不过同时也意味着更高的潜在危险性。 - **Directsync**: 所有的写请求都必须等到真正完成之后才能继续执行下一步骤,确保了最高的可靠性水平的同时也带来了最差劲的整体效率指标。 对于 Docker 构建过程中的缓存管理,可以通过设置 `RUN --mount=type=cache...` 来利用本地文件系统的临时空间作为构建上下文中重复使用的资源池[^2]。这种做法可以显著减少网络下载次数并加快多阶段编译的速度。 ```bash # 使用 writethrough 模式的例子 qemu-system-x86_64 -drive file=disk.img,if=virtio,format=qcow2,cache=writethrough ... ``` ```dockerfile # Dockerfile 示例片段展示如何配置 APT 缓存 FROM ubuntu:latest AS builder RUN --mount=type=cache,target=/var/cache/apt \ apt-y some-package ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值