【问题实操】银河高级服务器操作系统实例分享,配置hugepages启动异常

news2025/2/23 12:31:15

1.问题现象

某运营商国产服务器操作系统项目,部署Kylin-Server-0524-aarch64服务器系统,内核从4.19.90-24.4升级到4.19.90-25.14。在grub中配置huagepages大页内存后,系统在内核启动阶段黑屏,只显示一个光标。grub配置如下图:

黑屏状态如下图:

2.问题分析

1.重启系统,在grub里面添加启动参数:console=tty0 loglevel=7 systemd.log_level=debug调高日志级别后,看到系统启动后卡住的时候报错:systemd-journald[1693]:Failed to open runtime journal:No space left on device,由于journald 生成的日志文件默认不是持久的,日志文件只存储在内存或/run/log/journal/目录中的一个小环形缓冲区中,可知,系统是由于内存不够,没法启动。提示信息如下图:

2.于是将grub里面设置的819个大页改为600个大页,也就是将default_hugepagesz=512M hugepagesz=512M hugepages=819改为default_hugepagesz=512M hugepagesz=512M hugepages=600,改完后可以正常进入系统,从而可以进一步确定系统启动不了的原因是由于内存不够引起的。

3.查看系统所保留空闲内存的最低限,sysctl -a | grep min_free_kbytes,发现min_free_kbytes的值为25G,如下图:

为了保证客户现场在hugepages=819的情况下能够正常进系统,我们将min_free_kbytes系统所保留空闲内存的最低限从25G调整为了128M,改完后如下图:

此时在hugepages=819的情况下,能够正常进入系统。

4.进入系统后,发现系统在没有启动任何业务系统的情况下(ps aux 也没有看到内存占用高的进程),内存使用了479G,而hugepages配置的只有409.5G,也就是说有大约70G的内存不知道是被什么进程占用的,free命令结果如下图:

ps aux没有发现内存占用高的进程,如下图:

5.重启系统,在grub界面继续增加启动参数:systemd.unit=emergence.target,让系统进入紧急模式,如下图:

在紧急模式中通过free查看内存占用,发现used为411G,由此怀疑是加载了某系驱动或者某些服务引起的问题。优先考虑到和磁盘缓存队列以及网卡缓存队列。

尝试在emergency模式中将正常系统启动后的驱动模块加载上来以及将正常系统的服务启动,发现当NetworkManager成功启动后,内存上升到了476G,由此可知该问题和NetworkManager服务强相关。

6.对比以4.19.90-24.4内核启动的系统以及以4.19.90-25.14内核启动的系统分别的ip信息,发现4.19.90-25.14的内核要比4.19.90-24.4的内核多识别了四张网卡:ens2f0、ens2f1、enP1s5f0、enP1s5f1。

4.19.90-25.14-kernel识别的网卡如下:

4.19.90-25.14-kernel识别的网卡如下:

查看ens2f0、ens2f1、enP1s5f0、enP1s5f1网卡对应的驱动,发现均为:ice,如下图:

所以不难推断,4.19.90-24.4的内核没有成功加载ice驱动,所以少识别了ens2f0、ens2f1、enP1s5f0、enP1s5f1这四张网卡。

7.为了验证第6点,对比启动4.19.90-24.4内核以及启动4.19.90-25.14内核后的lsmod信息,发现4.19.90-24.4内核没有成功加载ice驱动,而4.19.90-25.14内核已经成功加载了ice驱动。

4.19.90-24.4-kernel加载的ice驱动信息如下图:

4.19.90-25.14-kernel加载的ice驱动信息如下图:

于是将4.19.90-25.14内核的系统卸载ice驱动后,发现内存恢复正常。所以可以进一步定位该问题与ice驱动强相关。

8.继续在4.19.90-24.4内核的系统,执行insmod /usr/lib/modules/4.19.90-25.14.v2101.ky10.aarch64/kernel/drivers/net/ethernet/intel/ice/ice.ko.xz(加载4.19.90-25.14的ice驱动),发现ice驱动被成功加载,但是内存却使用正常,由此可知,4.19.90-25.14系统内核默认的ice驱动没有问题。怀疑有问题的时候加载的ice驱动并非系统自带。

9.于是执行find / | grep ice.ko | xargs md5sum,发现在/root/ice-1.5.8/src/目录下有客户自己编译的ice.ko驱动,并且加载到了系统的/usr/lib/modules/4.19.90-25.14.v2101.ky10.aarch64/updates/drivers/net/ethernet/intel/ice/目录下。

10.为了验证现场启动的4.19.90-25.14内核系统使用的是客户自己编译的ice.ko,我们重启系统,选择4.19.90-25.14内核进入系统,执行modinfo ice,发现当前系统使用的驱动版本为1.5.8,正好是现场自己编译的ice驱动,并非系统自带的ice驱动。继续modprobe -r ice卸载驱动,然后insmod 4.19.90-25.14内核自带的驱动,发现内存恢复正常。

11.为了进一步定位现场自己编译的ice驱动为什么会引起used增加,我们发现如下区别:

a.ice版本不一样:现场自己编的是1.5.8,而4.19.90-25.14内核自带的版本是0.7.2-k

b.由于ice版本的不一样,导致了ice驱动对与网卡的ring buffer值设置不一致。现场编译的ice驱动默认设置的网卡rx 为2048,而系统自带的ice驱动默认设置的网卡rx 为128

现场ice-1.5.8版本如下:

麒麟操作系统4.19.90-25.14内核自带的驱动版本如下:

现场ice-1.5.8对网卡默认rx设置如下:

麒麟操作系统4.19.90-25.14内核自带的驱动对网卡默认rx设置如下:

12.在加载现场编译的ice-1.5.8的驱动前提下,我们将网卡的rx队列调小,发现used也跟着变小了。

由此可知,由于ice驱动版本的不一样,导致网卡默认rx队列设置的值也就不一样,而网卡rx队列值调高会占用系统的内存,从而导致了内存的升高。

3.解决方案(结论)

结论:

  1. 现场系统起不来的原因是由于可用内存不够引起的。
  2. 内存不够的主要原因是因为系统加载了现场自己编译的ice驱动,该驱动默认将ens2f0、ens2f1、enP1s5f0、enP1s5f1这四张网卡的rx队列值设置为了2048,从而导致了开机就占用了较高的内存使用。

建议:

  1. 删除现场自己编译的ice驱动,使用麒麟操作系统4.19.90-25.14内核自带的ice驱动。
  2. 调小min_free_kbytes的值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI大模型探索之路-训练篇5:大语言模型预训练数据准备-词元化

系列文章目录🚩 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据…

什么样的内外网文档摆渡,可以实现安全高效传输?

内外网文档摆渡通常指的是在内网(公司或组织的内部网络)和外网(如互联网)之间安全地传输文件的过程。这个过程需要特别注意安全性,因为内网往往包含敏感数据,直接连接内网和外网可能会带来安全风险。因此会…

12.接口自动化学习-Yaml学习

1.配置文件作用 配置文件项目角度: (1)现成的应用–第三方组件 mysql–数据库–my.conf tomcat–web服务器–server.xml 修改:连接数/端口 redis–缓存服务器–redis.conf 修改配置 jemeter–压测工具–jemeter.properties–修改…

linux支持vGPU方案

1,查询gpu型号:lspci | grep "NVIDIA\|VGA" PCI Devices 2,下载驱动 官方驱动 | NVIDIA 3,安装 sudo sh NVIDIA-Linux-x86_64-440.118.02.run -no-x-check -no-nouveau-check -no-opengl-files参数说明: …

网盘——进入文件夹

本文主要讲解网盘的文件操作中进入文件夹的部分,具体实现步骤如下: 1、具体步骤如下: A、客户端发送进入文件夹的请求(该请求包含目录信息以及要进入的文件夹名字) B、服务器收到该请求之后,服务器首先判…

基于springboot的考勤管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

C#基础之数组

数组 文章目录 数组1、概念2、数组的声明3、数组的使用思考1 找出随机数中的最大值,最小值思考2 数组值前后交换思考3 输入成绩,比较出最大、最小值思考4 生成一个5X5的花格子 二维数组交错数组 1、概念 数组是存储一组相同类型数据的集合 数组分为一维…

【嵌入式AI开发】轻量级卷积神经网络MobileNetV1网络详解

传统卷积神经网络,内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行。模型研究得初衷就是服务于社会,应用到实际生活中,让深度学习技术服务于生活。 万物互联时代,智能终端部署模型到本地,不需连接因特网/云服务器,在边缘终端进行边缘计算。保障数据隐私,不…

【数据结构】三、栈和队列:2.顺序栈共享栈(顺序栈的初始化,判空,进栈,出栈,读取栈顶,顺序栈实例)

文章目录 1.顺序栈1.1初始化1.2判空1.3进栈1.4出栈1.5读取栈顶1.6销毁栈❗1.7顺序栈c实例 2.共享栈2.1初始化2.2判满 1.顺序栈 用顺序存储实现的栈 顺序栈的缺点:栈的大小不可变。 #define MaxSize 10 //定义栈中元素的最大个数 typedef struct{ElemType data[…

IDEA 中如何通过连接数据库自动生成代码

目录 1、IDEA 中安装 MyBatisX 插件 2、点击 IDEA 右侧的 database 数据库按钮,点击新建数据源 Data Source 3、编辑数据库连接信息 4、选择你要生成代码的数据库表 5、编辑你代码生成的基本路径以及一些配置项 6、选择annotation:mybatis-plus3&a…

美国洛杉矶站群服务器如何提高网站排名?

美国洛杉矶站群服务器怎么样?美国洛杉矶站群服务器如何提高网站排名?Rak部落小编为您整理发布美国洛杉矶站群服务器如何提高网站排名? 美国洛杉矶站群服务器可以通过以下几种方式帮助提高网站排名: - **提升网站性能**:美国站群服务器通常配备高速CPU…

eclipse导入工程提示Project has no explicit encoding set

eclipse导入工程提示Project has no explicit encoding set 文章目录 eclipse导入工程提示Project has no explicit encoding set一、Eclipse的工程导入二、可能的问题1.在工程名下有黄色叹号 一、Eclipse的工程导入 用Eclipse的导入可以将原有工程导入到新环境中 具体方法是&…

phpstorm 设置变量,自动补全代码

效果 进入设置->实时模板->PHP->添加 添加动态模板->完善写法 定义->选择PHP->应用就行

OpenStack云计算(十四)——综合演练手动部署OpenStack,

本项目的项目实训可以完全参考教材配套讲解的详细步骤实施,总体来说实训工作量较大,可根据需要选做,重点观看配套的微课视频。 项目实训一 【实训题目】 搭建OpenStack云平台基础环境 【实训目的】 掌握OpenStack基础环境的安装和配置方…

mysql8.0免安装版windows

1.下载 MySQL下载链接 2.解压与新建my.ini文件 解压的路径最好不要有中文路径在\mysql-8.0.36-winx64文件夹下新建my.ini文件,不建data文件夹(会自动生成) [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录(尽量用双斜杠\\,单斜杠\可能会报错) basedirD:\…

如何在vue3+vite中优雅的使用iconify图标

前言 从Vue2迁移到Vue3,在使用上有着很大的差别。本文的话主要是针对图标的使用差别上进行分析,同时给出基于iconify图标库中unplugin-icons的用法。这里特殊说明一下:其实element-plus中用到的图标也是基于iconify图标库的,在我们…

mysql中join内外连接查询例子

文章目录 join关键字概要举例using 与 on 区别 join关键字 在MySQL中,JOIN 是一种用于将两个或多个表中的行联合起来的操作。 连接(join)就是将一张表中的行按照某个条件(连接条件)与另一张表中的行连接起来形成一个新…

好久没关注uCOS系统的消息了,全家桶免费后,竟一直以全新的名字Flexible Safety RTOS登场,且一直在更新

【视频版】 https://www.bilibili.com/video/BV1Kb421Y7v9 好久没关注uCOS系统的消息了,全家桶免费后,竟一直以全新的名字Flexible Safety RTOS登场,且一直在更新 【前言】 2020年初,uCOS全家桶宣布免费后,其Github上…

paddle ocr模型量化实践

参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/deploy/slim/quantization/README.md https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/FAQ.md 蒸馏 剪枝 量化 参考:https://blog.csdn.net/mddCSDN/article/de…

医院手术室麻醉信息管理系统源码 自动生成麻醉的各种医疗文书(手术风险评估表、手术安全核查表)

目录 手术风险评估表 一、患者基本信息 二、既往病史 三、手术相关信息 四、风险评估因素 五、风险评估结果 手术安全核查表 一、患者身份与手术信息核对 二、术前准备核查 三、手术团队与职责确认 四、手术物品与设备核查 五、术中关键步骤核查 六、术后核查 七…