linux 内存

news2024/12/25 14:00:00

linux内存分类

按用途分

stack heap(brk,sbrk , mmap), 文件映射, bss, data , text, 还有page cache, slab(kmalloc连续), vmalloc等内核深处的。

属性

进程OOM

对于进程来说,堆泄漏在死亡时是没问题

但是对于不断获得内存,导致系统内存不足时会触发oom killer。

系统内存不足时会唤醒OOM killer来选择一个进程给杀掉,在我们这个例子中它杀掉了这个正在内存泄漏的程序,该进程被杀掉后,整个系统也就变得安全了。但是你要注意,OOM killer选择进程是有策略的,它未必一定会杀掉正在内存泄漏的进程,很有可能是一个无辜的进程被杀掉

缺点:而OOM这里又有一个全局锁(oom_lock)来进行保护

如果此时系统中有很多进程都在申请内存,那么这些申请内存的进程都会被阻塞在这里,这就形成了一个恶性循环,甚至会引发系统长时间无响应(假死

一个例子就是oom日志打印太多,有两个解决方法:1. 在发生OOM时尽可能少地打印信息           2.调整串口打印级别,不将OOM信息打印到串口

很重要的系统服务的oom_score_adj配置为-1000,比如sshd。but 它又不能被杀掉,这就会导致随着它的内存开销变大,OOM killer不停地被唤醒,从而把其他进程一个个给杀掉,我们之前在生产环境中就遇到过类似的案例

访问过程,可以想想hard_design.

观察内存方法

首先是top

然后是cat /proc/meminfo

这两个是最开始排查的用的

一个例外

内核泄漏

可以通过meminfo几个信息看出

  • 在生产环境中可以使用tracepoint或者kprobe,来追踪特定类型内核内存的申请和释放,从而帮助我们判断是否存在内存泄漏。但这往往需要专业的知识,你在不明白的时候可以去请教一些内核专家;
  • 内核内存泄漏通常都是第三方驱动或者自己写的一些内核模块导致的,在出现内核内存泄漏时,你可以优先去排查它们。
  • top工具和/proc/meminfo文件是分析Linux上内存泄漏问题,甚至是所有内存问题的第一步,我们先找出来哪个进程或者哪一项有异常,然后再针对性地分析;
  • 应用程序的内存泄漏千奇百怪,所以你需要掌握一些通用的分析技巧,掌握了这些技巧很多时候就可以以不变应万变。但是,这些技巧的掌握,是建立在你的基础知识足够扎实的基础上。你需要熟练掌握我们这个系列课程讲述的这些基础知识,熟才能生巧。
  • 一般是系统调用才能造成内存泄漏,strace, pidstat也很有用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1378344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻松上手Linux文件操作:五种方法教你创建文件

轻松上手Linux文件操作:五种方法教你创建文件 一、引言二、使用touch命令创建文件三、使用文本编辑器创建文件四、使用echo命令创建文件五、使用cat命令创建文件六、使用重定向符号创建文件七、总结 一、引言 本文介绍五种在Linux系统中创建文件的方法,…

自制数据库空洞率清理工具-C版-03-EasyClean-V1.2(支持南大通用数据库Gbase8a)

目录 一、环境信息 二、简述 三、升级点 四、支持功能 五、空洞率 六、工具流程图 1、流程描述 2、注意点 (1)方法一 (2)方法二 七、清理空洞率流程图 八、安装包下载地址 九、参数介绍 1、命令模板 2、命令样例 3…

Jmeter接口自动化03-JMeter的常用核心组件

p03 高清B站视频链接 由于JMeter涉及的组件数目很多,据不完全统计至少有110个,而其实只需要掌握20%的组件就可以完成80%甚至更多的日常工作了,所以接下来我们重点剖析使用最频繁的核心组件,如下图所示。只需要优先掌握这10个左右…

IBM X3750 M4服务器主板故障全国协助处理

2023年12月31这天中午看到有位网络朋友加我,通过后该用户反馈说是有一台IBM System x3750 M4服务器有故障,现在无法开机。希望我们工程师协助他检测 分析 定位该故障问题原因和处理方案。 如上图所示:经过工程师与用户排查,发现该…

3D scanner with DLPC3478

https://www.bilibili.com/video/BV1vJ411J7ih?p3&vd_source109fb20ee1f39e5212cd7a443a0286c5 因数: 分别率波长pattern速度 DMD 与 DLPC匹配 3D scanner是结构光的概念走的 Internal pattern, 是DLPC内部提供图像给DMD External Pattern, 外部FPGA /MCU…

河南省农村合作医疗 及 社保缴费信息 查询方法

河南省农村合作医疗 及 社保缴费信息 查询方法 参考链接:河南城乡居民参保网上缴费及查询操作流程! 一、河南省农村合作医疗,缴费信息查询方法 1、在支付宝或者微信中搜索 “河南税务” 公众号,并按步骤登陆; 2、在…

C桑(Cython)从入坑到入土(1)

Cython 概览 Cython 是一个将类似 Python 的代码文件编译为 C 代码的编译器。尽管如此,“Cython 不是 Python 到 C 的翻译器”。也就是说,它不会将完整的程序"转换为 C"------相反,结果会充分利用 Python 运行时环境。一种看待它…

Visual Studio中项目添加链接文件

这个需求在VS里面使用还真不多见,只是最近在做项目的版本编号的时候遇到一个头大的问题,我一个解决方案下面有几十个类库,再发布的时候这几十个类库的版本号必须要统一,之前我们都是在单个的AssemblyInfo.cs里面去改相关的信息&am…

CCF模拟题 202309-2 坐标变换(其二)

问题描述 试题编号: 202309-2 试题名称: 坐标变换(其二) 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 对于平面直角坐标系上的坐标 (x,y),小 P 定义了如下两…

如何解决NAND系统性能问题?--NAND分类

一、故事引言 想象一下,你正在管理一座神奇的数据仓库,这个仓库没有沉重的门、旋转的磁盘和机械手臂,而是由一群训练有素的“数据小飞侠”组成。这些小飞侠们居住在一个叫做闪存芯片(NAND Flash,本文主人公&#xff0…

【Linux】进程信号——进程信号的概念和介绍、产生信号、四种产生信号方式、阻塞信号、捕捉信号、阻塞和捕捉信号的函数

文章目录 进程信号1.进程信号的概念和介绍2.产生信号2.1通过终端按键产生信号2.2 调用系统函数向进程发信号2.3 由软件条件产生信号2.4硬件异常产生信号 3.阻塞信号3.1信号在内核中的表示3.2信号集操作函数3.3sigprocmask 4.捕捉信号4.1内核如何实现信号的捕捉4.2 sigaction 进…

Docker安装MySql详细步骤

1、新建挂载目录 首先进入安装mysql的目录,没有就自行创建 mkdir -p /usr/local/docker/mysql-docker cd /usr/local/docker/mysql-docker 接着挂载目录 # 选择自己的软件安装目录,新建挂载文件目录 mkdir -p data logs mysql-files conf # 赋予权限…

xcode安装及运行源码

抖音教学视频 目录 1、xcode 介绍 2、xcode 下载 3、xocde 运行ios源码 4、快捷键 1、xcode 介绍 Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有…

使用主题模型和古老的人类推理进行无监督文本分类

一、说明 我在日常工作中不断遇到的一项挑战是在无法访问黄金标准标签的情况下标记文本数据。这绝不是一项微不足道的任务,在本文中,我将向您展示一种相对准确地完成此任务的方法,同时保持管道的可解释性和易于调整。 一些读者可能已经开始考…

小程序商城的优势是什么?

随着科技的飞速发展,电商行业也在不断变革。其中,电商小程序商城系统以其独特的优势,正在成为电商领域的新宠。本文将深入探讨电商小程序商城系统的优势,展望其未来发展前景。 一、便捷快速:体验至上 与传统电商网站相…

Vulnhub-GoldenEye

一、信息收集 nmap探测:nmap -p 1-65535 -T4 -A -v 192.168.1.9 PORT STATE SERVICE VERSION 25/tcp open smtp Postfix smtpd |_smtp-commands: ubuntu, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN |_…

CMake+大漠插件的应用开发——处理dm.dll,免注册调用大漠插件

文章目录 CMake大漠插件的应用开发——处理dm.dll,免注册调用大漠插件说明环境项目结构配置编译环境编码-直接调用 dll编码-生成tlh文件,便于提示 CMake大漠插件的应用开发——处理dm.dll,免注册调用大漠插件 说明 网上有一种使用方式是&am…

iOS xcode 15.1 打包报错

真机调试的时候没问题,打包的时候报错了 #报错 解决办法 pods.xcodeproj - build phases - compile sources - compiler flags pods.xcodeproj - Targets-support files pods-xx-frameworks

使用emu8086实现——运算类编程实验

一、实验目的 1. 掌握使用运算类指令编程及调试方法 2. 掌握运算类指令对各个状态标志位的影响及其测试位。 二、实验内容 1.在数据表DATA1中存放数据 0F865H,在数据表DATA2中存放数据360CH。现编写出将两数分别取出相加,然后将计算结果存放到当前数据…

【UE Niagara学习笔记】05 - 喷射火焰顶部的蓝色火焰

在上一篇博客(【UE Niagara学习笔记】04 - 火焰喷射时的黑烟效果)的基础上继续实现在火焰喷射的起点位置生成蓝色火焰的效果。 目录 效果 步骤 1. 创建新的发射器 2. 减少粒子生成数量 3. 减小粒子初始大小 4. 减少粒子喷射距离 5. 减少粒子初始…