首页 > 系统相关 >Linux内存问题排查工具

Linux内存问题排查工具

时间:2023-08-07 09:22:36浏览次数:37  
标签:20 oom 0.0 排查 内存 Linux 进程 root

oom_score

OOM(Out of Memory)其实是内核的一种保护机制。它监控进程的内存使用情况,并且使用 oom_score 为每个进程的内存使用情况进行评分:

  • 一个进程消耗的内存越大,oom_score 就越大;

  • 一个进程运行占用的 CPU 越多,oom_score 就越小。

进程的 oom_score 越大,代表消耗的内存越多,也就越容易被 OOM 杀死,从而可以更好保护系统。

管理员可以通过 /proc 文件系统,手动设置进程的 oom_adj ,从而调整进程的 oom_score。

oom_adj 的范围是 [-17, 15],数值越大,表示进程越容易被 OOM 杀死;数值越小,表示进程越不容易被 OOM 杀死,其中 -17 表示禁止 OOM。

比如用下面的命令,你就可以把 sshd 进程的 oom_adj 调小为 -16,这样, sshd 进程就不容易被 OOM 杀死。

echo -16 > /proc/$(pidof sshd)/oom_adj

free

free可以看系统整体内存使用情况

free

              total        used        free      shared  buff/cache   available
Mem:        3514764      940248      219344       73716     2355172     2219028
Swap:             0           0           0

free 输出的是一个表格,其中的数值都默认以字节为单位。表格总共有两行六列,这两行分别是物理内存 Mem 和交换分区 Swap 的使用情况,而六列中,每列数据的含义分别为:

  • 第一列,total 是总内存大小;

  • 第二列,used 是已使用内存的大小,包含了共享内存;

  • 第三列,free 是未使用内存的大小;

  • 第四列,shared 是共享内存的大小;

  • 第五列,buff/cache 是缓存和缓冲区的大小;

  • 最后一列,available 是新进程可用内存的大小。

这里尤其注意一下,最后一列的可用内存 available 。available 不仅包含未使用内存,还包括了可回收的缓存,所以一般会比未使用内存更大。不过,并不是所有缓存都可以回收,因为有些缓存可能正在使用中。

top

top 可以看进程内存使用情况

top


top - 09:12:28 up 367 days, 14:10,  0 users,  load average: 0.04, 0.02, 0.00
Tasks: 132 total,   1 running,  87 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 98.8 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  3514764 total,   368416 free,   943196 used,  2203152 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2215896 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                          
 1962 ubuntu    20   0  956624  74288  36344 S   0.3  2.1   0:04.76 node                                                                                                                                                             
 2063 ubuntu    20   0  976732  87552  38292 S   0.3  2.5   0:05.73 node                                                                                                                                                             
11399 root      20   0 1115012 150912  19764 S   0.3  4.3 560:46.93 YDService                                                                                                                                                        
30256 root      20   0   64552  11232   3632 S   0.3  0.3  44:22.12 barad_agent                                                                                                                                                      
    1 root      20   0  225544   7596   4920 S   0.0  0.2  19:44.42 systemd                                                                                                                                                          
    2 root      20   0       0      0      0 S   0.0  0.0   0:14.03 kthreadd                                                                                                                                                         
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                     
    6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq                                                                                                                                                     
    7 root      20   0       0      0      0 S   0.0  0.0   3:12.92 ksoftirqd/0                                                                                                                                                      
    8 root      20   0       0      0      0 I   0.0  0.0  35:31.52 rcu_sched                                                                                                                                                        
    9 root      20   0       0      0      0 I   0.0  0.0   0:00.00 rcu_bh                                                                                                                                                           
   10 root      rt   0       0      0      0 S   0.0  0.0   1:06.76 migration/0                                                                                                                                                      
   11 root      rt   0       0      0      0 S   0.0  0.0   0:37.36 watchdog/0                                                                                                                                                       
   12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/0  
  • VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。

  • RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存。

  • SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等。

  • %MEM 是进程使用物理内存占系统总内存的百分比。

top 输出时,要注意两点。

第一,虚拟内存通常并不会全部分配物理内存。从上面的输出,你可以发现每个进程的虚拟内存都比常驻内存大得多。

第二,共享内存 SHR 并不一定是共享的,比方说,程序的代码段、非共享的动态链接库,也都算在 SHR 里。当然,SHR 也包括了进程间真正共享的内存。所以在计算多个进程的内存使用时,不要把所有进程的 SHR 直接相加得出结果。

标签:20,oom,0.0,排查,内存,Linux,进程,root
From: https://www.cnblogs.com/lurenjiashuo/p/linux-memory.html

相关文章

  • 你是不是 可替代的Linux运维工程师?
    做技术行业久了,总会有一种危机感。技术更新太快,自己的学习时间又太少;刚刚抽时间学会Python,发现技术圈的潮流换成了GO语言;GO语言的书刚买回家吃了几天灰,常用的Linux操作系统又更新了一版。技术人总有学不完的新知识,探索不完的新领域。虽然有无穷的知识,但却没有无穷的精力,甚......
  • linux启动服务配置详解
    init进程是所有进程的发起者和控制者。因为在任何基于Unix的系统(比如 linux)中,它都是第一个运行的进程,所以init进程的编号(ProcessID,PID)永远是1。如果init出现了问题,系统的其余部分也就随之而垮掉了。init服务init进程是所有进程的发起者和控制者。因为......
  • Linux设备树的传递及Kernel中对设备树的分析
    当U-Boot将设备树加载到内存指定位置后,ARM内核的SoC以通用寄存器r2来传递dtb在内存中的地址。kernel获取到该地址后对dtb文件做进一步的处理。设备树的传递当使用bootm加载kernel镜像时(bootz是对bootm的一种封装以及功能扩展,实质一样)。U-Boot跳转到k......
  • Linux下轻松修改MySQL/MariaDB的Root密码
    如果你是第一次安装MySQL或MariaDB,你可以执行mysql_secure_installation 脚本来实现基本的安全设置。其中的一个设置是数据库的root密码——该密码必须保密,并且只在必要的时候使用。如果你需要修改它(例如,当数据库管理员换了人——或者被解雇了!)。修改MySQL或......
  • 【技术积累】Linux中的命令行【理论篇】【五】
    arpd命令命令介绍arpd命令是Linux系统中的一个网络工具,用于管理和操作ARP(地址解析协议)缓存。ARP协议用于将IP地址映射到MAC地址,以便在局域网中进行通信。命令说明arpd命令的主要功能包括:1.显示和管理ARP缓存:arpd命令可以显示当前系统中的ARP缓存表,包括IP地址和对应的MAC地址......
  • Oracle 11g Windows迁移至linux方案
    1.前言根据迁移规范要求,特编写xxx数据库迁移至linux环境操作方案。2.方案描述2.1环境描述源库数据量为20T,操作系统为WindowsServer200864bit,数据库版本为oracle11.2.0.1,目标库操作系统为Linuxredhat7.6,数据库版本为11.2.0.4。详细信息如下:源端数据库:业务系统  数据库 I......
  • Linux之SSH
    目录一、SSH概述1.1SSH基础1.1.1SSH概述1.1.2SSH优点1.1.3SSH功能1.2SSH原理1.3SSH服务端二、免密登录一、SSH概述1.1SSH基础1.1.1SSH概述SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其......
  • Linux网络服务之SSH服务
    目录SSH服务1.ssh基础2.ssh原理3.实际操作SSH服务1.ssh基础SSH(SecureShell)协议是一种安全通道协议对通信数据进行了加密处理,用于远程管理作用:主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的......
  • Tails Linux 镜像站分享
    TailsBoum是一个便携式Linux操作系统,可以防止监视和审查.Tails镜像站列表:tails.net/mirrors.jsonTails镜像站(速度较快):tails.mirror.iphh.net......
  • 4 Linux网络编程
    4Linux网络编程4.1网络结构模式C/S结构:服务器/客户机,即Client-Server(C/S)结构。B/S结构:浏览器/服务器,即Browser/Server(B/S)结构4.2MAC地址、IP地址和端口4.2.1MAC地址MAC地址(MediaAccessControlAddress),在OSI模型中,第三层网络层负责IP地址,第二层数据链路层......