free命令、buffer与cache的区别、交换分区swap

free命令:主要提供了简介的查看系统的内存情况;默认情况下这里的单位是kb;

free命令总共输出四行:

free命令、buffer与cache的区别、交换分区swap_第1张图片

第一行:就是参数名,不做多的解释。

第二行;输出是从OS来看的,从操作系统改的角度来看:计算机一共有3919600物理内存(缺省时为KB,如果是free -m,单位则是M);这些物理内存共有3721616被用了,还有198044空闲可用。这里有一个等式:total=used+free;
share表示被几个内存共享的内存,
buffer:表示被OS用作缓冲区的;
cache:表示OS的高速缓存区;
第三行:是从一个应用程序的角度来看系统内存的使用情况。
-buffer/cache:表示一个应用程序认为系统被用掉多少内存;
+buffer/cache:表示一个应用程序认为系统还有多少内存;
因为被系统cache和buffer占用的内存可以被快速回收,所以通常free比used要大很多;

第四行:第四行为交换分区的信息,分别是交换的总量,使用量以及还剩下的空闲的交换区。

问题一:buffer/cache的区别?

        cache:高速缓存区。是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需要等待很长时间,而cache保存着CPU刚用过的数据或循环使用的部分数据(程序的访问局部性原理),这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。cache并不是缓存文件的,而是缓存块的(块是I/O读写的最小的单元);cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入cache中,这样下一个进程获取CPU控制权并访问此文件直接从cache读取,提高了系统的性能。
        buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通行时,存储慢的数据先把数据存放到buffer上,达到一定程度存储块的设备再读取buffer的数据,在此期间存储快的设备CPU可以干其他事。一般用于写磁盘,例如某个进程要求多个字段被读入,当所有要求的字段被读入之前已经读入的字段会先放到buffer中。
        它们的共同点都是为了提高cpu或程序的执行效率,避免等待时间,结局速度不匹配的问题。
问题二:什么是swap分区,其大小如何控制?

         swap分区是一种虚拟内存空间,当物理内存紧张不充足时,就需要把物理内存中的一些暂时不用的数据复制到交换分区(硬盘,虚拟内存);如果需要执行到交换分区的数据,再把数据调入内存执行。所以它的使用主要是在物理内存不足时,释放一些不常用的数据,将他们复制到交换分区,以减小物理内存的压力。事实上:什么时候用swap交换分区,并不是物理内存用完了才使用,而是可以通过参数设置的。

主要的设置参数:swappiness:

运行结果:cat /proc/sys/vm/swappiness

默认值是 60;
swappiness=0;表示最大限度使用物理内存,然后才是交换分区;这时候才是物理内存用完了就用到交换分区了;
swappiness=100;表示积极利用交换分区,只要合适就利用交换分区,较小物理内存的压力;
通过free命令可以看交换分区的大小;交换的过程就是用一个临时表将一个分区表的数据交换到另一个非分区表中;swap可以提供OS的性能;
设置交换分区时注意事项:
(1)安装时难以确定内存的负荷,如何设置交换分区的大小;
(2)系统中物理内存越大,显然需要的交换分区就越少;
因此在Red hat和ubantu系统中交换分区的设置大小规则一般如下:
物理内存   交换分区
<=4G        至少4G  //家用PC
4-16G       至少8G
16-64G      至少16G
64-256G     至少32G //处理大数据;
为什么swap还是会随着物理内存的增大而增大,因为物理内存本身就大,说明其处理的数据量特别大,所以其总体的需求量就大,swap分区会跟着增大。




你可能感兴趣的:(Linux,基础)