当前位置: 首页 > 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…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...