一篇很好的linux下内存,IO解析文章

本文深入探讨Linux内核中的内存管理机制,包括物理内存、虚拟内存、缓冲区和缓存的区别与作用,以及如何通过命令查看内存使用情况。

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

http://note.sdo.com/u/seeeyou/n/y8Wvx~jT5gpywE00Q000iR

 

 

内存

1.2.1 内存基础

通常包含物理内存和虚拟内存(virtual Memory ),好处是通过物理内存(RAM) 和部分硬盘空间(SWAP )组合增大了总体的内存空间,坏处是由于硬盘部分的虚拟内存的性能有限,并且RAMSWAP 之间交换增加了系统的负担。 

1.  [phoenix.lif@aliadmin036158 ~]$ free  

2.               total       used       free     shared    buffers     cached  

3.  Mem:        7680000      7504764       175236            0       490772      3193856   

4.  -/+ buffers/cache:     3820136      3859864   

5.  Swap:       2096472           88      2096384   

其中,Mem  

(1) Total 为总的物理内存;

(2) Used 表示总计分配给缓存使用的数量(即bufferscache ,但可能部分还未实际使用);

(3)Free 表示未被分配的内存;

(4)share 表示共享内存,一般不会使用;

(5)buffers :表示系统分配但未被使用的buffers 数量;

(6)Cached :表示系统分配但未被使用的cache 数量。后面详细说明buffercache 的区别。

-/+ buffers/cache:

(1)Used 表示实际使用的bufferscache 总量,即实际使用内存总量;

(2)Free 未被使用的buffercache 及未被分配的内存之和,即系统可用内存。

Swap:  虚拟内存。如果系统物理内存用完了,但是仍有虚拟内存系统仍然可以运行虽然运行很慢;但是如果Swap 也用完了,系统就会发生错误,通常会出现"application is out of memory" 的错误,严重时造成系统死锁。通常Swap 空间分配为物理内存的2-2.5 倍,但也不用完全按照这个标准,如确定内存完全够用也没必要分配太多,我们线上的服务器就没有分配太多的Swap 空间。

tips:

实际可用内存:Free(-/+ buffers/cache) = Free(Mem)+buffers(Mem)+Cached(Mem);

已分配内存:Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)

物理内存总大小:totalMem = used(-/+ buffers/cache) + free(-/+ buffers/cache)

1.2.2 Buffers & Cache

Linux 的实现中,文件 Cache 分为两个层面,一是 Page Cache ,另一个 Buffer Cache ,每一个 Page Cache 包含若干 Buffer Cache 。内存管理系统和 VFS 只与 Page Cache 交互,内存管理系统负责维护每项 Page Cache 的分配和回收。buffer cache 是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk 的缓冲区。

磁盘操作有逻辑级(文件系统)和物理级(磁盘块),这两种缓存分别是缓存逻辑和物理级数据的。如我们进行的是文件系统操作,那么文件被缓存到Page Cache ,如需要刷新文件的时候,Page Cache 将交给Buffer Cache 去完成,因为Buffer Cache 是缓存磁盘块的。即直接去操作文件就是使用Page Cache ,用dd 等命令直接操作磁盘块,就是buffer cache 缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值