首页
学习
活动
专区
圈层
工具
发布

记一次Linux主机内存脏数据引发的NameNode故障

IO系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。 这个Linux延迟写机制带来的问题,并且在主机内存越大时,出现该问题的可能性更大。...vm.dirty_ratio 是绝对的脏数据限制,内存里的脏数据百分比不能超过这个值,如果超过,将强制刷写到磁盘。如果脏数据超过这个数量,新的IO请求将会被阻挡,直到脏数据被写进磁盘。...这是造成IO卡顿的重要原因,但这也是保证内存中不会存在过量脏数据的保护机制。 vm.dirty_expire_centisecs 指定脏数据能存活的时间。在这里它的值是30秒。...,这里简单说一下: 脏数据 由于Linux内核实现的一种主要磁盘缓存的存在,也就是页高速缓存(cache)。...当页高速缓存中的数据比后台存储的数据更新时,那么该数据就被称做脏数据。 参考 关于Linux内核延迟写机制,可以学习以下文章:http://ilinuxkernel.com/?

1.7K21

深入理解Linux内核之脏页跟踪

1.开场白 环境: 处理器架构:arm64 内核源码:linux-5.10.50 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope Linux内核由于存在page...cache, 一般修改的文件数据并不会马上同步到磁盘,会缓存在内存的page cache中,我们把这种和磁盘数据不一致的页称为脏页,脏页会在合适的时机同步到磁盘。...为了回写page cache中的脏页,需要标记页为脏。 脏页跟踪是指内核如何在合适的时机记录文件页为脏,以便内核在进行脏页回写时,知道将哪些页面回写到磁盘。...在Linux内核中,因为跟踪脏页会涉及到文件回写、缺页异常、反向映射等技术,所以本文也重点讲解在Linux内核中如何跟踪脏页。...脏页回写之后,页描述符脏标志位是清零的,文件写页调用链会设置页描述符脏标志位。

3.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    脏读

    什么是脏读? 脏读(Dirty Read)发生在一个事务读取了另一个事务尚未提交的数据时。如果那个未提交的事务最终被回滚,那么第一个事务读取的数据就是“脏”的,因为它读取了从未最终存在过的数据状态。...为什么需要避免脏读? 脏读需要被避免,因为它会导致数据的不一致性。如果一个事务依赖于另一个事务尚未提交的数据,它可能会做出错误的决策或计算。...脏读的实现原理? 脏读是并发控制中的一个现象,其实现原理与数据库的事务隔离级别密切相关。...脏读的优点 在大多数情况下,脏读并没有优点,因为它通常会导致数据的不一致性。然而,可以认为在某些非常特定的场景中,允许脏读可以提高数据库的并发性能。 6....总结 脏读是一个应该在大多数数据库应用中避免的现象。通过设置适当的事务隔离级别,可以预防脏读,保持数据的一致性和完整性。

    73140

    Linux - Linux内存管理

    移除交换空间 ---- 概念 内存管理是Linux系统重要的组成部分。...为了解决内存紧缺的问题,Linux引入了虚拟内存的概念。为了解决快速存取,引入了缓存机制、交换机制等。...当需要用到原始内容时,这些信息会被重新从交换空间读入物理内存。 Linux的内存管理采取的是分页存取机制。...要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存。...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存中。

    64K42

    脏数据

    设置脏数据 脏数据是XCode实体类内置功能,每一个实体类属性set操作中都带有脏数据逻辑。 ? 实体类属性并非普通属性,而是带有OnPropertyChanging逻辑 ?...这里是脏数据的默认设置点,先比较新旧值是否一致,如果一致,显然不会设置脏数据。...最大的不同点在于:后者一定不会设置脏数据,仅仅是简单赋值;前面两个可能会设置脏数据,要求Password原值不等于"Stone"时才会设置脏数据。...在大数据分析处理场合,数百万实体对象位于内存之中,Dirtys将导致每个实体对象附带实例化一个脏数据集合对象,而IsDirty则不会,因此效果更好。..., Boolean>,后来在大数据分析处理中发现,单个并行字典,哪怕是空的,也要占用约2k内存空间; 第三代脏数据实现 DirtyCollection,采用了内置数组以及CAS原子操作,拥有最好的性能以及最小内存占用

    1.2K30

    Linux内存描述之内存节点node--Linux内存管理(二)

    CPU访问本地内存的速度比访问远程内存的速度要快 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大....因此linux内核需要用一种体系结构无关的方式来表示内存....因此linux内核把物理内存按照CPU节点划分为不同的node, 每个node作为某个cpu结点的本地内存, 而作为其他CPU节点的远程内存, 而UMA结构下, 则任务系统中只存在一个内存node, 这样对于...系统中的NUMA结点都是从0开始编号的 3.1 linux-2.4中的实现 pgdat_next指针域和pgdat_list内存结点链表 而对于NUMA结构的系统中, 在linux-2.4.x之前的内核中所有的节点...-3.x~4.x的实现 node_data内存节点数组 在新的linux3.x~linux4.x的内核中,内核移除了pg_data_t的pgdat_next之指针域, 同时也删除了pgdat_list链表

    10.4K21

    Linux内存描述之内存页面page--Linux内存管理(四)

    1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个...内存中的每个节点都是由pg_data_t描述,而pg_data_t由struct pglist_data定义而来, 该数据结构定义在include/linux/mmzone.h, line 615, 每个结点关联到系统中的一个处理器...简单来说, 页是一个数据块, 可以存放在任何页框(内存中)或者磁盘(被交换至交换分区)中 我们今天就来详细讲解一下linux下物理页帧的描述 2 页帧 内核把物理页作为内存管理的基本单位....因此在后来linux-2.4.x的更新中, 删除了这个字段, 取而代之的是page->flags的最高ZONE_SHIFT位和NODE_SHIFT位, 存储了其所在zone和node在内存区域表zone_table...3.2 内存页标识pageflags 其中最后一个flag用于标识page的状态, 这些状态由枚举常量enum pageflags定义, 定义在include/linux/page-flags.h?

    11K11

    Linux内存描述之概述--Linux内存管理(一)

    2 (N)UMA模型中linux内存的机构 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大. 因此linux内核需要用一种体系结构无关的方式来表示内存....Linux内核通过插入一些兼容层, 使得不同体系结构的差异很好的被隐藏起来, 内核对一致和非一致内存访问使用相同的数据结构 2.1 (N)UMA模型中linux内存的机构 非一致存储器访问(NUMA)模式下...而内存管理的其他地方则认为他们就是在处理一个(伪)NUMA系统. 2.2 Linux物理内存的组织形式 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点..., 我们会在后面典型架构(x86)上内存区域划分详细讲解x86_32上的内存区域划分 因此Linux内核对不同区域的内存需要采用不同的管理方式和映射方式, 为了解决这些制约条件,Linux使用了三种区:...2.6 高端内存 由于能够被Linux内核直接访问的ZONE_NORMAL区域的内存空间也是有限的,所以LINUX提出了高端内存(High memory)的概念,并且允许对高端内存的访问

    9.2K30

    脏牛漏洞

    这个名叫Dirty COW,也就是脏牛的漏洞,存在Linux内核中已经有长达9年的时间,也就说2007年发布的Linux内核版本中就已经存在此漏洞。Linux kernel团队已经对此进行了修复。...>=2.6.22(2007年发行,到今年10月18日才修复) 00x4漏洞概述: 该漏洞具体为,Linux内核的内存子系统在处理写入时复制(copy-on-write, COW)时产生了竞争条件...恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。...Debian开发人员前天也宣布稳定版Debian GNU/Linux 8 “Jessei”系列内核重要更新——本次更新总共修复4个Linux内核安全漏洞,其中也包括了脏牛。...各操作系统供应商应该即刻下载Linux kernel 4.8.3、Linux kernel 4.7.9和Linux kernel 4.4.26 LTS,为用户提供稳定版渠道更新。

    2.7K60

    Linux内存描述之内存区域zone--Linux内存管理(三)

    因此相对于任何一个CPU访问本地内存的速度比访问远程内存的速度要快, 而Linux为了兼容NUMAJ结构, 把物理内存相依照CPU的不同node分成簇, 一个CPU-node对应一个本地内存pgdata_t...Linux使用enum zone_type来标记内核所支持的所有内存区域 3.1 内存区域类型zone_type zone_type结构定义在include/linux/mmzone.h, 其基本信息如下所示...位系统中, Linux内核虚拟地址空间只有1G, 而0~895M这个986MB被用于DMA和直接映射, 剩余的物理内存被成为高端内存....CPU同时进行这种操作 ZONE_CONGESTED 标识当前区域中有很多脏页 ZONE_DIRTY 用于标识最近的一次页面扫描中, LRU算法发现了很多脏的页面 ZONE_WRITEBACK 最近的回收扫描发现有很多页在写回...Linux必须处理如下两种硬件存在缺陷而引起的内存寻址问题: 一些硬件只能用某些特定的内存地址来执行DMA 一些体系结构其内存的物理寻址范围比虚拟寻址范围大的多。

    12K31

    Linux 系统内存监控:Linux 内存调优之系统内存全面监控

    写在前面 博文内容涉及 Linux 全局内存监控 监控方式包括传统工具 vmstat/top/free/sar/slabtop ,以及 systemd-cgtop,proc 内存伪文件系统 监控内容包括系统内存使用...即使应用程序需要的内存容量大于可用的物理内存,Linux内核仍然允许这些程序运行。Linux内核使用硬盘作为临时存储器,这个硬盘空间被称为交换分区(swap space)。...高速缓存和缓冲区的使用使得系统内空闲的内存很少,默认情况下,Linux试图尽可能多的使用你的内存。这是好事。 如果Linux侦测到有空闲内存,它就会将应用程序和数据缓存到这些内存以加速未来的访问。...需要时,Linux找出进程最近最少使用的内存页面,并将它们从活跃列表移动到不活跃列表。当要选择把哪个内存页交换到硬盘时,内核就从不活跃内存列表中进行选择。...它显示了这些分片的被占用情况,以及它们使用了多少内存。 slabtop可以一窥Linux内核的数据结构。每一种分片类型都与Linux内核紧密相关。

    3.2K10

    Linux内存管理

    本篇介绍 本篇介绍下Linux的内存管理,用系统角度看内存的寻址和分配机制。 内容介绍 内存管理应该是系统中最难的模块之一了,而且历史也悠久,就先来简单回顾下。...分页机制可以完全避免内存碎片问题么? 公布下答案: 的确有分页机制就可以完全不需要分段机制,目前linux是在分段的基础上实现了分页,这个也有考虑到是兼容性问题。...; /* for /proc/PID/auxv */ struct percpu_counter rss_stat[NR_MM_COUNTERS]; struct linux_binfmt...mmap流程如下: image.png 缺页异常 linux 是在不得不使用物理内存的时候才会分配物理内存。这句话该怎么理解呢?...因此看到物理可用内存不足并不表示需要换物理内存条了。

    16.8K51

    Linux 内存管理

    操作系统内存管理包括物理内存管理和虚拟内存管理:       我们这篇主要介绍Linux的虚拟内存管理。...物理内存管理在另外一篇:《操作系统内存管理(思维导图详解)》       1、程序的进程在内存的数据结构  一.Linux 进程在内存数据结构 ---- 1、存储(没有调入内存)阶段:       可以看到一个可执行程序在存储...Linux仅把可执行映像的一小部分 装入物理 内存. 当需要访问未装入的页面时 . 系统产生一个缺页中断 , 把需要的页读入 物理内存。 ...把页装入物理内存。   ·   五.swap对换空间 ----      32位Linux系统的每个进程可以有4 GB的虚拟 内存空间 ....例如:32位Linux的每个用户进程都可以访问4GB的线性地址空间, 而实际的物理内存可能远远少于4GB. 采用分页机制 ,Linux仅把可执行映像的一小部分装入物理内存.

    9.8K10

    认识 Linux 内存构成:Linux 内存调优之虚拟内存与物理内存认知

    写在前面 博文内容涉及 Linux 内存构成基本认知 包括虚拟内存和物理内存映射,多级页表和MMU简单认知 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。...所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》 认识 Linux 内存构成:虚拟内存与物理内存 计算机中的进程小伙伴一定不陌生,...一般情况下一个应用会启动一个主进程,若干个子进程或者线程,每个进程都有一个内存地址空间用于存放当进程的一些共享数据,所以在进程启动时会请求一定大小的内存,这里的内存不是实际的物理内存地址,不直接定位物理内存...0x0000000000000000 至 0x00007FFFFFFFFFFF(128 TB) 内核空间:0xFFFF800000000000 至 0xFFFFFFFFFFFFFFFF(128 TB) Linux...系统默认使用完整的 48 位地址,但用户进程实际可用空间通常更小(如通过 TASK_SIZE_MAX 限制为 128 TB 减去保护页) 在 Linux 系统中查看 /proc/cpuinfo 时,address

    1.4K00

    Linux内存修改

    虚拟内存是为了满足物理内存不足采用的策略,利用磁盘空间虚拟出一块逻辑内存,用作虚拟内存的空间也就是交换分区。...作为物理内存的扩展,Linux会在物理内存不足时,使用交换分区的逻辑内存,内核会把暂时不用的内存块信息写到交换空间,这样物理内存就得到了释放,这块儿内存就可以用于其他目的,而需要用到这些内容的时候,这些信息就会被重新从交换分区读入物理内存...Linux的内存管理采用的是分页存取机制,为了保证物理内存得到充分的利用,内核会在适当的时间把物理内存中不经常使用的数据块儿自动交换到虚拟内存中,而将充分使用的信息保留到物理内存中。...例如通过阿里云安装的系统,不会自动给我们分配Swap虚拟内存空间;Swap分区或虚拟内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作内存数据,临时保存到Swap分区虚拟内存文件中...当那些程序要再次重新运行时,会再从Swap分区或虚拟内存文件中恢复之前保存的数据到内存中。

    16.9K41

    Linux 进程内存监控:Linux 内存调优之进程内存深度监控

    写在前面 博文内容涉及 Linux 进程内存监控 监控方式包括传统工具 ps/top/pmap ,以及 cgroup 内存子系统,proc 内存伪文件系统 监控内容包括进程内存使用情况, 内存全局数据统计...来区分两种不同的统计数据 VIRT 或 VSZ 代表进程申请的虚拟内存大小, RES 或 RSS 代表的是虚拟内存当前实际映射的物理内存大小,也叫常驻内存。...user.slice:表示该 cgroup 属于 用户会话层级,与用户进程相关(与 system.slice 系统服务层级区分) user-1000.slice:表示用户 ID 为 1000 的普通用户(Linux...KB Trs 221 可执行代码段(Text Resident Set)占用的内存页(如程序自身的机器指令) 221 × 4 ≈ 884 KB Lrs 0 库的内存页数(Linux 2.6+ 中已废弃...,通常为 0) - Drs 5022 数据段(堆、全局变量)和用户态栈的总内存页 5022 × 4 ≈ 20,088 KB dt 0 脏页数量(已修改但未写入磁盘的页,Linux 2.6+ 中已废弃

    2.6K42

    PG刷脏优化

    PostgreSQL 内存参数优化/刷脏优化 PostgreSQL的脏页是什么? 什么是检查点刷脏? 什么是后台刷脏? 什么是用户后端进程刷脏? 什么是double cache?...相反,它会将受影响的页加载到共享内存(shared buffers)中,在内存中进行修改,并将该页标记为“脏页”。所谓“脏页”,是指内存中的该页版本比磁盘上的副本更新。...脏页会在内存中不断累积,直到通过以下三种机制之一被刷新: 后台写入器(Background Writer,BGWriter):一个守护进程,当干净缓冲区数量变低时,会持续将脏页写入磁盘。...共享缓冲区(Shared Buffers) shared_buffers 决定了 PostgreSQL 用于缓存数据和存储脏页的内存量。该值的设置会影响页面在内存中保留的时间以及刷新频率。...考虑操作系统调优: 确保操作系统的脏页刷新设置(如 Linux 上的 vm.dirty_background_ratio 和 vm.dirty_ratio)不要设得过高,否则内核可能会将脏页保留太久,导致突发的大规模写回

    17400
    领券