Linux 中的 free 命令,会输出:缓存
total 总量性能
used 已使用操作系统
free 空闲设计
shared 共享内存内存
buffers it
cachedsed
前面四项都比较好理解,一看我也就知道啥意思了。可是buffer 和 cached 我就一直不很理解,终于看到某篇文章写的很详细,因而记下来;程序
·A buffer is something that has yet to be "written" to disk. ---buffer 写缓存,数据存储时,先保存到磁盘缓冲区,而后再写入到永久空间数据
·A cache is something that has been "reed" from the disk adn stored for later use. --cache 读缓存,数据从磁盘读出后,暂留在缓冲区,预备程序接下来的使用,英文
英文好点的,应该已经看出了端倪,
buffer 用于存放要输出到磁盘的数据,而cache是从磁盘读出存放到内存中待从此使用的数据。它们的引入均是为了提供IO的性能。
内存:从用户和操做系统的角度来看,其大小空间是有区别的。像buffer/cached的内存,因为这块内存从操做系统的角度确实被使用,但若是用户要使用,这块内存是能够很快被回收而被用户空间程序使用,所以从用户角度而言这块内存应被划为空闲状态。
为何Linux 会有这种机制呢?
其实这是一种很是优秀的设计,目的就是为了提高磁盘IO的性能,从低速的块设备上读取的数据会暂时保存在内存中,即便数据在当时已经再也不须要了,但在应用程序下一次访问该数据时,它能够从内存中直接读取,从而绕开低速的块设备,从而提升系统的总体性能。