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

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

Objective-C常用命名规范总结

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

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...