【问题实操】银河高级服务器操作系统实例分享,配置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的值。

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

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

相关文章

Vue3框架

Vue3框架 一.使用create-vue搭建Vue3项目二.组合式API - setup选项1.setup选项的写法和执行时机2.setup中写代码的特点3. script setup 语法糖 三.组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 四.组合式API - computed五.组合式API - watch1. 侦听单个…

Gone框架介绍3 - 使用gone命令,自动生成Priest函数

文章目录 1. 安装辅助工具: gone2. 创建一个名为gen-code的新项目3. 创建Goner4. 使用辅助工具5. 添加main函数 我在两年前实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能,自己觉得还挺好用的;之前一直…

Linux Mint 21.3 “Virginia“ 简介

Linux Mint 21.3 "Virginia" 是Linux Mint项目发布的最新版本,这个版本基于Ubuntu 22.04 LTS(Jammy Jellyfish),并提供了三个主要的桌面环境:Cinnamon、MATE和Xfce。每个桌面环境都有其独特的特点和优势&…

Unity射击游戏开发教程:(8)构建 UI 元素:添加分数显示

用户界面决定用户如何与屏幕交互。UI 适用于所有类型的游戏和应用程序,在此示例中,我们将为我的太空射击游戏设置一个简单的记分板。 第一步是在层次结构中创建一个 UI 元素。只需在层次结构中右键单击,滚动 UI 并选择要添加的 UI 元素类型。在本例中,我们将使用文本元素。…

编程新手如何快速提升编码能力?

编程新手想要快速提升编码能力,可以遵循以下几个策略: 基础扎实:首先,确保你对所学编程语言的基础概念有深刻理解,包括变量、数据类型、控制结构(如循环、条件语句)、函数、类和对象&#xff08…

使用 Docker 自建一款怀旧游戏之 - 扫雷

1)扫雷 简介 扫雷 是一种经典的单人电脑游戏,最初由微软公司在 1990 年代开发并内置在 Windows 操作系统中。游戏的目标是在一个由方块组成的网格上揭开所有非地雷的方块,而不触发地雷。每个方块上都标有数字,表示周围 8 个方块中…

Java网址url工具类

功能描述 无需引入三方依赖文本匹配网址(支持多个)网址解析(包括协议、主机、路径、参数等) package com.qiangesoft.image.utils;import org.springframework.util.Assert; import org.springframework.util.CollectionUtils;i…

行为学学习记忆实验和抗焦虑实验两款硬件

安徽耀坤XWX-BM八臂迷宫实验(Eight-arm Maze Test,RMT)由八个完全相同的臂组成,这些臂从一个中央平台放射出来,所以又被称为放射迷宫。其基本方式是:训练动物受食物的驱使对迷宫的各臂进行探究,…

xLua背包实践

准备工作 环境,代码 在C#代码方面我们需要准备单例模式基类,AB包管理器,lua解析器管理器 详情请见AB包管理器 xlua详解 然后是Xlua包和AB包,具体导入方法也在上面的链接中 然后是lua的三个文件 具体代码: JsonUtil…

SSH Config 后门 | Linux 后门系列

ssh 客户端配置文件加载顺序 命令行参数 > ~/.ssh/config > /etc/ssh/ssh_config Ubuntu server 16.04 默认 /etc/ssh/ssh_config # Host * # ForwardAgent no # ForwardX11 no # RhostsRSAAuthentication no # RSAAuthentication …

一、OSPF基础

目录 1.路由协议的优先级 2.转发原则:最长匹配原则 3.负载分担 4.路由备份(浮动路由) 5.路由协议的分类 6.动态路由 7.距离矢量路由协议(BGP,RIP) 8.链路状态路由协议(OSPF,I…

联系Odoo partner邮件怎么写

亲爱的Odoo 伙伴 我是广东同欣的惊蛰,我通过Odoo官方的珠三角 Partner列表找到了你。 GuangDong TongXin Ai Technology Co., Ltd.,是一家面向中国提供Odoo服务的高科技公司。同欣总部位于广州,目前客户覆盖在广州,深圳&#…

SpringBoot配置HTTPS及开发调试

前言 在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享 后端配置 …

西瓜书学习——决策树形状、熵和决策树的本质

文章目录 决策树形状监督学习算法分类与回归 熵信息熵香农熵 (Shannon Entropy) - H(X)联合熵 (Joint Entropy) - H(X, Y)条件熵 (Conditional Entropy) - H(Y|X)互信息 (Mutual Information) - I(X; Y)相对熵 (Relative Entropy) / KL散度 (Kullback-Leibler Divergence) - DK…

misc学习

一.知识点 1.BMP文件 BMP文件主要有四部分组成,位图头、位图信息、调色板、位图数据。 bmp文件头(bmp file header):提供文件的格式、大小等信息 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息…

PCL 点云表面重建之曲面平滑(Mobile Least Square, MLS)

一、介绍 1.1 MLS介绍 移动最小二乘法(Mobile Least Square, MLS)是一种用于曲面重建或形变的方法。它通过对曲面进行局部加权平均来减小噪声和估计曲面上的法线方向。   MLS方法的基本思想: 以每个点为中心取一定半径内的邻域点,然后通过最小二乘法拟合一个局部平面或曲…

Docker容器管理详解

引言 Docker作为当前流行的容器化技术,使得应用的部署、扩展和管理变得更加容易。本文将详细介绍Docker容器的概念、特点,以及如何使用Docker命令进行容器管理。 一,Docker容器概念与特点 Docker容器是一种轻量级、可移植、自包含的运行环…

JAVA顺序表相关习题1

1.笔试题:cvte str1 :welcome to cvte str2:come 描述:删除第一个字符串当中出现的所有的第二个字符串的字符!结果:wlt vt 要求 用ArrayList完成! public class Test {public static List<Character> findSameWords(String u1, String u2){List<Character> listn…

Sora新突破!AI生成电影迈向新阶段,配音版Sora登场!将如何改变影视行业?

Sora之后迎来新突破&#xff01; 配音版Sora来袭&#xff0c;AI生成电影又更近一步&#xff01; 在2024年伊始&#xff0c;人工智能界迎来了一次创新性的突破&#xff0c;由AI语音技术的先锋公司ElevenLabs带头实现。他们最近的成就体现在为OpenAI的Sora视频模型提供了令人动容…

Faiss:高效向量搜索引擎的原理与实践

向量搜索在机器学习、数据检索和推荐系统中扮演着至关重要的角色。它能够帮助我们快速找到在大规模数据集中与查询点最接近的数据点。Faiss&#xff08;发音类似于"fess"&#xff09;&#xff0c;是由Facebook AI Research&#xff08;FAIR&#xff09;团队开发的一个…