探究 Linux Out of Memory(OOM)日志的作用和意义 (linux oom 日志)

随着计算机技术的快速发展,人类依托于计算机所获得的便利和提高是显著的。而在计算机的运行过程中,由于程序的不断开启和运行、内存的分配和释放等原因,往往会出现内存不足的情况,这就会导致进程被杀死或者服务器崩溃等问题。为了解决这些问题,Linux内核通常提供了一种内存管理机制,即OutOfMemory(OOM)Killer和OOM日志。

那么,什么是OOM日志呢?OOM是指系统内存不足,无法满足进程资源需求,因而出现进程异常退出,这时系统会自动记录这一事件,并将相关信息输出到“/var/log/messages”日志文件中。

因此,OOM日志的主要作用是记录系统内存不足时的进程信息、内存负载信息等相关信息,便于管理员分析和定位问题,进而可以采取相应措施来解决问题,保障系统的稳定性和安全性。具体来说,OOM日志可以起到以下几个方面的作用:

1.方便排查系统故障

OOM日志提供了历史记录,可以更好地帮助系统管理员定位系统的问题,找到引起问题的原因,从而可以制定合适的解决方案。比如,我们可以通过查看OOM日志的记录,掌握当前内存情况,分析可能导致系统故障的原因和相关进程,以便及时采取对应措施来减小或消除问题的影响。

2.及时预警系统异常

随着计算机系统规模的不断扩大,其内存资源配置变得越来越复杂,需要及时监控内存负载情况,预防机器意外宕机。OOM日志在系统内存不足的情况下,能发现并标记出出现问题的进程,及时通知管理员,让其专注于解决问题,避免连锁反应。

3.指导优化系统性能

OOM日志可以帮助系统管理员评估计算机内存的使用情况,了解进程的资源要求,发现可能存在的性能瓶颈,并通过优化系统内存管理策略,提高系统性能、优化内存使用和配置等方式来达到优化系统的目标。

需要注意的是,对于OOM日志的使用和管理,不能纯靠经验和常识,需要系统管理员拥有专业的技能和知识,比如Linux内存管理、日志分析技能等。

在日常使用linux系统时,出现OOM问题是比较常见的,因此,了解并掌握相关的技能和知识,能够使管理员更好地维护管理系统,排查故障问题,优化系统性能,提高计算机运维的效率和质量。

相关问题拓展阅读:

  • 安卓与Linux有什么关系

安卓与Linux有什么关系

安卓与Linux有什么关系

按照是Linux核心但是借用了java虚拟机器技术,并组织编制的一个类Java作业系统。。。区别Linux的就是库和使用者介面都是用的java技术。。。而Linux的桌面和api则是他们自身程式设计形成的。。。

Android是一种基于Linux的自由及开放原始码的作业系统,主要使用于移动装置,如智慧手机和平板电脑,由Google公司和开放手机联盟领导及开发。

Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支援的功能,Android 大都没有支援,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程式移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、资料结构与巨集。

Android 的 Linux kernel控制包括安全(Security),储存器管理(Memory Management),程式管理(Process Management),网路堆叠(Neork Stack),驱动程式模型(Driver Model)等。下载Android原始码之前,先要安装其构建工具 Repo来初始化原始码。Repo 是 Android 用来辅助Git工作的一个工具。

Linux和安卓有什么关系?

Linux与Androld的关系

虽然Android基于Linux核心,但是它与Linux之间还是有很大的差别,比如Android在Linux核心的基础上添加了自己所特有的驱动程式。下面我们就来分析一下它们之间究竟有什么千丝万缕关系?

1 安卓为什么会选择Linux

成熟的作业系统有很多,比如Unix系统。但是Android为什么选择采用Linux核心呢?这就与Linux的一些特性有关了,比如:

(1)强大的记忆体管理和程序管理方案

(2)基于许可权的安全模式

(3)支援共享库

(4)经过认证的驱动模型

(5)Linux本身就是开源专案

更多关于上述特性的资讯可以参考Linux 2.6版核心的官方文件,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux真正的关系。

2Android不是Linu×

看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux核心的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进

行分析,看完后你就会觉得Android不是Linux了。

①它没有本地视窗系统

(1)它没有glibc的支援

(2)它并不包括一整套标准的Linux使用程式

(3)它增强了Linux以支援其特有的驱动

1、它没有本地视窗系统

什么是本地视窗系统呢?本地视窗系统是指GNU/Linux上的X视窗系统,或者Mac OS的Quartz等。不同的作业系统的视窗系统可能不一样,Android并没有使用(也不需要使用)Linux的X视窗系统,这是Android不是Linux的一个基本原因。

2、它没有glibc支援

由于Android最初用于一些便携的移动装置上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。

3、它并不包括一整套标准的Linux使用程式

Android并没有完全照搬Linux系统的核心,除了修正部分Linux的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH档案系统等。

4、Android专有的驱动程式

除了上面这些不同点之外,Android还对Linux装置驱动进行了增强,主要如下所示。

(1) Android Binder基于OpenBinder框架的一个驱动,用于提供Android平台的程序间通讯( InterProcess Communication,IPC)功能。原始码位于

drivers/staging/android/binder.c。

(2) Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式装置做了很多优化。源伐码位于:

Ⅰ kerneUpower/earlysuspend.c

Ⅱ kernel/power/consoleearlysuspend.c

Ⅲ kernel/power/fbearlysuspend.c

Ⅳ kemel/power/wakelock.c

Ⅴ kernel/power/userwakelock.c

(3)低记忆体管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死程序以释放需要的记忆体。原始码位于

drivers/staging/android/lowmemorykiller.c.

(4)匿名共享记忆体(Ashmem) 为程序间提供大块共享记忆体,同时为核心提供回收和管理这个记忆体的机制。原始码位于mm/ashmem.c。

(5) Android PMEM (Physical) PMEM用于向用户空间提供连续的实体记忆体区域,DSP和某些装置只能工作在连续的实体记忆体上。原始码位于drivers/misc/pmem.c。

(6) Android Logger -个轻量级的日志装置,用于抓取Android系统的各种日志。原始码位于drivers/staging/android/logger.c。

(7) Android Alarm捉供了一个定时器,用于把装置从睡眠状态唤醒,同时它还提供了一个即使在装置睡眠时也会执行的时钟基准。原始码位于drivers/rtc/alarm.c。

(8) USB Gadget驱动一个基于标准Linux USB gadget驱动框架的装置驱动,Android的USB驱动是基于gaeget框架的。原始码位于drivers/u/gadget/。

(9) Android Ram Console为了提供除错功能,Android允许将除错日志资讯写入一个被称为RAM Console的装置里,它是一个基于RAM的Buffer。原始码位于drivers/staging/android/ramL console.c。

(10) Android timed device提供了对装置进行定时控制的功能,目前支援vibrator和LED装置。原始码位于drivers/staging/android /timed_output.c(timed_gpio.c)。

(11) Yaffs2档案系统Android采用Yaffs2作为MTD nand flash档案系统,原始码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式装置档案系统,同其他Flash档案系统相比,Yaffs2能使用更小的记忆体来储存其执行状态,因此它占用记忆体小。Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的效能。Yaffs2在大容量的NAND Flash上的效能表现尤为突出,非常适合大容量的Flash储存。上面这些要点足以说明Android不是Linux。

Linux与Androld的关系

虽然Android基于Linux核心,但是它与Linux之间还是有很大的差别,比如Android在Linux核心的基础上添加了自己所特有的驱动程式。

Ubuntu与Linux有什么关系

正如ls所说,linux有许多发行版本,比如redhat,debian,suse等。所以说debian是linux的一个发行版本,而ubuntu是debian的一个衍生版本。

Android System WebView与安卓7.0之间有什么关系

1.主题面板管理器

在CM等一众第三方系统中,早已支援便捷地修改桌布、图示和系统颜色。在商店和论坛中,也能找到不少优质的面板主题。

而当我们提到原生Android,似乎总是长著一张固定的脸。实际上,在Google自家的AOSP(即Android开源专案)中,早已内建了主题管理。

而在Android M 的开发者预览版中,也加入了主题管理器(可惜被需要Root和特定方式才能启用)。既然系统内的面板主题框架早已搭建好,那就只等Google在Android系统中放出啦。

2.应用程式抽屉的消失

在2月26日,Google Map的官方Twitter释出了一条介绍视讯,其中的展示机Nexus 6P的系统介面中,似乎看不到底部的应用抽屉按钮了。发现问题的同学也开始集体留言质问:‘WHERE IS THE APP DRAWER?!?!’

而在之前也确实有传闻爆料:在新版Android N 中,或许会将应用抽屉的设计去除,选择采用iOS和MIUI的应用呈现方式,即全部在桌面首页中展示。

去除二级选单的做法,会带来更加凌乱的桌面,还是更有效率的操作体验?似乎很难定论,但作为Android玩家,大可选择Nova启动器等优秀的第三方桌面,而不必担心我卓药丸。

3.夜间模式会许要来了

在Android M 的开发者预览版中,Dark Mode夜间模式曾短暂地出现过,而在正式版中又被砍去。

而最新的Android N 泄露图中,黑色背景的右图也表示著:夜间模式回归Android了。

而更加值得期待的是,Google已经放出了夜间模式的开发程式码,开发者可以轻松地为自己的应用设定‘暗色主题’。也许今后只需轻按‘夜间模式’的按钮,从系统到各个应用,都能直接更换成夜间模式。

这一改变,不仅对于越来越多AMOLED萤幕手机而言,是省电的好方法。对于经常深夜玩手机的同学来说,似乎也可以和刺眼的白光说再见了。

4.分屏多工以及平板支援

在LG和三星都推出了‘分屏模式’后,Google在Android N 中加入分屏功能也是众望所归了。同样的,在上一个版本Android M 中,分屏模式也被隐藏起来,需要特定方式才能启用。

不负众望,来自Google的Pixel C 团队在接受Reddit AMA论坛访谈时,确认了‘split screen is in the works’。

而分屏多工,似乎在Android平板上也更加适用。值得一提的是,该团队也宣称Android系统的平板,在Android N 中将会更加好用,而不仅仅是将应用介面拉升就够了。

但对于Chrome OS的联动猜想、DPI切换和和介面的调整,似乎只能等Google I/O那

天,才知道答案。

5.支援触控笔

在三星公布的文件中,我们发现三星在Android N 中,采用了系统自带的触控笔介面,而不再使用原先的S PEN专属介面。

而在Android 5.0 (开始支援节电助手)之前,三星关闭了自家的节电模式介面。在Android 6.0 (开始支援指纹识别)之前,又关闭了自家的指纹识别介面。而在Android 7.0公布之前,三星又再一次关闭了自家的触控笔介面,这……

6.更好的Doze省电模式

Doze省电模式首次出现在Android M 中,其省电原理是在装置休眠时,关闭关闭应用后台,以达到省电的效果。

在亲身体验后,Doze模式确实发挥了很好的效果,起码待机的时候不掉电了。但在目前这一功能,在操作体验和使用者自定义方面,却有些过于简单了。

所以直到今天Android 6.0,我依然选择绿色守护等第三方应用,去实现控制后台应用耗电的问题。但Root终归有风险,而Android N 也有理由提供一个更好用的Doze省电模式。

7.重新设计的通知栏

在设计上,似乎能探寻的蛛丝马迹,则是一张Android N 的通知栏模拟图,国外媒体Android Police在看到开发样机图后,大致模拟出的新版介面截图。

根据爆料,左图通知栏目前已开始尝试承载更多的资讯量,长按后即可检视通知详情。而在右图显示的快速设定页面,将快捷按钮铺满并支援分页,而不像之前只支援固定数量的快捷按钮。

8.更多玩法的指纹识别

随着Nexus 5X和Nexus 6P的释出,Google终于开始为Android提供指纹的支援。在Android 6.0中,关于指纹的介面也正在逐步完善。

在目前看来,似乎指纹最常用也仅限于Play Store和锁屏应用中。期待在Android N 中,能通过指纹解锁完成更多的事情,在iOS的Touch ID上,有许多值得借鉴的场景。也许之后Androidi使用者能通过指纹,便捷地检视Google相簿中的隐私图片,或者直接解锁启动私人应用。

9.为虚拟现实助力

我们知道,Google正尝试着于打造一款,不需要额外硬体的头戴式VR装置。

而反观目前市面上大部分VR产品,软体部分的开发似乎都与Android系统多少有些联络,也许Google自家的VR装置也需要Android的支援。

所以我们有理由相信,Google会为新版本的Android系统,在VR方向上提供更多系统层面的支援。

10.Now on Tap

Now on Tap作为Android M 的重磅功能,在去年收获了业界好评。大致功能则是基于不同情景而直接提供对应资讯,通过识别你正在执行的app中的内容,提供针对性的建议和资料。

比如在网上聊天时,当聊到某部电影时,只需上滑Home键,关于电影的所有资讯就能直接呈现。

而在Android N 中,我们期待它能发挥更大用处。毕竟Now on Tap中‘上下文感知’和‘基于情景’都是是人类智慧的重要能力。

也许之后当我们开启相机,它就能为你找寻镜头中包含的关键资讯。而不仅限于设定日历提醒,或者帮你搜索那么简单。

综上所述的大部分内容,都是我们作为Android老粉丝的期待和猜想。所有一切都要等到Google I/O 2023才会揭晓。

但不得不说的是,虽然在AppSo年度精选的Android榜中,绝大部分应用都采用了Material Design,但是直到今天,这一设计风格在动效和互动上,依然缺少一个完美的榜样。

我们不会期待Android N 完全改头换面,带来全新的介面,但在图示、按钮、互动动画和介面设计上,我们期待Google能做得更好。

Java和安卓有什么关系

安卓就是Java写的

C语言与安卓开发有什么关系。

安卓的底层使用的是C语言开发的

所以会使用到C语言

另外安卓在嵌入式控制系统中

使用软体控制嵌入式系统的时候会使用到NDK技术

这里面也会使用到C语言开发

java和c 和安卓有什么关系

它们都是计算机语言,c语言称为底层架构与其他两个语言没多大关系,但是学了c后掌握java就很快啦。java是安卓的基础,安卓是基于java平台来编写的。

关于linux oom 日志的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《探究 Linux Out of Memory(OOM)日志的作用和意义 (linux oom 日志)》
文章链接:https://zhuji.vsping.com/31546.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。