详解Linux内存-Swap-Buffer-Cache (详解linux中搭建常用服务器)

教程大全 2025-07-17 20:58:46 浏览

Linux系统中和是 内存 上分出来的空间,swap分的是磁盘上的空间,下面重点为大家讲解一下Linux内存、Swap、Cache、Buffer。

Linux内存、Swap、Cache、BufferLinux内存、Swap、Cache、Buffer

total:总内存大小。

used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。

free:空闲的内存大小。

shared:进程间共享内存(一般不会用,可以忽略)。

buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。

cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。

-/+ buffers/cache看做两部分:

-buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,组织和人民需要是它们是可以释放的),其值=used-buffers-cached。

+buffers/cache:可用的内存大小(同理也不是free表示的部分),其值=free+buffers+cached。

Swap:硬盘上交换分区的使用大小。

设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。

Linux内存、Swap、Cache、BufferLinux内存、Swap、Cache、Buffer

Cache(缓存),为了调高CPU和内存之间数据交换而设计,Buffer(缓冲)为了提高内存和硬盘(或其他I/O设备的数据交换而设计)。

Cache主要是针对读操作设计的,不过Cache概念可能容易混淆,我理解为CPU本身就有Cache,包括一级缓存、二级缓存、三级缓存,我们知道CPU所有的指令操作对接的都是内存,而CPU的处理能力远高于内存速度,所以为了不让CPU资源闲置,Intel等公司在CPU内部集成了一些Cache,但毕竟不能放太多电路在里面,所以这部分Cache并不是很大,主要是用来存放一些常用的指令和常用数据,真正大部分Cache的数据应该是占用内存的空间来缓存请求过的数据,即上面的Cached部分(这部分纯属个人理解,正确与否有待考证)。

Buffer主要是针对写操作设计的,更细的说是针对内存和硬盘之间的写操作来设计的,目的是将写的操作集中起来进行,减少磁盘碎片和硬盘反复寻址过程,提高性能

在Linux系统内部有一个守护进程会定期清空Buffer中的内容,将其写入硬盘内,当手动执行sync命令时也会触发上述操作。

症状一 :在Linux中频繁存取文件,物理内存很快用光,而cached一直在增长。

解释:Linux会对每次请求过的数据缓存在cache里,好处就是CPU的处理速度远远高于内存,所以在CPU和内存通讯的时候可以快速从cache中命中结果返回。

症状二 :Swap被占用。

解释:内存可能不够了,才会占Swap,所以Swap可以作为 服务器 监控的一项指标,引起注意。

(1) 清理Swap

swapoff-a&&swapon-a

操作说明:如果已经使用了Swap,且当前清空下+buffers/cache还有空间,在执行 swapoff -a操作时,会触发把Swap中的内容交换到内存中,数据不会丢失。

(2) 清理buffers/cache:

sync;sync;sync;&&3>/proc/sys/vm/drop_cachessleep20>/proc/sys/vm/drop_caches
Buffer

操作说明:

sync–>将缓存的内从写回到硬盘中;

echo 3 >/proc/sys/vm/drop_caches–>修改drop_caches的值为3,默认为0,改为3系统会清理缓存的内容;

sleep 2 –> 等一下,防止上一步没执行完;

echo 0 >/proc/sys/vm/drop_caches –> 改回默认值

通过上面的分析可以知道,当空闲物理内存不多时,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,在某种意义上,这两部分内存也可以看作诗额外的空闲内存。

swap如果被频繁调用,bi,bo长时间不为0,则才是内存资源是否紧张的依据。通过free看资源时,实际主要关注-/+ buffers/cache的值就可以知道内存到底够不够了。


linux系统安装过程硬盘分区的一个疑问

Windows掩盖了很多细节,你看的Linux教程说得不对。 Windows目前只支持基于MBR的分区表,这种分区表限制每个硬盘上最多有4个主分区,其中最多有一个可引导分区,允许将其中一个分区格式化为扩展分区,扩展分区上只能连续地保存若干被称为逻辑分区的文件。 Linux可以安装到主分区,也可以安装到逻辑分区(希望你不是要安装8年前的RedHat 9,它的内核版本是2.4,而最新的Linux内核版本已经到3.0了),只要不是安装到Windows所在分区就不会冲突。 Linux自有文件系统,无法安装到Fat32、NTFS这样的文件系统上,如果准备的分区是这几种文件系统,记得该分区会被格式化。 容易和Windows起冲突的地方在引导程序上(最好先弄清楚你的这个“F”盘是主分区还是逻辑分区,也要记清楚“F”盘并不是硬盘,而只是硬盘上的一个分区而已。 另外,在Linux下提“F”盘是没有意义的),如果你的Windows是XP的话,直接安装Linux的引导程序到MBR一般不会有问题,如果你的Windows是Vista以上版本,需要作进一步学习,尽量从Windows的引导程序来引导Linux(Vista以上版本对MBR太过依赖,稍有改动就会导致系统无法启动)。

linux系统如何进行Cache空间的清理及调试

Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches频繁的文件访问会导致系统的Cache使用量大增$ free -mtotal used free shared buffers cachedMem: 3955 3926 28 0 55 3459-/+ buffers/cache: 411 3544Swap: 5726 0 5726free内存减少到几十兆,系统运行缓慢运行sync将dirty的内容写回硬盘$sync通过修改proc系统的drop_caches清理free的cache$echo 3 > /proc/sys/vm/drop_cachesdrop_caches的详细文档如下:Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free pagecache:* echo 1 > /proc/sys/vm/drop_cachesTo free dentries and inodes:* echo 2 > /proc/sys/vm/drop_cachesTo free pagecache, dentries and inodes:* echo 3 > /proc/sys/vm/drop_cachesAs 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 tunable was added in 2.6.16.修改/etc/ 添加如636f下选项后就不会内存持续增加_ratio = _background_ratio=_writeback_centisecs=_expire_centisecs=_caches= =_cache_pressure=_memory=_reserve_ratio=32 32 =3上面的设置比较粗暴,使cache的作用基本无法发挥。 需要根据机器的状况进行适当的调节寻找最佳的折衷。

Linux下查看哪些进程占用的CPU内存资源最多

psaux 或者top

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐