Openstack: live-migration SRIOV的一个问题(1)

​去年分析的一个问题:Openstack: migration 虚拟机热迁移 失败的注意点。里面有很多未知答案的问题。最近再总结一下,可能会有几篇,算是一个系列。

在这两天又遇到,继续看了一下。找到了之前一直没有搞明白的一个问题:refcount到底是被谁占,用没有释放?这里说一下大概。详细的热迁移步骤,请参阅下面两个说明和文档:

https://specs.openstack.org/openstack/nova-specs/specs/train/implemented/libvirt-neutron-sriov-livemigration.html
https://docs.openstack.org/nova/latest//reference/live-migration.html

是在Openstack的新版本里加进来,对有SRIOV设备的虚拟机进行热迁移功能。测试的时候又碰到了这个错误:
Linux: unregister_netdevice: waiting for eth0 to become free. Usage count = 1

这次是没跑了,也算是有机会继续看,继续学习。一开始以为是内核的问题,后来在网上查了很多资料:在Linux内核早期比较老的版本,确实是有几个这种泄漏ref的bug。但是在新版本都已经解决了。中间又看到几个例子是说,私有的内核模块也可能引入这个问题。

经过认真分析,明确了,自己产品里的一个内核模块是会将net_device的refcount的值hold一下,因为要用net_device的指针。调用的接口是:dev_get_by_name。这个函数就非常的具有滑稽性,如果调用,而且可以找到相应的设备,就会dev_hold设备;如果调用者不想hold,要单独执行dev_put,这就形成字面意义的不对称,dev_get_by_name和dev_put,明眼看就不是一对。所以要有意识,在调用了dev_get_by_name之后,要仔细考虑是否真的需要hold dev,如果不需要,要记得dev_put一下。当然本文要说的问题不是出在这里。

问题是在live-migration的过程中nova的调用链里,会将原有instance的设备detach掉,在detach的时候,没有设置udev规则来删除这个内核模块,导致这个内核模块对net_device一直有占用refcount,从而产生这个错误日志。

这里的一个问题,在做detach的时候,内核具体会做哪些操作?

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

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

相关文章

Jupyter Notebook 中使用虚拟环境的Python解释器

问题:创建虚拟环境,在pycharm中配置虚拟环境的Python解释器,然后在pycharm中打开ipynb,执行发现缺少包,但是虚拟环境中已经安装了 解决方式: 配置Jupyter Notebook 使用虚拟环境的Python解释器 1&#x…

手写代码题【基础篇】

一.如何实现一个深比较函数 首先,需要明确一点:HTML 是一种用于创建网页的标记语言,它并不适合用来实现复杂的逻辑功能,如深比较函数。深比较函数通常用于比较两个对象的值是否相等,包括它们的属性和嵌套对象。 如果…

JWT是什么?如何使用?

JWT是什么?如何使用? 前言什么是JWT?概念工作方式JWT的组成HeaderPayloadSignatrue 实战引入依赖自定义注解定义实体类定义一个JWT工具类业务校验并生成token定义拦截器配置拦截器定义接口方法并添加注解开始验证 使用场景注意事项 JWT与传统…

用大模型生成带文字的海报

本文代码讲整合在: GitHub - liangwq/Chatglm_lora_multi-gpu: chatglm多gpu用deepspeed和 这篇文章介绍如何利用VLMdiffusion模型来搭建一条文本生成海报的链路。搭建这条链路有两个应用:1.实际的业务中需要批量生产文字图海报可以用,2.可以…

【信息系统项目管理师知识点速记】范围管理:创建WBS

9.6 创建WBS 创建工作分解结构(WBS)是把项目可交付成果和项目工作分解成较小、更易于管理的组件的过程。其主要作用是为所要交付的内容提供架构。这一过程仅在项目的预定义点或仅开展一次。 9.6.1 输入 项目管理计划 范围管理计划:定义了如何根据项目范围说明书创建WBS。项…

C++学习第八课:函数定义使用和它的高级应用

C学习第八课:函数的高级使用 在C中,函数是封装一段代码的单元,使得代码更加模块化、重用性高,并且易于维护。本课我们将介绍如何使用函数组织代码,包括函数原型、定义、调用、参数传递、返回值、默认参数值、递归函数…

生成式人工智能(AIGC)教学解决方案

一、前言 近年来,伴随计算能力跃升和数据量指数级增长,以多模态巨型模型为典型代表的生成式AI技术,在全球范围内引起了广泛关注与热烈追捧。在教育、医疗、法律等众多专业领域,生成式人工智能技术的影响力日益凸显,尤…

基于SSM的美容院管理系统演示。Javaee项目。ssm项目。

演示视频: 基于SSM的美容院管理系统演示。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvcMybatisVueLayuiElem…

C++11 设计模式5. 原型模式

什么是原型模式? 原型模式⼀种创建型设计模式,该模式的核⼼思想是基于现有的对象创建新的对象,⽽不是从头开始创建。在原型模式中,通常有⼀个原型对象,它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状态来…

24.什么是跨域?解决方案有哪些?

为什么会出现跨域问题 存在浏览器同源策略,所以才会有跨域问题。那么浏览器是出于何种原因会有跨域的限制呢。其实不难想到,跨域限制主要的目的就是为了用户的上网安全。 同源策略导致的跨域是浏览器单方面拒绝响应数据,服务器端是处理完毕…

opencv基础篇 ——(十)非真实感渲染

非真实感渲染(Non-Photorealistic Rendering, NPR)是指通过一系列图像处理技术,将真实感图像转换为具有特定艺术风格或视觉效果的图像,模拟绘画、素描、卡通等非现实主义表现手法。OpenCV 提供了一些内置函数来实现非真实感渲染&a…

2024最新的,免费的 ChatGPT 网站AI(八个)

ChatGPT是美国人工智能研究实验室OpenAI在2022年11月推出的一款人工智能技术驱动的语言模型应用。它基于GPT-3.5架构(后续还有GPT-4架构的升级版)构建,拥有强大的自然语言处理能力和上下文理解能力,能够参与多轮对话,为…

Python_GUI工具包 PyQt 与 Pyside6的介绍

Python_GUI工具包 PyQt 与 Pyside6的介绍 一、简介 在Python的GUI(图形用户界面)开发领域,PyQt和PySide6是两个非常重要的工具包。它们都基于Qt库,为Python开发者提供了丰富的GUI组件和强大的功能。当然Python也有一些其他的GU…

Halcon 检测物体定位点

文章目录 get_domain 返回所有输入图像的定义域作为一个区域add_channels 给区域增加灰度值find_shape_model 发现匹配模板find_shape_models 发现最佳模板示例 get_domain 返回所有输入图像的定义域作为一个区域 Halcon 中的区域 get_domain(Image : Domain : : ) Image : …

SpringBoot之自定义注解参数校验

SpringBoot之自定义注解参数校验 为什么要自定义注解 我这里先引入一个例子,就比如我现在要写文章,文章也许写完正要发布,也可以是还没写完正要存草稿,前端往后端发送数据,如果前端的state不是草稿或者已发布状态&…

[Mac软件]Adobe Photoshop 2024 v25.7 中文激活版

黑果魏叔消息Adobe Photoshop 2024 v25.7是**一款领先的图像编辑软件**,它提供了一系列专业的修饰工具和强大的编辑功能。 首先,作为数字图像处理和编辑的行业标准,Adobe Photoshop被广泛应用于多个领域,从平面设计、摄影后期处理…

大模型应用开发极简入门

简单的归纳一下书的前序部分 目录 LLM(Large Language Model)的应用技术栈通常包括以下几个方面: 深度学习框架: 数据预处理工具: 训练资源: 模型优化和调参工具: 部署和应用集成&#xf…

【Leetcode】740- 删除并获得点数

问题简述 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除所有等于nums[i]-1和nums[i]1的元素。 开始你拥有0个点数。返回你能通过这些操作获…

智慧图书管理|基于SSM+vue的网上服装商城系统(源码+数据库+文档)

智慧图书管理目录 基于SSMvue的网上服装商城系统 一、前言 二、系统设计 三、系统功能设计 1.1 服装列表 1.2 公告信息管理 1.3 公告类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff1…

linus下Anaconda创建虚拟环境pytorch

一、虚拟环境 1.创建 输入下面命令 conda create -n env_name python3.8 输入y 2.激活环境 输入 conda activate env_name 二、一些常用的命令 在Linux的控制平台 切换到当前的文件夹 cd /根目录/次目录 查看conda目录 conda list 查看pip目录 pip list查看历史命…