Linux 文件系统缓存 -针对不同数据库有不同作用
文件系统缓存
filesystem cache
许多人没有意识到。文件系统缓存对于性能的影响。Linux系统默认的设置倾向于把内存尽可能的用于文件cache,所以在一台大内存机器上,往往我们可能发现没有多少剩余内存。(free命令显示的第二行输出,如下)。文件系统cache可以加速磁盘操作,使系统有更好的IO性能,代价只是把一些空闲的内存利用起来了。
我们需要预留多少内存做文件系统cache呢? 首先我们要理解“free”命令
total used free shared buffers cached
Mem: 2058824 1772172 286652 0 214708 879744
-/+ buffers/cache: 677720 1381104
Swap: 1048568 84 1048484
对于如上的命令输出,我们看下Mem 节,total列显示我们一共有2G内存。used列显示我们使用了约1.8G内存(1772172),快接近总内存了。其实used列包含了用于文件系统cache的部分,真实用到的内存可能远远没有这么多。
我们查看“-/+ buffers/cache.” 节,这里的“used”列(677,720)表明实际使用了多少内存。 “free”列=Mem节的buffers+cached+free ,即 free = 214708+879744+286652 = 1381104 ,表明如果bffers和cache都是空的,我们拥有多少空闲内存。所以这台机器实际只是用来661M内存(677720/1024/1024) .
那么,对于这个应用,这是合适的cache分配吗?需要更多内存用于cache吗?是否有浪费资源呢?答案是“依情况而定”。
cache的规则很简单:你希望cache能够尽可能满足正在执行的工作。从应用程序栈的角度考虑,越往下层,cache越不那么高效,越不知道应该缓存哪些内容,那么你就可能需要更大的内存,想想看磁盘阵列的巨大的cache就知道了。所以,如果你的应用程序有能力去cache,你最好把内存更多留给你的应用程序,而不是文件系统缓存。当然,也不是把所有空闲内存都分配给应用程序,因为文件系统缓存在一些场合仍然有用,比如写日志,我们也可能需要额外的buffers。但是如果让你做一个选择,是给你的数据库10GB内存还是给文件系统cache 10G内存,显然你应该把内存给数据库。所以高效的磁盘数据库往往自己实现了存储子系统,而不是依赖于文件系统缓存,从理论上来说,MySQL Innodb这样实现了自己的存储引擎,可以更智能的缓存数据的数据库天然就比Mongodb这样依赖文件系统来刷新数据的数据库高效得多。
所以,对于我们的操作系统,free命令显示出的空闲内存,应该更多关注-/+ buffers/cache: 这节内容。这表明了你的系统可能还剩余的空闲内存。我们需要确保我们有足够的剩余用于以后的负荷增长。对于数据库类应用,很多时候,我们希望越过文件系统,但对于一些日志操作,仍然需要利用文件系统cache的,由于文件系统cache不够可能导致对磁盘的压力突然增加,对于非数据库的其他应用,比如web服务器,虚拟机,往往利用好文件cache更高效,特别是对于改善IO有好处。
转载自:http://www.db110.com/文件系统缓存/
Linux 文件系统缓存 -针对不同数据库有不同作用的更多相关文章
- Linux 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别 (2014-03-16 17:54:32) 转载▼ 标签: linux 文件系统缓存 cache dirt ...
- linux文件系统 - 初始化(二)
加载initrd(上) 一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可 ...
- linux文件系统初始化过程(5)---加载initrd(下)
一.目的 linux把文件分为常规文件.目录文件.软链接文件.硬链接文件.特殊文件(设备文件.管道文件.socket文件等)几种类型,分别对应不同的新建函数sys_open().sys_mkdir() ...
- Linux文件系统的目录结构详解
Linux文件系统的目录结构详解 一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...
- Linux 文件系统剖析
[转自]https://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/ 按照分层结构讨论 Linux 文件系统 在文件系统方面,Linu ...
- linux文件系统相关资料
linux下文件系统通常是通过虚拟文件系统(VFS)蔽下层具体文件系统操作的差异,为上层的操作提供一个统一的接口.文件系统底层都是用系统IO缓存层提供的块读写接口,实现逻辑块到物理块 ...
- 区块链阶段1-Linux基础- 2 Linux文件系统
2.1 什么是文件系统 文件系统是操作系统在磁盘或分区上组织文件的方法和数据结构.负责对磁盘空间进行组织和分配,存储文件数据,并对其提供保护和检索服务.学习Linux,首先需要了解整个 Linux 文 ...
- linux文件系统体系结构 和 虚拟文件系统(VFS)
图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...
- 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]
1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...
随机推荐
- 排Bug技巧
排Bug技巧 什么是Bug? Bug一词的英文原意是"臭虫"或"虫子".但是现在,在电脑系统或游戏程序中,如果隐藏着的一些未被发现的缺陷或问题,可被人利用,人们 ...
- java 简易日历表
在页面上输出1900年以后任意一年的简易日历表 package text3; import java.util.Scanner; public class MyCalendar { public st ...
- 登录和退出Mysql
这里介绍的是通过cmd方式登录和退出Mysql的方式 一.登录命令 登录命令:mysql.exe -h主机地址 -P端口 -u用户名 -p密码 即依次输入服务器地址.服务器监听的端口.用 ...
- JavaScript中数组的key-value在对象中倒装的妙用
对于数组的去重.寻找指定元素的索引,通常我们都是通过遍历来解决,但是在某些应用场景下,将数组的value-key进行倒装,也即将value当做对象的key,key当做对象value,可以极大降低算法的 ...
- C# vb .net实现亮度调整特效滤镜效果
在.net中,如何简单快捷地实现Photoshop滤镜组中的亮度调整呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...
- BUAA OO 2019 第四单元作业总结
目录 第四单元总结 总 UML UML 类图 UML 时序图 UML 状态图 架构设计 第十三次作业 第十四次作业 课程总结 历次作业总结 架构设计 面向对象方法理解 测试方法理解与实践 改进建议 尽 ...
- 分享-SpringCloud微服务架构图
1: 为大家分享一张SpringCloud微服务通用架构图 标题 此图仅供参考: 需要原图的同学请移步 >>>>>>>>> 这里 如有不合理的地 ...
- Elasticsearch 是什么
Elasticsearch 是什么 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功 ...
- Python 依赖版本控制 (requirements.txt 文件生成和使用)
requirements.txt 最好配合虚拟空间使用, 虚拟空间的使用请参考 Python 虚拟空间的使用 - 难以想象的晴朗. requirements.txt 可以保证项目依赖包版本的确定性, ...
- Hadoop 二次排序
需求 求每年的最高气温,年份升序,温度求最高 数据源内容如下 temperature.txt 2004 49 1981 -22 1981 -31 1965 -47 2027 -2 1964 6 203 ...