linux的内存管理机制、内存监控、buffer/cache异同_huangmr0610的博客-CSDN博客


本站和网页 https://blog.csdn.net/huangjin0507/article/details/51178768 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

linux的内存管理机制、内存监控、buffer/cache异同_huangmr0610的博客-CSDN博客
linux的内存管理机制、内存监控、buffer/cache异同
huangmr0610
于 2016-04-18 13:02:06 发布
7016
收藏
分类专栏:
linux实用方法
文章标签:
buffer
cache
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huangjin0507/article/details/51178768
版权
linux实用方法
专栏收录该内容
52 篇文章
2 订阅
订阅专栏
    在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存(buffer/cache),利用内存读写的高速特性来提高Linux系统的数据访问性能。在这方面,区别于Windows的内存管理。本文从Linux的内存管理机制入手,简单介绍linux如何使用内存、监控内存,linux与windows内存管理上的区别简介,linux内存使用的一大特点(buffer/cache的异同)。
一、Linux内存管理机制
1、物理内存和虚拟内存
    我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。
     物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。
    作为物理内存的扩展,linux会
在物理内存不足(注意这一条件,这一条件的量化分析请参考https://www.douban.com/note/349467816/)
时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。
    Linux的内存管理采取的是分页存取机制(详细可参考http://www.linuxeye.com/Linux/1931.html),为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。
    要深入了解linux内存运行机制,需要知道下面提到的几个方面:
Linux系统会根据系统配置不时地进行页面交换操作,以保持一定量的空闲物理内存,有些配置下即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面。这可以避免等待交换所需的时间。相关的配置有/etc/sysctl.conf中的vm.swappiness配置(配制方法请参考http://www.vcaptain.com/?id=17),该参数的作用简单描述就是“当 swappiness 内容的值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 swap 分区;当 swappiness 内容的值为 100 时,表示积极地使用 swap 分区,并且把内存中的数据及时地置换到 swap 分区。Linux 系统初始安装完成时,其默认值为 60, 这表示空闲物理内存少于 60% 时开始启用内存置换算法,将内存中不常使用的数据置换到 swap 分区。”(具体如何起作用请参考https://www.douban.com/note/349467816/) Linux 进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存,linux内核根据”最近最经常使用“算法,仅仅将一些不经常使用的页面文件交换到虚拟 内存,有时我们会看到这么一个现象:linux物理内存还有很多,但是交换空间也使用了很多。其实,这并不奇怪,例如:一个占用很大内存的进程运行时,需要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来这个占用很多内存资源的进程结束并释放了很多内存时,刚才被交换出去的页面 文件并不会自动的交换进物理内存,除非有这个必要,那么此刻系统物理内存就会空闲很多,同时交换空间也在被使用,就出现了刚才所说的现象了。关于这点,不用担心什么,只要知道是怎么一回事就可以了。 交换空间的页面在使用时会首先被交换到物理内存,如果此时没有足够的物理内存来容纳这些页 面,它们又会被马上交换出去,如此以来,虚拟内存中可能没有足够空间来存储这些交换页面,最终会导致linux出现假死机、服务异常等问题,linux虽然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。
    分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。
    因此,合理规划和设计Linux内存的使用,是非常重要的。
二、内存的监控
    作为一名Linux系统管理员,监控内存的使用状态是非常重要的,通过监控有助于了解内存的使用状态,比如内存占用是否正常,内存是否紧缺等等,监控内存最常使用的命令有free、
top
等,下面是某个系统free的输出(free默认单位是KB):
[root@linuxeye ~]# free
total used free shared buffers cached
Mem: 3894036 3473544 420492 0 72972 1332348
-/+ buffers/cache: 2068224 1825812
Swap: 4095992 906036 3189956我们使用total1、used1、 free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行(不考虑标题行)和第二行
(不考虑标题行)的数据。
--------第一行数据:代表内核角度的统计-------- total1:表示物理内存总量。 used1:表示已使用(已分配出去)的物理内存总量,包括真正已使用和分配给缓存(包含buffers 与cached)的数量。 free1:未被分配的物理内存。 shared1:共享内存,一般系统不会用到,这里也不讨论。 buffers1: 系统分配给buffers 的内存大小。 cached1:系统分配给cached 的内存数量。buffer 与cache 的区别见后面。
--------第二行数据:代表应用角度的统计-------- used2:实际使用内存总量。 free2:系统当前实际可用内存,包括未被分配的内存以及分配给buffers 与cached 的内存之和。
可以整理出如下等式: total1 = used1 + free1 total1 = used2 + free2 used1 = buffers1 + cached1 + used2 free2 = buffers1 + cached1 + free1
上面提到free命令输出的内存状态,可以通过两个角度来查看:一个是从内核的角度来看,一个是从应用层的角度来看的:
1、从内核的角度来查看内存的状态
    就是内核目前可以直接分配到,不需要额外的操作,即为上面free命令输出中第二行Mem项的值,可以看出,此系统物理内存有3894036K,空闲的内存只有420492KB,也就是410MB多一点,我们来做一个这样的计算:
total1 - used1 = free1
3894036 - 3473544 = 420492
    其实就是总的物理内存减去已分配的物理内存得到的就是空闲的物理内存大小,注意这里的可用内存值420492K并不包含处于buffers和cached状态的内存大小。
如果你认为这个系统空闲内存太小,那你就错了,实际上,内核完全控制着内存的使用情况,Linux会在需要内存的时候,或在系统运行逐步推进时,将buffers和cached状态的内存变为free状态的内存,以供系统使用。
2、从应用层的角度来看系统内存的使用状态
    也就是Linux上运行的应用程序可以使用的内存大小,即free命令第三行(这里说的第几行包含了标题行) -/+ buffers/cached 的输出,可以看到,此系统已经使用的内存才2068224K,而空闲的内存达到1825812K,继续做这样一个计算:
free2 = buffers1 + cached1 + free1
420492+(72972+1332348)=1825812
     通过这个等式可知,应用程序可用的物理内存值是Mem项的free值(free1)加上buffers1和cached1值之和,也就是说,这个free值是包括buffers和cached项大小的,
对于应用程序来说,buffers/cached占有的内存是可用的,因为buffers/cached是为了提高文件读取的性能,当应用程序需要用到内存的时候,buffers/cached会很快地被回收,以供应用程序使用
三、linux和windows内存管理的区别
    Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会释放内存的,即时占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有很大的内存,用过一段时间后,也会被占满。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处。
    windows则总是给内存留下一定的空闲空间,即时内存有空闲也会让程序使用一些虚拟内存,这样做的好处是,启动新的程序比较快,直接分给它些空闲内存就可以了,而linux下呢?由于内存经常处于全部被使用的状态,则要先清理出一块内存,再分配给新的程序使用,因此,新程序的启动会慢一些。
四、buffers与cached
1、异同点
     在Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从磁盘读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写 数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。然而,如果有大量数据需要从磁盘读取到内存或者由内存写入磁盘时,系统的读写性 能就变得非常低下,因为无论是从磁盘读数据,还是写数据到磁盘,都是一个很消耗时间和资源的过程,在这种情况下,Linux引入了buffers和 cached机制。
    buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件时,会首先在buffers 与cached内存区查找,如果找到,直接读出传送给应用程序,如果没有找到需要数据,才从磁盘读取,这就是操作系统的缓存机制,通过缓存,大大提高了操 作系统的性能。但buffers与cached缓冲的内容却是不同的。
    buffers是用来缓冲块设备做的,它只记录文件系统的元数据(metadata)以及 tracking in-flight pages
,而
cached是用来给文件做缓冲
。更通俗一点说:buffers主要用来存放目录里面有什么内容,文件的属性以及权限等等。而cached直接用来记忆我们打开过的文件和程序。
    为了验证我们的结论是否正确,可以通过vi打开一个非常大的文件,看看cached的变化,然后再次vi这个文件,感觉一下两次打开的速度有何异同,是不是第二次打开的速度明显快于第一次呢?这里提供一个小脚本打印首次及第二次打开一个大文件(catalina.logaa  约2G)耗时及cached/buffers的变化:
#!/bin/bash
sync
sync
echo 3 > /proc/sys/vm/drop_caches
echo -e "----------------------缓存释放后,内存使用情况(KB):----------------------"
free
cached1=`free |grep Mem:|awk '{print $7}'`
buffers1=`free |grep Mem:|awk '{print $6}'`
date1=`date +"%Y%m%d%H%M%S"`
cat catalina.logaa >1
date2=`date +"%Y%m%d%H%M%S"`
echo -e "----------------------首次读取大文件后,内存使用情况(KB):----------------------"
free
cached2=`free |grep Mem:|awk '{print $7}'`
buffers2=`free |grep Mem:|awk '{print $6}'`
#echo $date1
#echo $date2
interval_1=`expr ${date2} - ${date1}`
cached_increment1=`expr ${cached2} - ${cached1}`
buffers_increment1=`expr ${buffers2} - ${buffers1}`
date3=`date +"%Y%m%d%H%M%S"`
cat catalina.logaa >1
date4=`date +"%Y%m%d%H%M%S"`
echo -e "----------------------再次读取大文件后,内存使用情况(KB):----------------------"
free
cached3=`free |grep Mem:|awk '{print $7}'`
buffers3=`free |grep Mem:|awk '{print $6}'`
#echo $date3
#echo $date4
interval_2=`expr ${date4} - ${date3}`
cached_increment2=`expr ${cached3} - ${cached2}`
buffers_increment2=`expr ${buffers3} - ${buffers2}`
echo -e "----------------------统计汇总数据如下:----------------------"
echo -e "首次读取大文件,cached增量:${cached_increment1},单位:KB"
echo -e "首次读取大文件,buffers增量:${buffers_increment1},单位:KB"
echo -e "首次读取大文件,耗时:${interval_1},单位:s \n"
echo -e "再次读取大文件,cached增量:${cached_increment2},单位:KB"
echo -e "再次读取大文件,buffers增量:${buffers_increment2},单位:KB"
echo -e "再次读取大文件,耗时:${interval_2},单位:s"执行结果如下(由于打印出来的free结果跟参数赋值时用的free命令之间有时间间隔,计算起来可能会略有不同):
    接着执行下面的命令:find /* -name  *.conf ,
看看buffers的值是否变化,然后重复执行find命令,看看两次显示速度有何不同。如下脚本(需要注意使用bc计算浮点型数据时需要安装相应软件,我的系统是centos7.0,内核4.3.3的版本,安装的是bc-1.06.95-13.el7.x86_64服务):
#!/bin/bash
sync
sync
echo 3 > /proc/sys/vm/drop_caches
echo -e "----------------------缓存释放后,内存使用情况(KB):----------------------"
free
cached1=`free |grep Mem:|awk '{print $7}'`
buffers1=`free |grep Mem:|awk '{print $6}'`
date1=`date +%s.%N`
find /* -name *.conf >2
date2=`date +%s.%N`
echo -e "----------------------首次查询后,内存使用情况(KB):----------------------"
free
cached2=`free |grep Mem:|awk '{print $7}'`
buffers2=`free |grep Mem:|awk '{print $6}'`
#echo $date1
#echo $date2
interval_1=`echo "scale=3; ${date2} - ${date1}" | bc`
cached_increment1=`expr ${cached2} - ${cached1}`
buffers_increment1=`expr ${buffers2} - ${buffers1}`
date3=`date +%s.%N`
find /* -name *.conf >2
date4=`date +%s.%N`
echo -e "----------------------再次查询后,内存使用情况(KB):----------------------"
free
cached3=`free |grep Mem:|awk '{print $7}'`
buffers3=`free |grep Mem:|awk '{print $6}'`
#echo $date3
#echo $date4
interval_2=`echo "scale=3; ${date4} - ${date3}" | bc`
cached_increment2=`expr ${cached3} - ${cached2}`
buffers_increment2=`expr ${buffers3} - ${buffers2}`
echo -e "----------------------统计汇总数据如下:----------------------"
echo -e "首次查询,cached增量:${cached_increment1},单位:KB"
echo -e "首次查询,buffers增量:${buffers_increment1},单位:KB"
echo -e "首次查询,耗时:${interval_1},单位:s \n"
echo -e "再次查询,cached增量:${cached_increment2},单位:KB"
echo -e "再次查询,buffers增量:${buffers_increment2},单位:KB"
echo -e "再次查询,耗时:${interval_2},单位:s"结果如下(最后那个应该是0.470702440,使用bc计算的时候那个0被去掉了):
2、内存释放
    linux系统中/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。关于drop_caches,官方给出的说法是:
Writing to this will cause thekernel to drop clean caches, dentries and
inodes from memory, causing thatmemory 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 andinodes:
echo 3 > /proc/sys/vm/drop_caches
As this is a non-destructiveoperation and dirty objects are not freeable, the
user should run `sync' first.
http://www.kernel.org/doc/Documentation/sysctl/vm.txt# cat /proc/sys/vm/drop_caches
默认是0,1表示清空页缓存,2表示清空inode和目录树缓存,3清空所有的缓存
[root@hps103 ~]# sync
[root@hps103 ~]# free -m
                     total       used       free     shared    buffers     cached
Mem:           499        323        175          0         52                188
-/+ buffers/cache:       82        416
Swap:         2047          0       2047
[root@hps103 ~]# echo 3 > /proc/sys/vm/drop_caches 
[root@hps103 ~]# free -m     //发现缓存明显减少了
                    total       used       free     shared    buffers     cached
Mem:           499         83         415          0          1                17
-/+ buffers/cache:      64        434
Swap:         2047          0       2047
五、总结
    Linux操作系统的内存运行原理,很大程度上是根据服务器的需求来设计的,例如系统的缓冲机制会把经常使用到的文件和数据缓存在cached 中,linux总是在力求缓存更多的数据和信息,这样再次需要这些数据时可以直接从内存中取,而不需要有一个漫长的磁盘操作,这种设计思路提高了系统的整体性能。
主要参考文章:http://www.linuxeye.com/Linux/1932.html
huangmr0610
关注
关注
点赞
收藏
打赏
评论
linux的内存管理机制、内存监控、buffer/cache异同
本文从Linux的内存管理机制入手,简单介绍linux如何使用内存、监控内存,linux与windows内存管理上的区别简介,linux内存使用的一大特点(buffer/cache的异同)。
复制链接
扫一扫
专栏目录
Linux内核内存Cache机制原理
03-14
Linux内核内存Cache机制原理从源码的角度来分析流程,可以帮助Linux内核学习者了结Cache的内存机制!
Linux中Cache内存占用过高解决办法
c123m的专栏
09-22
9728
在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:
这里的默认显示单位是kb,我的服务器是128G内存,所以数字显得比较大。这个命令几乎是每一个使用过Linux的人必会的命令,但越是这样的命令,似乎真正明白的人越少(我是说比例越少)。一般情况下,对此命令输出的理解可以分这几个层次:
不了解
参与评论
您还未登录,请先
登录
后发表或查看评论
Linux进程内存的布局和管理
最新发布
superficial11的博客
10-29
43
UNIX系统编程
Linux 内存 buffer 和 cache 的区别
热门推荐
David Dai -- Focus on Oracle
06-01
3万+
<br /> <br />一. 内存使用说明<br /> <br />Free 命令相对于top 提供了更简洁的查看系统内存使用情况:<br /> <br />[root@rac1 ~]# free <br /> total used free shared buffers cached<br />Mem: 1035108 1008984 26124 0 124212 413000<b
Linux 中内存 buffer 和 cache 的区别
代码湾
08-03
4313
细心的朋友会注意到,当你在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题。
先来说说free命令
其中:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Bu...
Linux内存监控与调优
weixin_34234721的博客
09-14
67
首先,内存在被使用是被分为区域的32位系统:zone_DMA ·zone_NORMAL (正常内存区域 16M) ·zone_RESRVED(用于高地址内存空间 896M) ·zone_HIGHMEM(高地址内存空间 ) 64位系统: ·zone_DMA(16G) ·zone_DMA32(4G) ·zone_normal(大于4G)内存大页 : Hug...
Linux下网络丢包故障定位
maimang1001的专栏
12-08
5674
Linux下网络丢包故障定位 | syxdevcode博客转载: 云网络丢包故障定位全景指南 硬件网卡丢包Ring Buffer溢出 如图所示,物理介质上的数据帧到达后首先由NIC(网络适配器)读取,写入设备内部缓冲区 Ring Buffer中,再由中断处理程序触发 Softirq 从中消费,Ring Buffer 的大小因网卡设备而异。当网络数据包到达(生产)的速率快于内核处理(消费)的速率时,Ring Buffer 很快会被填满,新来的数据包将被丢弃https://syxdevcode.github.i
Linux 内存中的缓冲区(Buffer)与缓存(Cache)
Trouvailless的博客
05-14
1362
Buffer 和 Cache 的定义:
Buffer:是原始磁盘块的临时存储,即将缓存数据写入磁盘。它通常不会很大(大约 20MB)。这样,内核就可以将分散的写入集中起来,从而对磁盘写入进行统一优化。例如,多个小的写入可以合并为一个大的写入等。
Cache:是用于从磁盘读取文件的页面缓存,用于缓存从文件中读取的数据。这样,下次访问这些文件数据时,可以直接从内存中快速取回,而无需再次访问缓慢的磁盘。
但是让我问你,由于 Buffer 只是将写入磁盘的数据的缓存。反过来,它还会缓存从磁盘读取的数据吗?或者.
Cache 和 Buffer 都是缓存,主要区别是什么?
qq_40529035的博客
11-11
386
提到这个问题,可能意味着你意识到了两者的相关性。的确,他们确实有那么一些联系。
首先cache是缓存,buffer是缓冲,虽然翻译有那么一个字的不同,但这不是重点。
个人认为他们最直观的区别在于cache是随机访问,buffer往往是顺序访问。虽然这样说并没有直击本质,不过我们可以待分析完毕之后再来讨论真正的本质。
为了说明这个问题,让我将他们分开来说:read cache(读缓存),read buffer(读缓冲),write cache(写缓存),write buffer(写缓冲)。
无论.
buffer和cache的区别
bo_的博客
07-28
4381
adb shell 进入avd或者真机后台:getevent
getevent -r -q 监控设备的sendevent事件
Java代码
root@android:/#getevent-h
Usage:getevent[-t][-n][-sswitchmask][-S][-v[mask]][-d][-p][-i][-l][-q][-ccount...
一文搞清楚linux系统内存详情:buffer/cache等
iqifenxia的博客
11-09
1062
前言
我们都知道,free命令可以查看linux系统里的内存使用情况:
但是这个粒度比较粗,对实际的内存问题的调试,帮助并不大。我们在开发或者调试问题的过程中,有时候需要掌握更细粒度的系统内存的详细的使用情况,这个时候/proc/meminfo的输出内容就派上用场了。通过它的输出信息,我们可以:
清晰地知道系统中的内存瓶颈究竟在哪里?(毕竟内核里面使用内存的单元太多了)
内存是被块设备的IO,也就是Buffer给占用了,还是被Cache给占用了?
如果是被Cache给占了,具体是被shar
linux监控内存使用情况的命令
weixin_34138521的博客
11-22
1726
2019独角兽企业重金招聘Python工程师标准>>>
...
linux内存监控命令,Linux系统监控内存管理命令大全
weixin_32526561的博客
04-29
900
Linux系统监控内存管理命令大全作为一名linux系统管理员,监控内存的使用状态是非常重要的,通过监控有助于了解内存的使用状态,比如内存占用是否正常,内存是否紧缺等等,那么linux监控内存的命令是什么呢?下面跟yjbys小编一起来看看吧!监控内存最常使用的命令有free、top等,下面是某个系统free的输出:[]#freetotal used free shared buffers cach...
Linux下找出吃内存的方法总结
weixin_34356138的博客
03-09
642
linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」。现在想要查询该进程占用的内存大小。linux命令行下有很多的工具进行查看,现总结常见的几种方式Linux下找出吃内存的方法总结Linux下找出吃内存的方法总结
通过进程的 status[root@web3_u ~]# cat /proc/25282/statusName: php-cgiSt...
Linux用户态进程如何监控内存被写事件
Netfilter
06-01
6057
上周了解到一个很好玩的问题,即 如何捕获到“一块特定的内存的内容变成某一个特定的值”这么一个事件。
嗯,还是那位暴雨天穿着意尔康皮鞋给我们送伞皮鞋湿了的同事,感谢他能提供一些好玩的东西来折腾。
我并不想快速解决问题,我只是想能多玩一会儿。
正好,也碰到了一个JVM踩内存的问题,就思考了一把,完成了一个简单的demo,可以 监控每一个内存写事件。 至于内存的内容是否变成特定的值,那就在每一次捕获到...
SWAP使用情况
ggz 的博客
05-31
255
SWAP使用情况
​当系统内存不足时,操作系统会从 SWAP 分区中分配一部分空间来临时
[mysql@ip131 ~]$ free -h
total used free shared buff/cache available
Mem: 1.8G 288M 1.2G 9.5M 256M 1.3G
输出项说明
Mem 行(第二行)是内存的使用情
Linux buffer/cache解读
小楼一夜听春雨,深巷明朝卖杏花
07-19
645
cache出现的原因与功能 计算机硬件中CPU、内存、磁盘是最主要的三大部分,其中,CPU发展到今天,执行速度最快,而内存相对CPU而言,就慢多了,CPU执行的指令是从内存取出的,计算的结果也要写回内存,但内存的响应速度如果跟不上CPU的话,CPU只能无所事事的等待了。这样一来,再快的CPU也发挥不了效率。同理,内存中的数据也要回写到磁盘的,相对于机械硬盘HDD,内存的速度可快多了。这就又出现了问题,磁盘的低速读写速度,相比内存条的二进制电压变化速度,那就是蒸汽机和火箭速度的差别。这样巨大差异,即使内存读写
内存中的buffer与cache
08-06
1113
目录buffer与cache1、free命令2、proc系统中参数说明试验一 文件与磁盘的写入1、文件写入2、磁盘写入试验二 :文件和磁盘的读1、文件读取2、读磁盘 总结从命令行中查看内存中的buffer与cache,并跟踪理解其含义
free命令输出的结果有总内存,已用内存,空闲内存,缓存,可用内存。缓存是buffer与cache的总和。从字面意思上理解,buffer是缓冲区,cache是缓存,都是内存中的临时存储区,两者的区别是什么呢?在free的使用说明中有以下说明
buffer 是内核缓冲区
Linux free命令中的Buffer和Cache
恐龙弟旺仔的博客
03-30
2792
前言:
查看当前系统的内存使用情况时,我们最常使用free来查看,如下
root@7bc18553126f:/# free -h
total used free shared buff/cache available
Mem: 1.9G 374M 465M 258M 1.1G 1.3G
Swap: 1.0G
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
huangmr0610
CSDN认证博客专家
CSDN认证企业博客
码龄12年
暂无认证
46
原创
5万+
周排名
178万+
总排名
203万+
访问
等级
1万+
积分
286
粉丝
251
获赞
84
评论
908
收藏
私信
关注
热门文章
shell中数字大小的比较
107231
shell条件嵌套(if条件语句)
63966
TPS和事务响应时间的关系、计算公式
61160
安全测试常用几个工具
56536
\x与\u编码的区别,并使用python对其进行转换
50658
分类专栏
kafka
1篇
clickhouse
2篇
数据库
2篇
性能测试
52篇
linux命令详解
18篇
Java开发
7篇
linux实用方法
52篇
shell脚本设计
23篇
网络
1篇
磁阵
2篇
oracle
9篇
mysql
24篇
keepalived
虚拟机
7篇
web容器
5篇
windows
1篇
hdfs
1篇
hbase
1篇
hive
5篇
问题解决
2篇
协议
17篇
工具使用
6篇
算法原理
1篇
C语言
3篇
docker
6篇
自动化测试
2篇
nginx
持续集成
1篇
管理体会
1篇
系统运维
2篇
mesos
1篇
hadoop
2篇
zookeeper
5篇
jvm
6篇
测试工具
14篇
redis
2篇
mongodb
1篇
dubbo
8篇
系统调优
移动端测试
安全测试
1篇
系统原理
2篇
SQL
4篇
编码格式
1篇
python
3篇
最新评论
根目录/缺少执行权限x产生的两种错误
geekyouth:
chmod 755 /
好使
HTTP协议1:工作原理
m0_50658746:
必须点赞
clickhouse20.3.19.4-ARM版本简单修改重新编译,以支持kafka引擎表
m0_70819234:
按博主说的换了,重新编译成功没生成makefile,是咋回事啊?
HTTP协议1:工作原理
烟雨平生iii:
厉害啊,收藏了
在kylin-ARM系统上的neokylin容器中构建clickhouse-21.3.12.2-lts
hblicy:
好的,我去试试看
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
shell获取脚本(子脚本)绝对路径的方法
Idea导入的项目不展示目录结构,只展示第一层目录下的文件问题解决
clickhouse20.3.19.4-ARM版本简单修改重新编译,以支持kafka引擎表
2021年5篇
2018年6篇
2017年5篇
2016年151篇
2015年110篇
2014年6篇
目录
目录
分类专栏
kafka
1篇
clickhouse
2篇
数据库
2篇
性能测试
52篇
linux命令详解
18篇
Java开发
7篇
linux实用方法
52篇
shell脚本设计
23篇
网络
1篇
磁阵
2篇
oracle
9篇
mysql
24篇
keepalived
虚拟机
7篇
web容器
5篇
windows
1篇
hdfs
1篇
hbase
1篇
hive
5篇
问题解决
2篇
协议
17篇
工具使用
6篇
算法原理
1篇
C语言
3篇
docker
6篇
自动化测试
2篇
nginx
持续集成
1篇
管理体会
1篇
系统运维
2篇
mesos
1篇
hadoop
2篇
zookeeper
5篇
jvm
6篇
测试工具
14篇
redis
2篇
mongodb
1篇
dubbo
8篇
系统调优
移动端测试
安全测试
1篇
系统原理
2篇
SQL
4篇
编码格式
1篇
python
3篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
huangmr0610
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值