内存脏页参数介绍

1、参数介绍:


[root@ecs-262232 ~]# sysctl -a| grep dirty
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_ratio = 30
vm.dirty_expire_centisecs = 3000
vm.dirty_writeback_centisecs = 500

        vm.dirty_background_ratio:这个参数指定了当文件系统缓存脏页数量到达系统内存百分之多少时就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页刷入外存。

        vm.dirty_ratio:是绝对的脏数据限制,内存里的脏数据百分比不能超过这个值。如果脏数据超过这个数量,新的IO请求将会被阻挡,直到脏数据写进磁盘。这是造成IO卡顿的的主要原因,但这也是保证内存不会存在过量脏数据的保护机制。

        vm.dirty_background_byts和vm.dirty_back_bytes: 指定这些参数的另一种方法。

        vm.dirty_expire_centisecs:指定脏数据的存活时间,当pdflush/flush/kdmflush进行起来时,它会检查是否有数据超过这个时限,如果有则会把它异步写到磁盘中。

       vm.dirty_writeback_centisecs:指定多长时间pdflush/flush/kdmflush会起来一次。

2、应用场景:

        应用1:减少缓存

        在很多情况下,我们有快速的磁盘子系统,它们有自己的大电池支持的NVRAM缓存,所以将东西保存在系统页面缓存中是有风险的。让我们尝试以更及时的方式向磁盘发送IO,并减少本地操作系统“陷入困境”的机会。减小/etc/sysctl.conf中的vm.dirty_background_ratio和vm.dirty_ratio的值,并执行sysctl -p(重新加载)。但不建议设置这些参数为0,一些后台I/O可以很好地将应用程序性能与磁盘阵列在SAN(“峰值”)上的较短时间的较高延迟解耦。

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

        应用2:增加缓存

        在某些情况下,显著提高缓存对性能有积极作用。这种时候,Linux客户机上包含的数据不是关键的,可能会丢失,而且应用程序还会重复的写入相同文件。理论上,通过允许内存中存在更多的脏页,你将在缓存中一遍又一遍的重写相同的块,只需要每隔一段时间实际向磁盘写一次。 

vm.dirty_background_ratio = 50
vm.dirty_ratio = 80

        有时候还会提高 vm.dirty_expire_centisecs允许脏数据更长时间停留。除了增加数据丢失的风险之外,如果缓存已满并需要同步,还有长时间Io卡顿风险。

        应用3:增加都用

        有时候系统需要应对突如其来的高峰数据,他可能会拖延磁盘。比如说:每小时或者午夜进行处理作业、在Raspberry Pi上写SD卡等等。这种情况下,我们可以允许大量的写I/O存储在缓存中,这样后台刷新操作就可以慢慢处理它:

vm.dirty_background_ratio = 5
vm.dirty_ratio = 80

        这个时候,系统后台进程在脏数据达到5%时就开始异步清理,但在80%之前系统不会强制同步写磁盘。再次基础上,调整RAM和vm.dirty_ratio就可以缓存所有写的数据,但磁盘上的数据也会有一定风险。

3、如何修改:

        临时生效方法:

echo 5 > /proc/sys/vm/dirty_background_ratio
echo 10 > /proc/sys/vm/dirty_ratio
或者
sysctl -w vm.dirty_background_ratio=5
sysctl -w vm.dirty_ratio=10

        永久生效方法:

echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.comf

4、手动刷新: 

echo 1 > /proc/sys/vm/drop_caches //释放页缓存

echo 2 > /proc/sys/vm/drop_caches //释放slab cache中的可回收部分(dentries和inodes)

echo 3 > /proc/sys/vm/drop_caches //以上全部

参考:

Linux内存回收之drop cache - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库设计准则及方法论全文共5页,当前为第1页。数据库设计准则及方法论全文共5页,当前为第1页。数据库物理设计的方法论 数据库设计准则及方法论全文共5页,当前为第1页。 数据库设计准则及方法论全文共5页,当前为第1页。 方法一:根据数据库逻辑设计,找到相应数据库产品的实现方法。 对于同一套数据库逻辑设计,不同的数据库产品有不同的实现方法,下面的表格列出了不同数据库产品的实现技术。 逻辑架构 实现技术 对称多处理器(SMP) 基本所有商业数据库都支持 Sharing Nothing架构(多分区数据库) DB2 DPF 、TeraData、Greenplum、Netezza Share Disk架构(共享磁盘) DB2 pureScale、Oracle RAC Sharing Nothing + Share Disk ExaData 方法二:合理设计数据库对象 合理设计对象是数据库的逻辑概念,其设计的好坏除了决定系统功能,有时还会决定系统的性能,其设计主要包括模型的设计,表类型的选择,索引的设计,分区设计,表空间的设计等。 在模型的设计上,我们通常采用第三范式来进行数据库对象的模型设计,但是有时为了性能考虑,我们通常会做一些退化,比如设计一些冗余字段或者多表合并来加快系统的查询性能。例如对于有大量数据的销售流水表,完全按照第三范式来做的话会有一个外键关联客户信息,一个外键关联产品信息。 但是如果系统在运行一段时间后,这三张表的数据变的非常多,那么连接查询的性能将会变得很差,我们通常的做法是再设计一张横向表,将客户信息和产品信息全都放到销售流水表里去,这样应避免了关联查询。 表通常分为很多种,除了基本表外,还有临时表、多维表、分区表、范围集群表、物化视图表等。不同的表有不同的用途,如果错误使用的话,也会对性能有比较大的影响。比如在不需要物化视图的地方使用的物化视图表,那么会对源表的增删改性能造成影响。 数据库设计准则及方法论全文共5页,当前为第2页。数据库设计准则及方法论全文共5页,当前为第2页。 数据库设计准则及方法论全文共5页,当前为第2页。 数据库设计准则及方法论全文共5页,当前为第2页。 合理的使用正确的索引是提高系统执行效率的关键因素,对索引的使用需要注意以下一些问题: 注意LIKE运算符。 注意NULL值。 优化复合索引。 注意索引的相关参数。 注意索引与谓词的关系。 根据查询所使用的列表建立索引。 根据条件语句中的谓词的选择度创建索引。 避免在建有索引的列上使用函数。 在那些需要被排序的列上创建索引。 合理使用include关键词创建索引。 指定索引的排序属性。 数据库的页大小也是在数据库设计的时候就应该确定的,否则一旦实施就很难更改。对于执行随机行读写操作的OLTP(联机事务处理)应用程序,通常最好使用较小的页大小,这样不需要的行浪费的缓冲池空间就会较少。对于一次访问大量连续的OLAP(联机分析处理)应用程序,页大小大一些比较好,这样就能减少读取特定数目的行所需要的I/O请求数,更大的页大小也可以允许您减少索引中的级别数。总之,在满足以上条件的情况下,交易系统使用较小的页更适合,仓储系统使用较大的页更适合。 对表空间的选择,通常的数据库都包含系统管理的表空间和数据库管理的表空间两种类型。系统管理表空间由操作系统的文件系统管理器分配和管理空间,管理灵活但是性能很差。数据库管理的空间由数据库管理程序控制存储空间,表空间容器可使用文件系统或裸设备,虽然管理复杂,但是在性能上会有很大的提升。 方法三:合理设计存储 方法四:优化数据库参数,减少资源竞争 优化配置数据库的参数,包括各种缓存池的大小,内存区的配置,刷新脏页的策略,锁的策略等。虽然各个数据库都不相同,但是所有的出发点都是为了通过数据库参数,降低物理读的次数和发生资源竞争的可能性。 性能评审关注的性能指标: 耗时最长的SQL的平均执行时间。 数据库的平均CPU利用率。 CPU的执行时间、IO等待的时间和锁等待时间。 平均I/O响应时间。 支持峰值IOPS数和MPS数。 物理读和逻辑读的百分比。 有效索引读的百分比。 有效行读的百分比。 数据库设计准则及方法论全文共5页,当前为第3页。数据库设计准则及方法论全文共5页,当前为第3页。 数据库设计准则及方法论全文共5页,当前为第3页。 数据库设计准则及方法论全文共5页,当前为第3页。 性能优化策略 1、数据库、表创建方式的优化 在我们设计概念模型时需要结合业务需求,设计出合理的对象关系和优化的模型结构,在设计物理模型时应该充分考虑创建库表基本策略。 建数据的日志方式 No Logging:不能进行事务处理。 Buffered Log:共享缓存满即刷新写入磁盘。 Unbuffered Log:当一个交易完成时即刷新写入磁盘
《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、mysql高可用集群搭建与管理、mysql服务器性能和服务监控等方面多角度深入讲解了如何去管理与维护mysql服务器。 书中内容以实战为导向,所有内容均来自于笔者多年实践经验的总结和对新知识的拓展,同时也针对运维人员、dba等相关工作者会遇到的有代表性的疑难问题给出了实用的情景模拟,并给出了解决方案。不论你目前有没有遇到过此类问题,相信对你以后处理相关问题都会有所借鉴。本书适合所有希望构建和管理高性能、高可用性的mysql数据库系统的开发者和dba阅读。 目录 · · · · · · 前言 第一部分 mysql5.5 新特性篇 第1章 mysql5.5介绍 2 1.1 性能上的显著改变 2 1.1.1 mysql5.5默认存储引擎的调整 2 1.1.2 充分利用cpu多核的处理能力 7 1.1.3 提高刷新脏页数量和合并插入数量,改善磁盘i/o处理能力 8 1.1.4 增加自适应刷新脏页功能 9 1.1.5 让innodb_buffer_pool缓冲池中的热数据存活更久 9 1.1.6 innodb的数据恢复时间加快 11 1.1.7 innodb同时支持多个bufferpool实例 15 1.1.8 可关闭自适应哈希索引 17 1.1.9 在innodb中可选择使用内存分配程序 18 1.1.10 提高默认innodb线程并发数 21 1.1.11 预读算法的变化 22 1.1.12 首次在linux上实现了异步i/o 23 1.1.13 恢复组提交 24 1.1.14 innodb使用多个回滚段提升性能 26 1.1.15 改善清除程序进度 26 .1.1.16 添加删除缓冲和清除缓冲 27 1.1.17 控制自旋锁spin lock轮训间隔 28 1.1.18 快速创建、删除、更改索引 29 1.1.19 innodb支持创建压缩数据页 30 1.1.20 可动态关闭innodb更新元数据的统计功能 37 1.2 安全性、稳定性的显著改变 38 1.2.1 复制功能加强 38 1.2.2 中继日志relay-log可自我修复 39 1.2.3 开启innodb严格检查模式 39 1.3 动态更改系统配置参数 39 1.3.1 支持动态更改独立表空间 39 1.3.2 支持动态更改innodb锁超时时间 40 1.4 innodb新参数汇总 40 1.5 同步复制新参数汇总 48 1.6 sql语句写法的改变 53 1.6.1 delete表连接语法改变 53 1.6.2 mysql5.5存储过程支持limit变量 54 1.7 mysql5.1升级为mysql5.5 55 1.7.1 采用mysql_upgrade升级授权表方式升级 55 1.7.2 直接安装mysql5.5,采用数据导出/导入方式升级 59 1.8 性能测试:mysql5.5与mysql5.1 60 第2章 半同步复制 62 2.1 半同步复制简介 62 2.2 半同步复制安装配置 63 2.3 参数说明 63 2.4 功能测试 64 2.4.1 如何验证半同步复制是否正常工作 64 2.4.2 半同步复制与异步复制的切换 65 2.5 性能测试 68 2.6 小结 70 第二部分 故障诊断与性能优化篇 第3章 故障诊断 72 3.1 影响mysql性能的因素 72 3.2 系统性能评估标准 73 3.2.1 影响linux服务器性能的因素 73 3.2.2 系统性能评估指标 74 3.2.3 开源监控和评估工具介绍 76 3.3 故障与处理 79 3.3.1 连接数过多导致程序连接报错的原因 79 3.3.2 记录子查询引起的宕机 84 3.3.3 诊断事务量突高的原因 87 3.3.4 谨慎设置binlog_format=mixed 90 3.3.5 未设置swap分区导致内存耗尽,主机死机 94 3.3.6 mysql故障切换之事件调度器注意事项 95 3.3.7 人工误删除innodb ibdata数据文件,如何恢复 97 3.3.8 update忘加where条件误操作恢复(模拟oracle闪回功能) 99 3.3.9 delete忘加where条件误操作恢复(模拟oracle闪回功能) 108 第4章 同步复制报错故障处理 112 4.1 最常见的3种故障 112 4.1.1 在master上删除一条记录时出现的故障 112 4.1.2 主键重复 114 4.1.3 在master上更新一条记录,而slave上却找不到 115 4.2 特殊情况:slave的中继日志relay-log损坏 116 4.3 人为失误 118 4.4 避免在master上执行大事务 119 4.5 slave_exec_mode参数可自动处理同步复制错误 120 4.6 如何验证主从数据一致 121 4.7 binlog_ignore_db引起的同步复制故障 123 4.8 mysql5.5.19/20同步一个bug 124 4.9 恢复slave从机上的某几张表的简要方法  126 4.10 如何干净地清除slave同步信息 127 第5章 性能调优 129 5.1 表设计 129 5.2 字段类型的选取 133 5.2.1 数值类型 134 5.2.2 字符类型 139 5.2.3 时间类型 141 5.2.4 小技巧:快速修改表结构 148 5.2.5 pt-online-schema-change在线更改表结构 152 5.2.6 mysql5.6在线ddl更改表测试 158 5.3 采用合适的锁机制 161 5.3.1 表锁的演示 161 5.3.2 行锁的演示 164 5.3.3 innodb引擎与myisam引擎的性能对比 166 5.4 选择合适的事务隔离级别 168 5.4.1 事务的概念 168 5.4.2 事务的实现 169 5.4.3 事务隔离级别介绍 171 5.5 sql优化与合理利用索引 177 5.5.1 如何定位执行很慢的sql语句 177 5.5.2 sql优化案例分析 178 5.5.3 合理使用索引 188 5.6 my.cnf配置文件调优 198 5.6.1 per_thread_buffers优化 198 5.6.2 global_buffers优化 200 5.6.3 query cache在不同环境下的使用 201 5.6.4 tuning-primer.sh性能调试工具的使用 205 5.6.5 72 gb内存的my.cnf配置文件 208 5.6.6 谨慎使用分区表功能 211 5.7 mysql5.6同步复制新特性详解 213 第6章 备份与恢复 223 6.1 冷备份 224 6.2 逻辑备份 224 6.2.1 mysqldump增加了一个重要参数 225 6.2.2 取代mysqldump的新工具mydumper 226 6.2.3 逻辑备份全量、增量备份脚本 229 6.3 热备份与恢复 230 第三部分 高可用集群管理篇 第7章 目前流行的4种高可用架构 236 7.1 采用mysql自带的replication架构 237 7.1.1 keepalived+mysql replication架构的搭建演示 237 7.1.2 mmm+mysql replication架构的搭建演示 241 7.2 heartbeat+drbd+mysql架构的搭建演示 249 7.3 红帽rhcs共享存储架构的搭建演示 254 7.3.1 安装过程 257 7.3.2 红帽rhcs集群的维护 265 7.4 mysql高可用集群ha解决方案的测试评估 267 第8章 批量管理服务器 270 8.1 开源工具pssh的使用方法 270 8.2 自己编写的ssh服务器批量管理工具 273 第四部分 监控篇 第9章 性能监控 278 第10章 服务监控 283 10.1 nagios搭建与维护 283 10.2 mysql数据库的监控脚本 288 第五部分 项目案例 第11章 项目案例讲解 292 11.1 数据碎片整理方案 292 11.2 用户信息表水平拆表方案 296 11.3 阿里巴巴中间件cobar水平拆表方案 299
 前言   第一章绪论   Linux与其他类Unix内核的比较   硬件的依赖性   Linux版本   操作系统基本概念   Unix文件系统概述   Unix内核概述   第二章内存寻址   内存地址   硬件中的分段   Linux中的分段   硬件中的分页   Linux中的分页   第三章进程   进程、轻量级进程和线程   进程描述符   进程切换   创建进程   撤消进程   第四章中断和异常   中断信号的作用   中断和异常   中断和异常处理程序的嵌套执行   初始化中断描述符表   异常处理   中断处理   软中断及tasklet   工作队列   从中断和异常返回   第五章内核同步   内核如何为不同的请求提供服务   同步原语   对内核数据结构的同步访问   避免竞争条件的实例   第六章定时测量   时钟和定时器电路   Linux计时体系结构   更新时间和日期   更新系统统计数   软定时器和延迟函数   与定时测量相关的系统调用   第七章进程调度   调度策略   调度算法   调度程序所使用的数据结构   调度程序所使用的函数   多处理器系统中运行队列的平衡   与调度相关的系统调用   第八章内存管理   页框管理   内存区管理   非连续内存区管理   第九章进程地址空间   进程的地址空间   内存描述符   线性区   缺页异常处理程序   创建和删除进程的地址空间   堆的管理   第十章系统调用   POSIXAPI和系统调用   系统调用处理程序及服务例程   进入和退出系统调用   参数传递   内核封装例程   第十一章信号   信号的作用   产生信号   传递信号   与信号处理相关的系统调用   第十二章虚拟文件系统   虚拟文件系统(VFS)的作用   VFS的数据结构   文件系统类型   文件系统处理   路径名查找   VFS系统调用的实现   文件加锁   第十三章I/O体系结构和设备驱动程序   I/O体系结构   设备驱动程序模型   设备文件   设备驱动程序   字符设备驱动程序   第十四章块设备驱动程序   块设备的处理   通用块层   I/O调度程序   块设备驱动程序   打开块设备文件   第十五章页高速缓存   页高速缓存   把块存放在页高速缓存中   把脏页写入磁盘   sync()、fsync()和fdatasync()系统调用   第十六章访问文件   读写文件   内存映射   直接I/O传送   异步I/O   第十七章回收页框   页框回收算法   反向映射   PFRA实现   交换   第十八章Ext2和Ext3文件系统   Ext2的一般特征   Ext2磁盘数据结构   Ext2的内存数据结构   创建Ext2文件系统   Ext2的方法   管理Ext2磁盘空间   Ext3文件系统   第十九章进程通信   管道   FIFO   SystemVIPC   POSIX消息队列   第二十章程序的执行   可执行文件   可执行格式   执行域   exec函数   附录一系统启动   附录二模块   参考文献
### 回答1: Linux 内存中的两个重要参数是: 1. 物理内存(Physical Memory):指计算机系统中实际存在的内存大小,也称为系统内存。 2. 虚拟内存(Virtual Memory):指操作系统在物理内存不足时,将硬盘上的一部分空间作为内存使用,称为虚拟内存。虚拟内存可以在物理内存和硬盘之间进行数据交换,使得系统可以运行更多的程序,提高系统的稳定性和性能。 ### 回答2: Linux内存管理中的两个重要参数是"dirty_ratio"(脏页比例)和"dirty_background_ratio"(后台脏页比例)。 脏页是指被修改过但还未写入磁盘的页。当进程修改了内存中的数据后,操作系统会将相应的页标记为脏页脏页需要被写入磁盘,以保证数据的持久性和一致性。为了控制脏页的写入行为,Linux内存管理系统提供了两个参数。 "dirty_ratio"是一个百分比值,表示在系统内存脏页所允许的最大比例。当脏页比例达到这个阈值时,内核将触发一个脏页的同步写入操作,将脏页写入磁盘。这个参数的默认值通常为20%,即当内存中的脏页比例达到20%时,系统会开始同步写入操作。 "dirty_background_ratio"也是一个百分比值,表示在后台运行时系统内存脏页所允许的最大比例。后台运行指的是系统处于相对闲置状态,没有大量磁盘和网络I/O操作的情况下。当脏页比例达到这个阈值时,内核将开始异步写入脏页,即将一部分脏页写入磁盘。这个参数的默认值通常为10%,即当内存中的脏页比例达到10%时,系统会开始异步写入操作。 通过调整这两个参数的值,可以灵活地控制脏页的写入时机和方式,以平衡系统性能和数据的持久性。 ### 回答3: Linux内存中的两个参数分别是内存容量和内存使用率。 首先,内存容量指的是计算机中可供操作系统使用的物理内存大小。Linux系统通过检测硬件配置来确定可用的内存容量。这个参数在系统启动时被加载,通过命令`free`或`cat /proc/meminfo`可以查看到当前系统的内存容量。内存容量的大小对于系统的运行非常重要,过小的内存容量可能导致系统运行缓慢或者无法正常工作。 其次,内存使用率是指当前内存被系统和应用程序使用的程度。Linux系统通过监控内存的使用情况来动态调整内存分配。内存使用率可以通过命令`free`或`cat /proc/meminfo`查看。通过实时监测内存使用率,可以确定内存资源是否足够满足当前系统的需求。如果内存使用率过高,可能会导致系统响应变慢或者出现内存不足的错误。 在实际应用中,管理员可以根据系统的需求和硬件资源配置来设置适当的内存容量,并定期监测内存使用率。当内存容量不足或使用率过高时,可以采取一些措施,例如优化应用程序的内存占用,增加物理内存的大小或者使用虚拟内存等方法来改善系统的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值