当前位置: 首页 > news >正文

cloudstack平台host加入后,显示CPU speed为0GHz

一、环境说明

  • 操作系统:openEuler 22.03
  • CPU:Kunpeng-920,arm v8
  • cloudstack:4.18
  • libvirtd:6.2.0

二、问题描述

cloudstack平台初始化完成后,第一次加入host,系统虚拟机一直无法正常创建,查看cloudstack management的日志,一直显示资源不够,无法正常调度。
点击进入host详情页面,发现CPU speed为0 GHz(图片显示为正常状态)。
在这里插入图片描述

三、排查过程

  1. 通过查看cloudstack agent的日志,发现agent获取cpu speed的方式有三种(关键字Fetching CPU speed)
    • 命令行,lscpu
    • 运行时文件:/sys/devices/system/cpu/cpu0/cpufreq/base_frequency,写死在./plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/KVMHostInfo.java
    • 通过libvirt获取
  2. 查看libvirtd的日志(需要修改/etc/libvirt/libvirtd.conf开启日志,并配置日志级别),发现也报错:Failed to get host CPU cache info,通过查看代码是读取/sys/devices/system/cpu/cpu0/cache,而openEuler没有对应的文件。
  3. 通过查阅资料,发现可以通过命令行dmidecode -t processor获取cpu speed,因此尝试修改cloudstack agent的代码
在plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/KVMHostInfo.java中添加对应的函数
114行:speed = getCpuSpeedFromCommanddmidecode();if(speed > 0L) {return speed;}
138行:private static long getCpuSpeedFromCommanddmidecode() {try {LOGGER.info("Fetching CPU speed from command \"dmidecode -t processor\".");String command = "dmidecode -t processor | grep 'Current Speed' | head -n 1 | egrep -o '[[:digit:]]+ MHz' | awk '{print $1}'";String result = Script.runSimpleBashScript(command);long speed = (long) (Float.parseFloat(result));LOGGER.info(String.format("Command [%s] resulted in the value [%s] for CPU speed.", command, speed));return speed;} catch (NullPointerException | NumberFormatException e) {LOGGER.error(String.format("Unable to retrieve the CPU speed from lscpu."), e);return 0L;}} 
  1. 解决
http://www.lryc.cn/news/104963.html

相关文章:

  • 创新技术应用,提升企业图文档管理水平的新思路
  • 网络安全 Day22-mariadb数据库用户管理
  • SERDES关键技术
  • 小程序如何上传商品图片
  • vue中人员导出功能实现
  • 【微信小程序】引入第三方库poke对GZIP压缩数据进行解压
  • Pandas操作Excel
  • leetcode 712. Minimum ASCII Delete Sum for Two Strings(字符串删除字母的ASCII码之和)
  • Springboot -- 按照模板生成docx、pdf文件,docx转pdf格式
  • UE5.1.1 创建C++项目失败
  • windows进行端口映射
  • Python 异常处理
  • C++ 类的静态成员
  • 360T7路由器进行WiFi无线中继教程
  • 主成分分析
  • 笙默考试管理系统-MyExamTest(26)
  • 重新理解 RocketMQ Commit Log 存储协议
  • ES6基础知识十:你是怎么理解ES6中 Decorator 的?使用场景?
  • 接口/Web自动化测试如何做?框架如何搭建封装?
  • Linux怎么从网络上下载文件
  • Flutter携带JSON参数post请求
  • 【vue】vue-image-lazy图片懒加载使用与介绍【超详细+npm包源代码】
  • MFC第二十四天 使用GDI对象画笔和画刷来开发控件(分页控件选择态的算法分析、使用CToolTipCtrl开发动静态提示)
  • 【NLP-新工具】语音转文本与OpenAI的用途
  • try-catch-finally的字节码原理
  • 基于双层优化的微电网系统规划设计方法(Matlab代码实现)
  • 【Nginx13】Nginx学习:HTTP核心模块(十)Types、AIO及其它配置
  • 2023年华数杯数学建模C题思路分析
  • 安卓手机变身Linux服务器
  • 【Ansible】Ansible自动化运维工具之playbook剧本