网站数据分析报告,保定网络营销网站建设,设计坞网站怎么样,怎么推广软件一、环境说明
操作系统#xff1a;openEuler 22.03CPU#xff1a;Kunpeng-920#xff0c;arm v8cloudstack#xff1a;4.18libvirtd#xff1a;6.2.0
二、问题描述
cloudstack平台初始化完成后#xff0c;第一次加入host#xff0c;系统虚拟机一直无法正常创建#…一、环境说明
操作系统openEuler 22.03CPUKunpeng-920arm v8cloudstack4.18libvirtd6.2.0
二、问题描述
cloudstack平台初始化完成后第一次加入host系统虚拟机一直无法正常创建查看cloudstack management的日志一直显示资源不够无法正常调度。 点击进入host详情页面发现CPU speed为0 GHz图片显示为正常状态。
三、排查过程
通过查看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获取 查看libvirtd的日志需要修改/etc/libvirt/libvirtd.conf开启日志并配置日志级别发现也报错Failed to get host CPU cache info通过查看代码是读取/sys/devices/system/cpu/cpu0/cache而openEuler没有对应的文件。通过查阅资料发现可以通过命令行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;}} 解决