在疫情期间,小编不得不待在家中远程办公。但变的是办公方式,不变的是美创运维的7*24小时不间断支持。
马哥linux运维 | 最专业的linux培训机构 ---- 最近在维护一台CentOS服务器的时候,发现内存无端"损失"了许多,free和ps统计的结果相差十几个G,搞的我一度又以为遇到灵异事件了,后来Google了许久才搞明白,特此记录一下,以供日后查询。 虽然天天都在用Linux系统办公,其实对它的了解也不过尔尔。毕业几年才迈入"知道自己不知道"的境界,我觉得自己丝毫没有愧对万年吊车尾这个称号 :( 问题描述和初步调查 同事说有一台服务器的内存用光了,我连上去用free看了下,确实有点怪。 $ fr
在 Linux 系统中,我们经常用 free 命令来查看系统内存的使用状态。在个 RHEL6 的系统上,free 命令的显示内容大概是这样一个状态: 这里的默认显示单位是 kb,我的服务器是 128
编辑手记:很多人都认为,Linux中buffers和cached所占用的内存空间是可以在内存压力较大的时候被释放当做空闲空间用的。但真的是这样么?今天我们重新来认识。 作者介绍 邹立巍 Linux系
释放 reclaimable slab ,包括dentries and inodes cache
最近一台 CentOS 服务器,发现内存无端损失了许多,free 和 ps 统计的结果相差十几个G,非常奇怪,后来Google了许久才搞明白。
我们知道外设访问内存需要通过DMA进行数据搬移,关于cpu, cache, device, dma, memory的关系可以通过下图说明:
李真旭(Roger) ACOUG 核心专家,Oracle ACE,云和恩墨技术专家 编辑手记:linux 文件系统的cache分为2种:page cache和 buffer cache.在RAC环境中,不同节点间的设置不合理很可能会触发操作系统bug,而引起数据库宕机。 这是1个月之前处理的某个客户的案例,现象大致是某天凌晨某RAC节点实例被重启了,通过如下是alert log我们可以发现RAC集群的节点2实例被强行终止掉了,如下是详细的告警日志信息: 从上面的日志来看,在2:03分就开始报错ORA
可以看到使用不同的参数会将内存占用情况以不同的形式呈现出来,其中各个数字的意义如下: total: 物理内存的大小,就是机器实际的内存大小; used: 已使用的内存大小,这个值包括了cache和应用程序实际使用的内存; free: 尚未被使用的内存大小; shared: 共享内存的大小; buff/cache: 被缓冲区和缓存占用的内存大小; available: 该项是新版的free中增加的一项,表示可用内存大小。
在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:
李真旭@killdb Oracle ACE,云和恩墨技术专家 个人博客:www.killdb.com 在墨菲定律里,我们知道,有可能发生的故障就一定会发生,哪怕需要诸多因素的叠加才可能满足那复杂的先决条件。在以下案例中,我们抽丝剥茧,细致入微的追溯最终确定了导致数据库RAC实例崩溃的微小原因。 这是一个真实的客户案例,可以概括为一条参数引发的血案。现象大致是某天凌晨某 RAC 节点实例被重启了,通过如下是 alert log 我们可以发现 RAC 集群的节点2实例被强行终止掉了,如下是详细的告警日志信息
Linux的swap相关部分代码从2.6早期版本到现在的4.6版本在细节之处已经有不少变化。本文讨论的swap基于Linux 4.4内核代码。Linux内存管理是一套非常复杂的系统,而swap只是其中一个很小的处理逻辑。希望本文能让读者了解Linux对swap的使用大概是什么样子。阅读完本文,应该可以帮你解决以下问题:
目前大部分的操作系统和应用程序并不需要16EB( 2^64 )如此巨大的地址空间, 实现64位长的地址只会增加系统的复杂度和地址转换的成本, 带不来任何好处. 所以目前的x86-64架构CPU都遵循AMD的Canonical form, 即只有虚拟地址的最低48位才会在地址转换时被使用, 且任何虚拟地址的48位至63位必须与47位一致(sign extension). 也就是说, 总的虚拟地址空间为256TB( 2^48 )
a). 进程使用的物理内存: find /proc/ -maxdepth 1 -iname "[0-9]*" | xargs -I{} cat {}/smaps | grep Pss: | awk '{s+=$2}END{print s}' b). slab分配占用的内存,采用slab机制主要是解决申请时候浪费page的问题,这一部分的内存并不是application 所占用的,所以要单独列出来, 可以在meminfo 中查看到其占用空间以及可回收空间大小. c). pagetable在虚拟地址到物理地址的转换中发挥着关键的作用,所以也不属于application占用的内存,属于系统所用,所以也单独列出来. 其大小随着内存的变大而变大,可以在meminfo 中找到占用的大小. d). free的内存,这一部分内存是从system的角度看,依然是free的,也就是说这一部分内存还没有被system 进行接管. e). cache/buffer内存的大小,这一部分可以在meminfo 中找到,这里主要是 application 的所使用的cache/buffer. f). 其他原因导致的内存gap, 在下面的示例中,上述所述的6种内存的总和大于实际的总内存,这是因为 shmem 是被application使用的,所以在计算进程使用的物理内存的时候,已经包含了shmem,而cache又计算了一次,因此最后的结果应该是减去SHMEM, 这样 和总内存相比,还有5497KB的gap .那么这个gap 到底应该是available的,还是算作used的,不得而知,那么因为这个gap 不大,所以对于内存的使用状况统计,我们可以暂且忽略该gap, 所以我们可以有如下的公式作为一个参考: total = free + cache + buffer + process_used_via_pss + slab + pagetables - shmem
本文讨论的 swap基于Linux4.4内核代码 。Linux内存管理是一套非常复杂的系统,而swap只是其中一个很小的处理逻辑。
编辑说明:《Oracle性能优化与诊断案例精选》出版以来,收到很多读者的来信和评论,我们会通过连载的形式将书中内容公布出来,希望书中内容能够帮助到更多的读者朋友们。 这是我一个运营商客户的案例。其现象
无论您是 DevOps 工程师、系统管理员还是刚入门 Kubernetes 的人,了解内存指标可能会改变游戏规则。
在Linux系统上查看内存使用状况最常用的命令是"free",其中buffers和cache通常被认为是可以回收的:
先从swap产生的原理来分析,由于linux内存管理比较复杂,下面以问答的方式列了一些重要的点,方便大家理解:
之前文章《Linux服务器性能评估与优化(一)》太长,阅读不方便,因此拆分成系列博文:
最近笔者在看性能分析相关的是知识,就特意针对内存整理了这一篇文章,在这里笔者主要从下面三个方面来介绍这方面的知识: 1.内存的作用是什么,他在操作系统中的基础知识都有哪一些? 2.查看内存和内存相关问题涉及到的工具都有哪一些,他们的使用方式是什么样子的? 3.碰到内存问题的时候,我们需要怎么去定位呢?
本文来自 CSDN 重磅策划的《2022 年技术年度盘点》栏目。2022 年,智能技术变革留下了深刻的脚印,各行各业数字化升级催生了更多新需求。过去一年,亦是机遇与挑战并存的一年。 在本篇文章中,长期奋斗在一线的 Linux 内核开发者宋宝华老师为大家解剖 2022 年 Linux 内核开发的十大革新技术功能,纪念这平凡而又不凡的 Linux 内核之旅。 作者 | 宋宝华 责编 | 梦依丹 出品 | CSDN(ID:CSDNnews) 滚滚长江东逝水,浪花淘尽英雄。在浩瀚的宇宙星河中,波卷
大家好,我是 Peter,昨天群里有小伙伴咨询page cache的问题,看到网上有篇不错的文章,分享给大家。如果大家有想看的内容,欢迎给我留言。
本文一是为了讨论在Linux系统出现问题时我们能够借助哪些工具去协助分析,二是讨论出现问题时大致的可能点以及思路,三是希望能给应用层开发团队介绍一些Linux内核机制从而选择更合适的使用策略。
之前在实习时,听了 OOM 的分享之后,就对 Linux 内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今天才写下这篇文章记录,分享。
之前在实习时,听了 OOM 的分享之后,就对 Linux 内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今天才写下这篇博客,记录以及分享。
大概就是,进程写文件(使用缓冲 IO)过程中,写一半的时候,进程发生了崩溃,会丢失数据吗?
在较高的Linux版本上,支持了watermark_scale_factor参数(完整路径/proc/sys/vm/watermark_scale_factor)调整,这个数值可以比较有效的控制内存回收。
linux使用page cache来缓存最近读取的文件,也有目录结构(dcache: Directory Entry Cache)缓存及inode缓存,它们都使用了LRU算法来管理这些page及dentries cache
在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统的性能。
比如进程的代码段、映射的文件都是file-backed,而进程的堆、栈都是不与文件相对应的、就属于匿名页。
最近在维护一台CentOS服务器的时候,发现内存无端"损失"了许多,free和ps统计的结果相差十几个G,搞的我一度又以为遇到灵异事件了,后来Google了许久才搞明白,特此记录一下,以供日后查询。
在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统的性能。而当我
作者:星辰算力平台 1. 背景 随着大数据、人工智能技术的蓬勃发展,人类对于算力资源的需求也迎来大幅度的增长。在腾讯内部,星辰算力平台以降本增效为目标,整合了公司的GPU训练卡资源,为算法工程师们提供统一的底层GPU算力服务。借助于虚拟化、算力挖掘等技术,平台服务公司内各BG的AI训练场景,GPU利用率业界领先。同时,通过云原生任务化的方式,对接了内部各大业务,促进了AI技术研究效率的提升和创新研究。 当下,由于AI训练时的高性能计算设备(如NVIDIA GPU)成本高昂,如果任务在训练过程中不能保证
一台服务器报警了,内存占用过高,奇怪的是集群里其它的服务器都没问题。不过从以往的经验来看:每一个匪夷所思的问题背后,都隐藏着一个啼笑皆非的答案。
常见的内存分配函数有malloc,mmap等,但大家有没有想过,这些函数在内核中是怎么实现的?换句话说,Linux内核的内存管理是怎么实现的?
前言: 书接上回《内存映射技术分析》,继续来分析一下linux的物理内存管理。 分析: 1,物理内存 PC上的内存条,或者手机上的内存芯片,物理上实实在在的内存,就是物理内存。大小是硬件决定的,一般就是一个起始地址,加上大小。地址如何分配呢?PC上作者也不太懂,听闻BIOS可以配置。在ARM上,作者曾经看过一份电路图,当时的图上,使用32bit的高2bit作为chip select,后面的30bit作为地址总线,看过chip select信号之后,作者才明白为什么在代码上要配置起始的地址不是0,因为硬件
理解硬件访问内存的原理,MMU和页表;澄清Linux内核ZONE,buddy,slab管理;澄清用户空间malloc与内核关系,Lazy分配机制;澄清进程的内存消耗的vss,rss,pss,uss概念;澄清内存耗尽的OOM行为;澄清文件背景页面与匿名页,page cache与swap;澄清内存的回收、dirty page的写回,以及一些内存管理/proc/sys/vm sysctl配置的幕后原理;DMA和cache一致性,IOMMU等;给出一些内存相关的调试和优化方法;消除网上各种免费资料的各种误解。
Linux alarm 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386
来源:高效运维 ID:greatops 前言 之前在实习时,听了 OOM 的分享之后,就对 Linux 内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今天才写下这篇博客,记录以及分享。 【OOM - Out of Memory】内存溢出 内存溢出的解决办法: 1、等比例缩小图片 2、对图片采用软引用,及时进行 recycle( ) 操作。 3、使用加载图片框架处理图片,如专业处理图片的 ImageLoader 图片加
在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统的性能。而当我们使用free命令查看Linux系统内存使用情况时,会发现内存使用一直处于较高的水平,即使此时系统并没有运行多少软件。
长时间运行的Linux服务器,通常 free 的内存越来越少,让人觉得 Linux 特别能“吃”内存,甚至有人专门做了个网站 LinuxAteMyRam.com解释这个现象。实际上 Linux 内核会尽可能的对访问过的文件进行缓存,来弥补磁盘和内存之间巨大的延迟差距。缓存文件内容的内存就是 Page Cache。
在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统的性能。而当我们使用free命令查看Linux系统内存使用情况时,会发现内存使用一直处于较高的水平,即使此时系统并没有运行多少软件。这正是Windows和Linux在内存管理上的区别,乍一看,Linux系统吃掉我们的内存(Linux ate my ram),但其实这也正是其内存管理的特点。
MONGODB 实例的内存使用率是一个非常重要的指标,内存使用率过高会导致MONGODB 实例的内存溢出,本文主要通过查看MONGODB的实例内存的使用率得方法,使MONGODB的使用者尽快发现内存方面出现的问题,提早进行相关的应对。
1. 显示系统内存 用于检查已用和可用空间的 free 命令physical memory和swap memory在KB.请参阅下面的操作命令。 # free total used free shared buffers cached Mem: 1021628 912548 109080 0 120368 655548 -/+ buffers/cache: 1366
用free监控内存free是监控linux内存使用状况最常用的指令,看下面的一个输出
领取专属 10元无门槛券
手把手带您无忧上云