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

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的值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot+Vue项目-基于Java+MySQL的商业辅助决策系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现 MobileNetV4 - Universal Models for the Mobile Ecosystem PDF: https://arxiv.org/pdf/2404.10518.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: ht…

Post请求中常见的Content-Type类型

Post请求中常见的Content-Type类型的结构 (1)application/x-www-form-urlencoded 这是浏览器原生的form表单类型,或者说是表单默认的类型。 下面是一个请求实例: 请求报文: 可以看得出,post将请求参数以k…

配置jupyter的启动路径

jupyter的安装参考:python环境安装jupyter-CSDN博客 1,背景 继上一篇python环境安装jupyter,里面有一个问题,就是启动jupyter(命令jupyter notebook)之后,页面默认显示的是启动时候的路径。 …

HarmonyOS开发案例:【使用List组件实现设置项】

介绍 在本篇CodeLab中,我们将使用List组件、Toggle组件以及Router接口,实现一个简单的设置页,点击将跳转到对应的详细设置页面。效果图如下: 相关概念 [CustomDialog]:CustomDialog装饰器用于装饰自定义弹窗。[List]…

RabbitMQ工作模式(4) - 路由模式

概念 路由模式(Routing)是 RabbitMQ 中的一种消息传递模式,也称为直连模式。它允许生产者将消息发送到一个交换机,并指定一个或多个路由键(routing key),交换机根据路由键将消息路由到与之匹配的…

【介绍下Chrome插件开发】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

使用 NVM 动态切node版本

一、安装nvm 官网链接: Release 1.1.9 coreybutler/nvm-windows GitHub 无脑安装直接下一步 安装完之后验证一下: #打开命令行输入命令 nvm 这样就是安装好了,然后我们开始安装node。 二、使用nvm安装node 1、去node官网获取版本号 …

【算法】人工蜂群算法,解决多目标车间调度问题,柔性车间调度问题

文章目录 复现论文什么是柔性作业车间调度问题?数据处理ABC算法编码解码种群初始化雇佣蜂操作IPOX交叉多点交叉 观察蜂操作侦察蜂操作算法流程 结果程序截图问询、帮助 复现论文 什么是柔性作业车间调度问题? 也叫多目标车间调度问题。 柔性作业车间调…

什么是pytest自动化测试框架?如何安装和使用呢?

一、pytest是什么? pytest是一款强大的Python测试工具,可以胜任各种类型或级别的软件测试工作。实际上,越来越多的项目在使用pytest。因为pytest会提供更丰富的功能,包括assert重写、第三方插件,以及其他测试工具无法…

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

大家知道咱们社区近期TSMC 12nm ARM Cortexa-A72(1P9M 6Track Metal Stack)已经开班。这里小编要强调一点:不要认为跑了先进工艺的项目就会很有竞争力!如果你仅仅是跑个先进工艺的flow,不懂先进工艺在数字IC后端实现上的不同点,为何有这样的不…

Kali Linux中抓包工具Burp Suite安装教程_kali burpsuite抓包教程

目录 安装环境 一、Kali Linux系统信息 ​编辑 二、安装及配置 1.下载Burp Suite 2.安装 3.配置proxy代理 安装环境 主机:MacBooPro 2021 M1 Pro 系统:Ventura 13.1 虚拟机软件:Parallels Desktop 虚拟机系统:Kali Linux…

文件类型的活码怎么制作?文件二维码在线生成的方法

文件的二维码现在很常见,通过这种方式来分享文件有很多的好处,比如文件的安全性更高,可以多人同时查看,有利于传播分享,而且这种方式的成本比较低,生成一个长期有效的活码二维码可以一直使用。 活码二维码…

web自动化系列-selenium的下拉框定位(十三)

在功能操作过程中 ,遇到下拉列表是很正常的事 ,比如像一些查询条件就都是使用的是下来列表 。所以 ,selenium也需要支持对下拉框的操作 。 1.下拉列表 在selenium中,也提供了一个下拉列表操作的类 :Select . 以下为该…

如何解决升级IntelliJ IDEA 2024后 打开项目就自动闪退关闭问题的终极指南

title: “🐯 解决升级IntelliJ IDEA 2024后项目自动关闭的终极指南” date: 2024-04-23 author: 猫头虎 profile: CSDN 文章目录 title: "🐯 解决升级IntelliJ IDEA 2024后项目自动关闭的终极指南" date: 2024-04-23 author: 猫头虎 profile: …

鸿蒙OpenHarmony【轻量系统 烧录】 (基于Hi3861开发板)

烧录 针对Hi3861开发板,除了DevEco Device Tool(操作方法请参考烧录)外,还可以使用Hiburn进行烧录。 前提条件 开发板相关源码已编译完成,已形成烧录文件。客户端(操作平台,例如Windows系统&…

【Python从入门到进阶】53、Scrapy日志信息及日志级别

接上篇《52、CrawlSpider链接提取器的使用》 上一篇我们学习了基于规则进行跟踪和自动爬取网页数据的“特殊爬虫”CrawlSpider。本篇我们来学习Scrapy的日志信息及日志级别。 一、引言 1、日志在Scrapy中的重要性 在Scrapy框架中,日志扮演着至关重要的角色。日志…

并并并并·病查坤

P1、什么是并查集 引用自百度百科: 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合…

虹科Pico汽车示波器 | 免拆诊断案例 | 2006 款林肯领航员车发动机怠速抖动

故障现象 一辆2006款林肯领航员车,搭载5.4 L发动机,累计行驶里程约为26万km。该车因发动机怠速抖动故障进厂维修,维修人员更换了火花塞、点火线圈及凸轮轴位置传感器,清洗了积炭和喷油器,故障依旧,于是向笔…

纵览2024年:排名靠前的项目管理软件一览!

时间飞逝,2024年已经过去近半,让我们来盘点2024年排名靠前的项目管理软件,项目管理软件排行榜,本次上榜的项目管理软件有Zoho Projects、Microsoft Project、Nifty、Smartsheet、ClickUp。 一、项目管理软件排行榜 1.Zoho Projec…