当前位置: 首页 > news >正文

page allocation stalls for 问题调研

 一.现象分析和内存管理基本概念介绍

         最近有一台linux出现卡死的状态,系统不反应,无法ssh登录,只能通过电源关机重启操作恢复,重启后登录系统后台,拉取kernel日志,如下

Jul 12 18:48:06 kernel: [141294.374983] send process: page allocation stalls for 10108ms, order:2, mode:0x14040c0(GFP_KERNEL|__GFP_COMP), nodemask=(null)
Jul 12 18:48:06 kernel: [141294.374989] send process cpuset=/ mems_allowed=0
Jul 12 18:48:06 kernel: [141294.374994] CPU: 4 PID: 15603 Comm: send process Tainted: G           OE   4.12.9-041209-generic #201708242344
Jul 12 18:48:06 kernel: [141294.374995] Hardware name: OEM YY COME6801/EB5129, BIOS 4.6.5 03/03/2020
Jul 12 18:48:06 kernel: [141294.374996] Call Trace:
Jul 12 18:48:06 kernel: [141294.375001]  dump_stack+0x63/0x8d
Jul 12 18:48:06 kernel: [141294.375003]  warn_alloc+0x114/0x1c0
Jul 12 18:48:06 kernel: [141294.375005]  __alloc_pages_slowpath+0x8df/0xd80
Jul 12 18:48:06 kernel: [141294.375007]  ? dequeue_entity+0xed/0x4b0
Jul 12 18:48:06 kernel: [141294.375009]  ? swiotlb_full+0xb0/0xb0
Jul 12 18:48:06 kernel: [141294.375010]  __alloc_pages_nodemask+0x23f/0x260
Jul 12 18:48:06 kernel: [141294.375013]  alloc_pages_current+0x93/0x150
Jul 12 18:48:06 kernel: [141294.375017]  kmalloc_order+0x18/0x40
Jul 12 18:48:06 kernel: [141294.375018]  kmalloc_order_trace+0x24/0xb0
Jul 12 18:48:06 kernel: [141294.375021]  __kmalloc+0x1dd/0x1f0
Jul 12 18:48:06 kernel: [141294.375025]  proc_do_submiturb+0x4bf/0xd10
Jul 12 18:48:06 kernel: [141294.375026]  usbdev_do_ioctl+0xc47/0x1190
Jul 12 18:48:06 kernel: [141294.375028]  usbdev_ioctl+0xe/0x20
Jul 12 18:48:06 kernel: [141294.375031]  do_vfs_ioctl+0xa5/0x600
Jul 12 18:48:06 kernel: [141294.375034]  ? getnstimeofday64+0xe/0x20
Jul 12 18:48:06 kernel: [141294.375037]  ? __audit_syscall_entry+0xb1/0xf0
Jul 12 18:48:06 kernel: [141294.375040]  ? syscall_trace_enter+0x1d4/0x2c0
Jul 12 18:48:06 kernel: [141294.375042]  SyS_ioctl+0x79/0x90
Jul 12 18:48:06 kernel: [141294.375043]  do_syscall_64+0x5b/0xc0
Jul 12 18:48:06 kernel: [141294.375046]  entry_SYSCALL64_slow_path+0x25/0x25
Jul 12 18:48:06 kernel: [141294.375055] Mem-Info:
Jul 12 18:48:06 kernel: [141294.375058]  active_file:244309 inactive_file:250424 isolated_file:0
Jul 12 18:48:06 kernel: [141294.375058]  free:24274 free_pcp:1575 free_cma:0
Jul 12 18:48:06 kernel: [141294.375058]  mapped:39931 shmem:30621 pagetables:10987 bounce:0
Jul 12 18:48:06 kernel: [141294.375058]  slab_reclaimable:48655 slab_unreclaimable:32286
Jul 12 18:48:06 kernel: [141294.375058]  unevictable:913 dirty:587 writeback:6555 unstable:0
Jul 12 18:48:06 kernel: [141294.375058] active_anon:1124210 inactive_anon:207648 isolated_anon:382
Jul 12 18:48:06 kernel: [141294.375061] Node 0 active_anon:4496840kB inactive_anon:830592kB active_file:977236kB inactive_file:1001696kB unevictable:3652kB isolated(anon):1528kB isolated(file):0kB mapped:159724kB dirty:2348kB writeback:26220kB shmem:122484kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 8192kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
Jul 12 18:48:06 kernel: [141294.375061] Node 0 DMA free:15900kB min:132kB low:164kB high:196kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15984kB managed:15900kB mlocked:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
Jul 12 18:48:06 kernel: [141294.375064] lowmem_reserve[]: 0 3288 7745 7745 7745
Jul 12 18:48:06 kernel: [141294.375066] Node 0 DMA32 free:47900kB min:28632kB low:35788kB high:42944kB active_anon:1957932kB inactive_anon:34164kB active_file:569156kB inactive_file:578364kB unevictable:0kB writepending:17328kB present:3479824kB managed:3414256kB mlocked:0kB slab_reclaimable:102740kB slab_unreclaimable:34272kB kernel_stack:784kB pagetables:5176kB bounce:0kB free_pcp:3548kB local_pcp:632kB free_cma:0kB
Jul 12 18:48:06 kernel: [141294.375069] lowmem_reserve[]: 0 0 4457 4457 4457
Jul 12 18:48:06 kernel: [141294.375070] Node 0 Normal free:33296kB min:38812kB low:48512kB high:58212kB active_anon:2538740kB inactive_anon:795348kB active_file:409360kB inactive_file:426836kB unevictable:3652kB writepending:9900kB present:4716544kB managed:4567500kB mlocked:3652kB slab_reclaimable:91880kB slab_unreclaimable:94872kB kernel_stack:20624kB pagetables:38772kB bounce:0kB free_pcp:2748kB local_pcp:0kB free_cma:0kB
Jul 12 18:48:06 kernel: [141294.375073] lowmem_reserve[]: 0 0 0 0 0
Jul 12 18:48:06 kernel: [141294.375075] Node 0 DMA: 1*4kB (U) 1*8kB (U) 1*16kB (U) 0*32kB 2*64kB (U) 1*128kB (U) 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB (M) = 15900kB
Jul 12 18:48:06 kernel: [141294.375082] Node 0 DMA32: 2070*4kB (UMEH) 3103*8kB (MEH) 914*16kB (UMEH) 7*32kB (UM) 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 47952kB
Jul 12 18:48:06 kernel: [141294.375088] Node 0 Normal: 2160*4kB (UMEH) 2182*8kB (UME) 499*16kB (UMEH) 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 34080kB
Jul 12 18:48:06 kernel: [141294.375094] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
Jul 12 18:48:06 kernel: [141294.375095] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
Jul 12 18:48:06 kernel: [141294.375096] 4247 pages in swap cache
Jul 12 18:48:06 kernel: [141294.375096] 530017 total pagecache pages
Jul 12 18:48:06 kernel: [141294.375097] Free swap  = 947452kB
Jul 12 18:48:06 kernel: [141294.375097] Swap cache stats: add 88609, delete 84362, find 8/16
Jul 12 18:48:06 kernel: [141294.375098] 2053088 pages RAM
Jul 12 18:48:06 kernel: [141294.375098] Total swap = 1003004kB
Jul 12 18:48:06 kernel: [141294.375099] 0 pages cma reserved
Jul 12 18:48:06 kernel: [141294.375099] 0 pages HighMem/MovableOnly
Jul 12 18:48:06 kernel: [141294.375099] 53674 pages reserved
Jul 12 18:48:06 kernel: [141294.375100] 0 pages hwpoisoned

        拿到内核日志之后,最醒目的就是上图中内核打印,page allocation stalls for 10108ms,应该是内存相关的,我们要分析内核日志,怀疑与内存相关,则需要了解linux内核的分配和回收机制,以及与内存相关的一些内核函数逻辑 。

        这个里面我关注四个打印点

1.send process: page allocation stalls for 10108ms, order:2, 
mode:0x14040c0(GFP_KERNEL|__GFP_COMP), nodemask=(null)
2.Node 0 Normal free:33296kB min:38812kB low:48512kB high:58212kB 
active_anon:2538740kB inactive_anon:795348kB active_file:409360kB 
inactive_file:426836kB unevictable:3652kB writepending:9900kB present:4716544kB 
managed:4567500kB mlocked:3652kB slab_reclaimable:91880kB 
slab_unreclaimable:94872kB kernel_stack:20624kB pagetables:38772kB bounce:0kB free_pcp:2748kB local_pcp:0kB free_cma:0kB
3.lowmem_reserve[]: 0 0 0 0 0
4.0 pages HighMem/MovableOnly

        page allocation stalls for 10108ms,我们首先想到的是内存申请出现问题,内存申请阻塞,然后内核打印了目前的的mem info,要读懂这些打印,首先我们需要了解linux的内存管理机制,和一些基本的概念。

Jul 12 19:51:12 kernel: [    0.000000] Linux version 4.12.9-041209-generic (kernel@tangerine) 
(gcc version 7.2.0 (Ubuntu 7.2.0-1ubuntu1) ) #201708242344 SMP Fri Aug 25 03:47:24 UTC 2017
Jul 12 19:51:12 kernel: [    0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.12.9-041209-generic 
root=/dev/mapper/gaussian--vg-root ro net.i

相关文章:

page allocation stalls for 问题调研

一.现象分析和内存管理基本概念介绍 最近有一台linux出现卡死的状态,系统不反应,无法ssh登录,只能通过电源关机重启操作恢复,重启后登录系统后台,拉取kernel日志,如下 Jul 12 18:48:06 kernel: [141294.374983] send process: page allocation stalls for 10108ms, orde…...

JUC并发工具类

一、ReentrantLock 特点:独占、可重入、公平/非公平、可中断、支持多个条件变量 1、常用api ReentrantLock实现了Lock接口,Lock类规范定义了如下方法 lock():获取锁,调用该方法的线程会获取锁,当锁获得后&#xff0…...

【雕爷学编程】MicroPython动手做(10)——零基础学MaixPy之神经网络KPU

早上百度搜“神经网络KPU”,查到与非网的一篇文章《一文读懂APU/BPU/CPU/DPU/EPU/FPU/GPU等处理器》,介绍各种处理器非常详细,关于“KPU”的内容如下: KPU Knowledge Processing Unit。 嘉楠耘智(canaan)号…...

MySQL~SQL语句

一、SQL 1.什么是SQL? Structured Query Language:结构化查询语言 每一种数据库操作的方式存在不一样的地方,称为“方言”。 2.SQL通用语法 SQL 语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MyS…...

从零开始构建基于YOLOv5的目标检测系统

本博文从零开始搭建基于YOLOv5模型的目标检测系统(具体系统参考本博主的其他博客),手把手保姆级完成环境的搭建。 (1)首先Windows R输入cmd命令后打开命令窗口,进入项目目录,本博文以野生动物…...

PDF尺寸修改:等比绽放(标准面单100*150mm)

PDF修改尺寸 需要注意:第一个方法返回的是转换后PDF的base64。第二个方法返回的是文件流,这个方法才是转的核心。 /*** 修改PDF尺寸** param pdfUrl PDF链接* param pdfWidthInMillimeters 指定宽 mm* param pdfHeightInMillimeters 指…...

C++ - list介绍 和 list的模拟实现

list介绍 list 是一个支持在常数范围内,任意位置进行插入删除的序列式容器,且这个容器可以前后双向迭代。我们可以把 list 理解为 双向循环链表的结构。 于其他结构的容器相比,list在 任意位置进行插入和函数的效率要高很多;而li…...

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

前言 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。 如…...

深度学习初探

1.深度学习模型训练过程 1)数据(数据清洗标注) 2)模型(模型的构建和初始化) 3)损失(前向传播的过程,得到模型的输出和真实标签的差异值,称之为损失&#x…...

nn.BCELoss与nn.CrossEntropyLoss

BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary CrossEntropyLoss的缩写,BCELoss是CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntropyLoss可以用于二分类,也可以用于多分类&#xf…...

CSDN浏览如何解决

一、对于平时我们苦恼csdn数据不够好看 当面试等各个场合需要我们装*或者秀技术无法拿出亮眼的时候,刚好我闲时间编译的在线模块适合你 二、如何操作(虚拟平台我已给大家放到最后直接使用即可) 重点:pc端必须拥有python环境 win…...

web前端开发小知识

当今互联网技术迅猛发展,web前端开发也成为了非常热门的职业之一。作为一个web前端开发者,不仅需要掌握各种前端开发技术,还需要了解一些小技巧和小知识。下面,我们将介绍一些web前端开发小知识,希望对你的工作有所帮助…...

Java泛型的简单认识

泛型的认识 自定义泛型,定义了String类型,随后这个泛型就是String类型 于是他的方法都是字符串的类型 泛型接口 泛型方法 所有车可以进行比赛,定义了一个BMW和BENZ两个车类,都继承car,当使用泛型的 如果你顶一个狗对象…...

视频转化为图片或灰度视频

1.视频转化为图片 import cv2video_pathr"D:\Dataset\video/7.mp4" capturecv2.VideoCapture(video_path) # print(capture.get(5))if capture.isOpened():ret,imgcapture.read()index0while ret:if index%200:imgidr"D:\Dataset\image/6/""%07d&quo…...

【动态规划刷题 2】使⽤最⼩花费爬楼梯 解码⽅法

使⽤最⼩花费爬楼梯 746 . 使用最小花费爬楼梯 链接: 746 . 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 …...

Python的基本语法

“有人说,写python就像是坐在一个没有安全带的车上, 我认为这个说法很欠妥当, 应该是一辆没有外壳和座椅, 只有发动机和轮子的车, 并且车上摆满了轮子” python既然是作为一个工具,那么就不需要去深入…...

Kubernetes那点事儿——存储之存储卷

Kubernetes那点事儿——存储之存储卷 前言一、K8s数据卷一、临时存储卷emptyDir二、节点存储卷hostPath三、网络存储NFS 前言 在K8s中用Volume为容器提供了外部的存储能力。 Pod需要设置卷来源(spec.volume)和挂载点(spec.containers.volumeM…...

Go语言中‘String’包中的‘Cut‘函数的实现

Go语言中‘String’包中的’Cut’函数的实现 ​ Cut函数用于在字符串**‘s’中查找子串’sep’,并将字符串’s’在子串 ‘sep’ 第一次出现的位置分割成两部分:before和after** package main import("fmt" "strings" ) func main(…...

【JAVASE】顺序和选择结构

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 顺序和选择 1. 顺序结构2. 分支结构2.1 …...

Oracle恢复删除的数据

不下心删除了生产库的数据或者不小心删除了一部分数据,如何恢复找回。 Oracle恢复删除数据的方法 方案一 利用oracle提供的闪回方法进行数据恢复,适用于delete删除方式 首先获取删除数据的时间点: select * from v$sql where sql_text l…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...