【银河麒麟高级服务器操作系统】系统日志Call trace现象分析及处理全流程

了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

文档中心:https://document.kylinos.cn


服务器环境以及配置

系统环境

物理机/虚拟机/云/容器

虚拟机

网络环境

外网/私有网络/无网络

私有网络

硬件环境

处理器:

 Hygon  C86  7285  32-core  Processor

内存:

 32 GiB

BIOS版本:

SeaBIOS

软件环境

具体操作系统版本

银河麒麟高级服务器操作系统 V10 SP1

内核版本

4.19.90-23.15.v2101.ky10.x86_64

现象描述

早6点左右虚拟机hang了好几分钟,出问题后把节点摘了,没在当前虚拟机跑了。在7点2分messages才有日志记录 有大量Call trace: list_del函数试图从链表中删除一个节点,但在检查该节点的next和prev指针时发现了不一致性   请排查虚拟机hang的原因以及分析排查Call trace情况。

现象分析

分析messages日志

Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.831889] list_del corruption. next->prev should be ffffd05b18a41ec8, but was ffffd05b11576848
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.833504] WARNING: CPU: 1 PID: 743 at lib/list_debug.c:56 __list_del_entry_valid+0x8a/0x90
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.835050] Modules linked in: nls_utf8 isofs binfmt_misc tcp_diag inet_diag sunrpc ext4 mbcache jbd2 kvm_amd ccp kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel sg joydev virtio_balloon i2c_piix4 pcspkr psmouse ip_tables xfs libcrc32c sr_mod cdrom sd_mod ata_generic crc32c_intel cirrus drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_net ata_piix net_failover virtio_console libata serio_raw virtio_scsi failover floppy dm_mirror dm_region_hash dm_log dm_mod
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.842887] CPU: 1 PID: 743 Comm: systemd-journal Kdump: loaded Tainted: G        W         4.19.90-23.15.v2101.ky10.x86_64 #1
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.845961] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.849036] RIP: 0010:__list_del_entry_valid+0x8a/0x90
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.850562] Code: c4 ff 0f 0b 31 c0 c3 48 89 f2 48 89 fe 48 c7 c7 b8 59 0e bc e8 67 56 c4 ff 0f 0b 31 c0 c3 48 c7 c7 f8 59 0e bc e8 56 56 c4 ff <0f> 0b 31 c0 c3 90 48 85 d2 41 55 41 54 55 53 74 5f 48 85 f6 74 64
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.853639] RSP: 0018:ffff9f66040cf8d8 EFLAGS: 00010082
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.855156] RAX: 0000000000000000 RBX: ffffd05b18a41ec0 RCX: 0000000000000006
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.856664] RDX: 0000000000000007 RSI: 0000000000000092 RDI: ffff94329c856890
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.858167] RBP: ffff943296a72000 R08: 0000000000063462 R09: 0000000000000018
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.859649] R10: ffff94321509e6d0 R11: ffff9432964aec70 R12: ffff9f66040cfbc8
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.861146] R13: 0000000000000000 R14: 0000000000000000 R15: ffffffffbc463908
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.862637] FS:  00007fab73427940(0000) GS:ffff94329c840000(0000) knlGS:0000000000000000
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.864170] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.865697] CR2: 00007fc4e2ee4000 CR3: 00000007dbb70000 CR4: 00000000003406e0
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.867242] Call Trace:
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.868728]  release_pages+0x17f/0x5a0
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.870214]  __pagevec_release+0x2b/0x30
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.871671]  shmem_undo_range+0x370/0x870
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.873265]  shmem_truncate_range+0x16/0x40
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.874725]  shmem_fallocate+0x175/0x4c0
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.876181]  vfs_fallocate+0x13f/0x270
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.877651]  ksys_fallocate+0x3c/0x70
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.879105]  __x64_sys_fallocate+0x1a/0x20
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.880563]  do_syscall_64+0x5b/0x1d0
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.882037]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.883509] RIP: 0033:0x7fab74467f45
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.884979] Code: 54 49 89 cd 55 53 49 89 d4 89 f5 89 fb 48 83 ec 18 e8 2f 76 01 00 4d 89 ea 41 89 c0 4c 89 e2 89 ee 89 df b8 1d 01 00 00 0f 05 <48> 3d 00 f0 ff ff 77 35 44 89 c7 89 44 24 0c e8 67 76 01 00 8b 44
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.888160] RSP: 002b:00007fff2d018c40 EFLAGS: 00000293 ORIG_RAX: 000000000000011d
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.889715] RAX: ffffffffffffffda RBX: 0000000000000021 RCX: 00007fab74467f45
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.891259] RDX: 0000000000000000 RSI: 0000000000000003 RDI: 0000000000000021
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.892752] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.894235] R10: 0000000008000000 R11: 0000000000000293 R12: 0000000000000000
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.895694] R13: 0000000008000000 R14: 0000000000000011 R15: 00007fff2d018e38
Jul  8 07:02:34 PLPSAPP1 kernel: [23274630.897180] ---[ end trace 101918ae875052b5 ]---

 do_syscall_64+0x5b/0x1d0
  __x64_sys_fallocate+0x1a/0x20 用户空间程序调用 fallocate,开始处理文件空间预分配
   ksys_fallocate+0x3c/0x70  虚拟文件系统的 fallocate 实现
    vfs_fallocate+0x13f/0x270
     shmem_fallocate+0x175/0x4c0  tmpfs文件系统的fallocate实现,处理共享内存文件系统的空间预分配
      shmem_truncate_range+0x16/0x40 在shmem_fallocate过程中,如果需要释放一些页面,会调用这个函数来执行截断操作
       shmem_undo_range+0x370/0x870 tmpfs 中撤销分配的函数,负责删除指定范围内的页面
        __pagevec_release+0x2b/0x30 在撤销或释放页面时,内核使用页面向量来批量操作,以提高效率。
         release_pages+0x17f/0x5a0 释放多个页面的核心函数,遍历页面列表并释放每个页面。

systemd-journald 服务在重启过程中失败,原因是日志文件已满(1.5G),没有剩余空间。收到 SIGTERM 信号后,systemd-journald 关闭,但在重新启动时,因日志文件已满,未能成功启动,导致超时。

Jul  8 07:02:49 PLPSAPP1 rsyslogd[38846]: imjournal: journal reloaded... [v8.1907.0 try https://www.rsyslog.com/e/0 ]
Jul  8 07:02:49 PLPSAPP1 rsyslogd[38846]: imjournal: journal reloaded... [v8.1907.0 try https://www.rsyslog.com/e/0 ]
Jul  8 07:02:49 PLPSAPP1 systemd-journald[36836]: Journal stopped
Jul  8 07:02:50 PLPSAPP1 systemd-journald[37081]: Journal started
Jul  8 07:02:50 PLPSAPP1 systemd-journald[37081]: Runtime Journal (/run/log/journal/aba8e21d9dc64b2193542d4b2caccc95) is 1.5G, max 1.5G, 0B free.
Jul  8 07:02:51 PLPSAPP1 systemd-journald[36836]: [23274690.936680] Received SIGTERM from PID 1 (systemd).
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.958033] systemd-journald.service: Failed with result 'timeout'.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.960028] Failed to start Journal Service.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.961478] Dependency failed for Flush Journal to Persistent Storage.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.973694] systemd-journal-flush.service: Job systemd-journal-flush.service/start failed with result 'dependency'.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.977363] systemd-journald.service: Service has no hold-off time (RestartSec=0), scheduling restart.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.980372] systemd-journald.service: Scheduled restart job, restart counter is at 3.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.982920] Stopped Journal Service.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274690.987932] Starting Journal Service...
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274691.022359] titanagent_check_exception.service: Succeeded.
Jul  8 07:02:51 PLPSAPP1 systemd[1]: [23274691.024182] Started titanagent check exception.

systemd-joural(PID 743)一直存在警告,而后systemd-journal(PID 743)进程由于超时被kill,后续拉起来的systemd-journal(PID 37081)继续报警告。

sa日志分析

sar -rh -f sa08,查看内存使用情况,空闲内存还有很多。

sar -u -f sa08,查看CPU使用情况,问题发生时,用户态使用55%,内核态使用32%。

sar -P ALL -f sa08,查看CPU使用情况,6核CPU,用户态和内核态都使用较高。

sar -q -f sa08,问题发生时系统负载较高。

sar -d -f sa08,查看磁盘读写情况,发现在磁盘读写较低的情况下,await较高。设备sda和sdc的 %util 超过 20%,await 值都超过了 1000ms,表示 I/O 请求在队列中等待的时间很长,可能会导致系统性能下降。

分析小结

分析messages日志,从空间调用 fallocate 系统调用开始,经过多个层次的函数调用,最终到达具体文件系统(tmpfs)的实现。日志中出现的问题表明在这个过程中,内存链表操作发生了损坏,导致内核警告,且伴随提示丢失了40多万行的内核日志信息,记录的情况也已经不是问题的第一现场,出现链表检测错误告警后并不会进行修复,在接下来使用到问题链表时,依旧会出发告警情况。

日志系统进行预分配,需要在tmpfs中进行,且伴随内存页的迁移情况,其中伴随page->lru链表的告警的信息输出,由于日志系统存储在tmpfs中,也造成一定的hang住情况,丢失了不少内核信息,也丢失了问题第一现场

分析sa日志,磁盘读写延迟非常高。长时间的I/O等待会导致内存中的数据迟迟不能写入磁盘,可能影响内存的释放和管理,可能会影响文件系统的元数据操作,如链表操作和页表管理。 

从目前的日志情况没有直接的原因说明系统hang住的情况,可能存在其他进程依赖日志输出,日志又被卡住,造成这种依赖的应用系统hang情况  

下一步计划

建议日志系统存储到/var/log中,不存储在内存文件系统中,这样避免复现问题丢失日志情况,进一步有助于问题分析。

#创建目录  /var/log/journal    

mkdir -p /var/log/journal     

#修改/etc/systemd/journald.conf文件

[Journal]
SystemMaxUse=2G
SystemMaxFileSize=128M

而后执行systemctl restart systemd-journald

问题出现后,在未重系统启前,可以echo c > /proc/sysrq-trigger手动触发vmcore,收集vmcore进行进一步分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13882.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杭州某小厂面试

问的都是基础知识&#xff0c;主要是三个部分&#xff1a;计网&#xff0c;数据库&#xff0c;java。计网答得挺好&#xff0c;数据答得一般&#xff0c;Java答得一坨。 目录 1.TCP/IP协议的5层模型 2.3次握手和4次挥手 3.操作系统中的进程和线程的区别 4.lunix top 命令看…

k8s网络插件及基础命令

一、k8s的cni网络插件 1.k8s的内部网络模式 pod内的容器与容器之间的通信。一个节点上的pod之间的通信&#xff0c;docker0网桥直接通信。不同节点上的pod之间的通信&#xff1a;通过物理网卡的ip地址和其他节点上的物理网卡的设备进行通信&#xff0c;然后把流量转发到指定的…

Zookeeper是如何解决脑裂问题的?

大家好&#xff0c;我是锋哥。今天分享关于【Zookeeper是如何解决脑裂问题的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Zookeeper是如何解决脑裂问题的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper 通过多种机制来解决脑裂&…

判断您的Mac当前使用的是Zsh还是Bash:echo $SHELL、echo $0

要判断您的Mac当前使用的是Zsh还是Bash&#xff0c;可以使用以下方法&#xff1a; 查看默认Shell: 打开“终端”应用程序&#xff0c;然后输入以下命令&#xff1a; echo $SHELL这将显示当前默认使用的Shell。例如&#xff0c;如果输出是/bin/zsh&#xff0c;则说明您使用的是Z…

web直播弹幕抓取分析 signature

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 最近遇到太多难点了卡了很久&am…

使用Deepseek搭建本地知识库-Cherry Studio

Cherry Studio 支持多模型服务的 Windows/macOS GPT 客户端 GITHUB&#xff1a;CherryHQ/cherry-studio CSDN资源&#xff1a;cherry studio Cherry Studio 是一个支持多模型服务的桌面客户端&#xff0c;为专业用户而打造&#xff0c;内置 30 多个行业的智能助手&#xff0c…

Node.js 环境配置

什么是 Node.js Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行时环境&#xff0c;它允许你在服务器端运行 JavaScript。传统上&#xff0c;JavaScript 主要用于浏览器中的前端开发&#xff0c;而 Node.js 使得 JavaScript 也能够在服务器上执行&#xff0c;…

面向对象程序设计-实验2

题目1 6-1 使用动态内存分配的冒泡排序。 代码清单&#xff1a; #include <iostream> using namespace std; int* bubble_sort(int n);/* 对长度为n的数组执行冒泡排序 */ int main() { int n; cin >> n; int* a bubble_sort(n); for (int i 0; i < n; i)…

集成Google Maps页面提示[For development purposes only]解决方案

问题描述 填写Google Maps JavaScript API密钥之后(https://console.cloud.google.com/apis/credentials/key/2fb9924f-4dc6-4e77-b26f-085b67f48ae0?inv=1&invt=Abo68g&project=deft-velocity-450208-t8),加载Google Maps JavaScript API会出现这样的显示: 问题…

深浅拷贝~

深浅拷贝&#xff1a;直接赋值给的是地址&#xff0c;如果修改赋值后的变量&#xff0c;实际上连同原变量的值一并修改了。 浅拷贝 展开运算符 {...obj} 拷贝对象 Object.assign(新&#xff0c;旧) 深拷贝 递归&#xff1a;自己调用自己 以下实际是浅拷贝 递归调用处理数组问题…

PySpark学习笔记5-SparkSQL

sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java&#xff0c;Scala&#xff0c;python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…

【医院绩效管理专题】2.绩效管理:医院发展的核心驱动力

医院成本核算、绩效管理、运营统计、内部控制、管理会计专题索引 一、引言 在当今医疗行业快速发展的背景下,医院管理面临着日益复杂的挑战。绩效管理作为医院管理的核心组成部分,对于提升医院运营效率、优化医疗服务质量以及实现可持续发展具有举足轻重的作用。它不仅是医…

unity学习32:角色相关1,基础移动控制

目录 0 应用商店 1 角色上新增CharacterController 组件 1.1 角色上新增CharacterController 组件 1.2 如果没有这个则会报错​编辑 2 速度 2.1 默认速度 2.2 修改速度为按时间计算 2.2 movespeed&#xff0c; 3 测试移动的代码 3.1 CharacterController 变量的声明…

构建复杂且高效的人机协作工作流?Agentic Workflows

智能创作引擎架构设计 核心原理 一个 AI 原生创作引擎&#xff0c;通过自由形式的画布界面&#xff0c;结合多线程对话、知识库 RAG 集成、上下文记忆、智能搜索和所见即所得的 AI 编辑器等功能&#xff0c;帮助用户轻松将想法转化为生产级内容。 模块详解 1. 前端模块 (apps/w…

H266/VVC 环路滤波中去块滤波 DF 技术

去块滤波 DF H266 中去方块滤波 DF 过程类似 HEVC 中处理过程&#xff0c;但也引进了一些新技术&#xff0c;用于去除方块效应。方块效应指编码块边界处的不连续现象。方块效应的成因主要是基于块的编码过程中&#xff0c;各个块的预测、 变换、量化等过程相互独立&#xff0c;…

Python设计模式 - 原型模式

定义 原型模式是一种创建型设计模式&#xff0c;它可以通过复制现有对象来创建新对象&#xff0c;而不是直接实例化新的对象。 结构 抽象原型&#xff08;Prototype&#xff09;&#xff1a;声明 clone() 方法&#xff0c;以便派生类实现克隆自身的能力。具体原型&#xff08…

电脑运行黑屏是什么原因?原因及解决方法

电脑运行黑屏是指电脑在正常开机或使用过程中&#xff0c;突然出现屏幕变黑&#xff0c;无法显示任何内容的现象。这种现象可能会给用户带来很多不便&#xff0c;甚至造成数据丢失或硬件损坏。那么&#xff0c;电脑运行黑屏是什么原因呢&#xff1f;下面我们将分析几种可能的原…

路由器如何进行数据包转发?

路由器进行数据包转发的过程是网络通信的核心之一&#xff0c;主要涉及以下几个步骤&#xff1a; 接收数据包&#xff1a;当一个数据包到达路由器的一个接口时&#xff0c;它首先被暂时存储在该接口的缓冲区中。 解析目标地址&#xff1a;路由器会检查数据包中的目标IP地址。…

MTGNN论文解读

模型架构 MTGNN 由多个模块组合而成&#xff0c;目标是捕捉多变量时间序列中的空间&#xff08;变量间&#xff09;和时间&#xff08;时序&#xff09;依赖。 图学习层&#xff1a;用于自适应地学习图的邻接矩阵&#xff0c;发现变量之间的关系。图卷积模块&#xff1a;根据邻…

π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当

前言 过去的半个多月 deepseek火爆全球&#xff0c;我对其的解读也成了整整一个系列 详见《火爆全球的DeepSeek系列模型》&#xff0c;涉及对GRPO、MLA、V3、R1的详尽细致深入的解读 某种意义来讲&#xff0c;deepseek 相当于把大模型的热度 又直接拉起来了——相当于给大模…