Agent unable to retrieve CPU Speed of host in Ubuntu 22.04 hosts
ISSUE TYPE
Bug
COMPONENT NAME
Component: Bug
CLOUDSTACK VERSION
Cloudstack version 4.19.1.1, 4.19.1.2
Ubuntu 22.04
SUMMARY
Agent unable to retrieve CPU Speed of host in Ubuntu 22.04 hosts.
Looks like the fix is not present for Ubuntu 22.04 hosts or there is a regression
https://github.com/apache/cloudstack/pull/6696
Steps to reproduce the behaviour
-
Add a ubuntu 22.04 kvm host
-
Cross Check the agent logs
2024-10-17 05:51:02,703 INFO [utils.linux.KVMHostInfo] (Agent-Handler-1:null) (logid:) Fetching CPU speed from command "lscpu".
2024-10-17 05:51:02,703 DEBUG [utils.script.Script] (Agent-Handler-1:null) (logid:) Executing command [/bin/bash -c lscpu | grep -i 'Model name' | head -n 1 | egrep -o '[[:digit:]].[[:digit:]]+GHz' | sed 's/GHz//g' ].
2024-10-17 05:51:02,705 DEBUG [utils.script.Script] (Agent-Handler-1:null) (logid:) Successfully executed process [1994] for command [/bin/bash -c lscpu | grep -i 'Model name' | head -n 1 | egrep -o '[[:digit:]].[[:digit:]]+GHz' | sed 's/GHz//g' ].
2024-10-17 05:51:02,706 ERROR [utils.linux.KVMHostInfo] (Agent-Handler-1:null) (logid:) Unable to retrieve the CPU speed from lscpu.
java.lang.NullPointerException
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
at java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.base/java.lang.Float.parseFloat(Float.java:455)
at org.apache.cloudstack.utils.linux.KVMHostInfo.getCpuSpeedFromCommandLscpu(KVMHostInfo.java:134)
at org.apache.cloudstack.utils.linux.KVMHostInfo.getCpuSpeed(KVMHostInfo.java:109)
at org.apache.cloudstack.utils.linux.KVMHostInfo.getHostInfoFromLibvirt(KVMHostInfo.java:189)
at org.apache.cloudstack.utils.linux.KVMHostInfo.<init>(KVMHostInfo.java:66)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.initialize(LibvirtComputingResource.java:3627)
at com.cloud.agent.Agent.sendStartup(Agent.java:460)
at com.cloud.agent.Agent$ServerHandler.doTask(Agent.java:1125)
at com.cloud.utils.nio.Task.call(Task.java:83)
at com.cloud.utils.nio.Task.call(Task.java:29)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
2024-10-17 05:51:02,706 INFO [utils.linux.KVMHostInfo] (Agent-Handler-1:null) (logid:) Fetching CPU speed from file [/sys/devices/system/cpu/cpu0/cpufreq/base_frequency].
2024-10-17 05:51:02,706 ERROR [utils.linux.KVMHostInfo] (Agent-Handler-1:null) (logid:) Unable to retrieve the CPU speed from file [/sys/devices/system/cpu/cpu0/cpufreq/base_frequency]
java.io.FileNotFoundException: /sys/devices/system/cpu/cpu0/cpufreq/base_frequency (No such file or directory)
root@kvm2:/home/kiran# lscpu | grep -i 'Model name' | head -n 1 | egrep -o '[[:digit:]].[[:digit:]]+GHz' | sed 's/GHz//g'
root@kvm2:/home/kiran# virsh nodeinfo
CPU model: x86_64
CPU(s): 4
CPU frequency: 3187 MHz
CPU socket(s): 1
Core(s) per socket: 4
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 8928688 KiB
root@kvm2:/home/kiran# virsh capabilities
<capabilities>
<host>
<uuid>ac7289e2-90e4-4057-87e8-fd243899f43e</uuid>
<cpu>
<arch>x86_64</arch>
<model>IvyBridge-IBRS</model>
<vendor>Intel</vendor>
<microcode version='38'/>
<topology sockets='1' dies='1' cores='4' threads='1'/>
<feature name='ss'/>
<feature name='ht'/>
<feature name='vmx'/>
<feature name='fma'/>
<feature name='movbe'/>
<feature name='osxsave'/>
<feature name='hypervisor'/>
<feature name='arat'/>
<feature name='tsc_adjust'/>
<feature name='bmi1'/>
<feature name='avx2'/>
<feature name='bmi2'/>
<feature name='invpcid'/>
<feature name='rdseed'/>
<feature name='adx'/>
<feature name='smap'/>
<feature name='clflushopt'/>
<feature name='clwb'/>
<feature name='sha-ni'/>
<feature name='umip'/>
<feature name='pku'/>
<feature name='ospke'/>
<feature name='waitpkg'/>
<feature name='gfni'/>
<feature name='vaes'/>
<feature name='vpclmulqdq'/>
<feature name='rdpid'/>
<feature name='movdiri'/>
<feature name='movdir64b'/>
<feature name='fsrm'/>
<feature name='md-clear'/>
<feature name='serialize'/>
<feature name='stibp'/>
<feature name='arch-capabilities'/>
<feature name='ssbd'/>
<feature name='avx-vnni'/>
<feature name='xsaveopt'/>
<feature name='xsavec'/>
<feature name='xgetbv1'/>
<feature name='xsaves'/>
<feature name='pdpe1gb'/>
<feature name='abm'/>
<feature name='3dnowprefetch'/>
<feature name='ibpb'/>
<feature name='ibrs'/>
<feature name='amd-stibp'/>
<feature name='amd-ssbd'/>
<feature name='rdctl-no'/>
<feature name='ibrs-all'/>
<feature name='skip-l1dfl-vmentry'/>
<feature name='mds-no'/>
<feature name='pschange-mc-no'/>
<pages unit='KiB' size='4'/>
<pages unit='KiB' size='2048'/>
<pages unit='KiB' size='1048576'/>
</cpu>
<power_management>
<suspend_mem/>
<suspend_disk/>
<suspend_hybrid/>
</power_management>
<iommu support='no'/>
<migration_features>
<live/>
<uri_transports>
<uri_transport>tcp</uri_transport>
<uri_transport>rdma</uri_transport>
</uri_transports>
</migration_features>
<topology>
<cells num='1'>
<cell id='0'>
<memory unit='KiB'>8928688</memory>
<pages unit='KiB' size='4'>2232172</pages>
<pages unit='KiB' size='2048'>0</pages>
<pages unit='KiB' size='1048576'>0</pages>
<distances>
<sibling id='0' value='10'/>
</distances>
<cpus num='4'>
<cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
<cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
<cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
<cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
</cpus>
</cell>
</cells>
</topology>
<cache>
<bank id='0' level='3' type='both' size='16' unit='MiB' cpus='0-3'/>
</cache>
<secmodel>
<model>none</model>
<doi>0</doi>
</secmodel>
<secmodel>
<model>dac</model>
<doi>0</doi>
<baselabel type='kvm'>+0:+0</baselabel>
<baselabel type='qemu'>+0:+0</baselabel>
</secmodel>
</host>
<guest>
<os_type>hvm</os_type>
<arch name='i686'>
<wordsize>32</wordsize>
<emulator>/usr/bin/qemu-system-i386</emulator>
<machine maxCpus='255'>pc-i440fx-jammy</machine>
<machine canonical='pc-i440fx-jammy' maxCpus='255'>ubuntu</machine>
<machine maxCpus='255'>pc-i440fx-impish-hpb</machine>
<machine maxCpus='288'>pc-q35-5.2</machine>
<machine maxCpus='255'>pc-i440fx-2.12</machine>
<machine maxCpus='255'>pc-i440fx-2.0</machine>
<machine maxCpus='255'>pc-i440fx-xenial</machine>
<machine maxCpus='255'>pc-i440fx-6.2</machine>
<machine canonical='pc-i440fx-6.2' maxCpus='255'>pc</machine>
<machine maxCpus='288'>pc-q35-4.2</machine>
<machine maxCpus='255'>pc-i440fx-2.5</machine>
<machine maxCpus='255'>pc-i440fx-4.2</machine>
<machine maxCpus='255'>pc-i440fx-focal</machine>
<machine maxCpus='255'>pc-i440fx-hirsute</machine>
<machine maxCpus='255'>pc-q35-xenial</machine>
<machine maxCpus='255'>pc-i440fx-jammy-hpb</machine>
<machine maxCpus='255'>pc-i440fx-5.2</machine>
<machine maxCpus='255'>pc-i440fx-1.5</machine>
<machine maxCpus='255'>pc-q35-2.7</machine>
<machine maxCpus='288'>pc-q35-eoan-hpb</machine>
<machine maxCpus='255'>pc-i440fx-zesty</machine>
<machine maxCpus='255'>pc-i440fx-disco-hpb</machine>
<machine maxCpus='288'>pc-q35-groovy</machine>
<machine maxCpus='255'>pc-i440fx-groovy</machine>
<machine maxCpus='288'>pc-q35-artful</machine>
<machine maxCpus='255'>pc-i440fx-2.2</machine>
<machine maxCpus='255'>pc-i440fx-trusty</machine>
<machine maxCpus='255'>pc-i440fx-eoan-hpb</machine>
<machine maxCpus='288'>pc-q35-focal-hpb</machine>
<machine maxCpus='1024'>pc-q35-jammy-maxcpus</machine>
<machine maxCpus='288'>pc-q35-bionic-hpb</machine>
<machine maxCpus='255'>pc-i440fx-artful</machine>
<machine maxCpus='255'>pc-i440fx-2.7</machine>
<machine maxCpus='288'>pc-q35-6.1</machine>
<machine maxCpus='1024'>pc-i440fx-jammy-maxcpus</machine>
<machine maxCpus='255'>pc-i440fx-yakkety</machine>
<machine maxCpus='255'>pc-q35-2.4</machine>
<machine maxCpus='288'>pc-q35-cosmic-hpb</machine>
<machine maxCpus='288'>pc-q35-2.10</machine>
<machine maxCpus='1'>x-remote</machine>
<machine maxCpus='255'>pc-i440fx-1.7</machine>
<machine maxCpus='288'>pc-q35-5.1</machine>
<machine maxCpus='288'>pc-q35-2.9</machine>
<machine maxCpus='255'>pc-i440fx-2.11</machine>
<machine maxCpus='255'>pc-i440fx-jammy-hpb-maxcpus</machine>
<machine maxCpus='288'>pc-q35-3.1</machine>
<machine maxCpus='255'>pc-i440fx-6.1</machine>
<machine maxCpus='288'>pc-q35-4.1</machine>
<machine maxCpus='288'>pc-q35-jammy</machine>
<machine canonical='pc-q35-jammy' maxCpus='288'>ubuntu-q35</machine>
<machine maxCpus='255'>pc-i440fx-2.4</machine>
<machine maxCpus='255'>pc-i440fx-4.1</machine>
<machine maxCpus='288'>pc-q35-eoan</machine>
<machine maxCpus='288'>pc-q35-jammy-hpb</machine>
<machine maxCpus='255'>pc-i440fx-5.1</machine>
<machine maxCpus='255'>pc-i440fx-2.9</machine>
<machine maxCpus='255'>pc-i440fx-bionic-hpb</machine>
<machine maxCpus='1'>isapc</machine>
<machine maxCpus='255'>pc-i440fx-1.4</machine>
<machine maxCpus='288'>pc-q35-cosmic</machine>
<machine maxCpus='255'>pc-q35-2.6</machine>
<machine maxCpus='255'>pc-i440fx-3.1</machine>
<machine maxCpus='288'>pc-q35-bionic</machine>
<machine maxCpus='288'>pc-q35-disco-hpb</machine>
<machine maxCpus='255'>pc-i440fx-cosmic</machine>
<machine maxCpus='288'>pc-q35-2.12</machine>
<machine maxCpus='255'>pc-i440fx-bionic</machine>
<machine maxCpus='288'>pc-q35-groovy-hpb</machine>
<machine maxCpus='288'>pc-q35-disco</machine>
<machine maxCpus='255'>pc-i440fx-cosmic-hpb</machine>
<machine maxCpus='255'>pc-i440fx-2.1</machine>
<machine maxCpus='255'>pc-i440fx-wily</machine>
<machine maxCpus='288'>pc-q35-impish</machine>
<machine maxCpus='288'>pc-q35-6.0</machine>
<machine maxCpus='255'>pc-i440fx-impish</machine>
<machine maxCpus='255'>pc-i440fx-2.6</machine>
<machine maxCpus='288'>pc-q35-impish-hpb</machine>
<machine maxCpus='288'>pc-q35-hirsute</machine>
<machine maxCpus='288'>pc-q35-4.0.1</machine>
<machine maxCpus='288'>pc-q35-hirsute-hpb</machine>
<machine maxCpus='255'>pc-i440fx-1.6</machine>
<machine maxCpus='288'>pc-q35-5.0</machine>
<machine maxCpus='288'>pc-q35-2.8</machine>
<machine maxCpus='255'>pc-i440fx-2.10</machine>
<machine maxCpus='288'>pc-q35-3.0</machine>
<machine maxCpus='255'>pc-i440fx-6.0</machine>
<machine maxCpus='288'>pc-q35-zesty</machine>
<machine maxCpus='288'>pc-q35-4.0</machine>
<machine maxCpus='288'>pc-q35-focal</machine>
<machine maxCpus='288'>microvm</machine>
<machine maxCpus='255'>pc-i440fx-2.3</machine>
<machine maxCpus='1024'>pc-q35-jammy-hpb-maxcpus</machine>
<machine maxCpus='255'>pc-i440fx-focal-hpb</machine>
<machine maxCpus='255'>pc-i440fx-disco</machine>
<machine maxCpus='255'>pc-i440fx-4.0</machine>
<machine maxCpus='255'>pc-i440fx-groovy-hpb</machine>
<machine maxCpus='255'>pc-i440fx-hirsute-hpb</machine>
<machine maxCpus='255'>pc-i440fx-5.0</machine>
<machine maxCpus='255'>pc-i440fx-2.8</machine>
<machine maxCpus='288'>pc-q35-6.2</machine>
<machine canonical='pc-q35-6.2' maxCpus='288'>q35</machine>
<machine maxCpus='255'>pc-i440fx-eoan</machine>
<machine maxCpus='255'>pc-q35-2.5</machine>
<machine maxCpus='255'>pc-i440fx-3.0</machine>
<machine maxCpus='255'>pc-q35-yakkety</machine>
<machine maxCpus='288'>pc-q35-2.11</machine>
<domain type='qemu'/>
<domain type='kvm'/>
</arch>
<features>
<pae/>
<nonpae/>
<acpi default='on' toggle='yes'/>
<apic default='on' toggle='no'/>
<cpuselection/>
<deviceboot/>
<disksnapshot default='on' toggle='no'/>
</features>
</guest>
<guest>
<os_type>hvm</os_type>
<arch name='x86_64'>
<wordsize>64</wordsize>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<machine maxCpus='255'>pc-i440fx-jammy</machine>
<machine canonical='pc-i440fx-jammy' maxCpus='255'>ubuntu</machine>
<machine maxCpus='255'>pc-i440fx-impish-hpb</machine>
<machine maxCpus='288'>pc-q35-5.2</machine>
<machine maxCpus='255'>pc-i440fx-2.12</machine>
<machine maxCpus='255'>pc-i440fx-2.0</machine>
<machine maxCpus='255'>pc-i440fx-xenial</machine>
<machine maxCpus='255'>pc-i440fx-6.2</machine>
<machine canonical='pc-i440fx-6.2' maxCpus='255'>pc</machine>
<machine maxCpus='288'>pc-q35-4.2</machine>
<machine maxCpus='255'>pc-i440fx-2.5</machine>
<machine maxCpus='255'>pc-i440fx-4.2</machine>
<machine maxCpus='255'>pc-i440fx-hirsute</machine>
<machine maxCpus='255'>pc-i440fx-focal</machine>
<machine maxCpus='255'>pc-q35-xenial</machine>
<machine maxCpus='255'>pc-i440fx-jammy-hpb</machine>
<machine maxCpus='255'>pc-i440fx-5.2</machine>
<machine maxCpus='255'>pc-i440fx-1.5</machine>
<machine maxCpus='255'>pc-q35-2.7</machine>
<machine maxCpus='288'>pc-q35-eoan-hpb</machine>
<machine maxCpus='255'>pc-i440fx-zesty</machine>
<machine maxCpus='255'>pc-i440fx-disco-hpb</machine>
<machine maxCpus='288'>pc-q35-groovy</machine>
<machine maxCpus='255'>pc-i440fx-groovy</machine>
<machine maxCpus='288'>pc-q35-artful</machine>
<machine maxCpus='255'>pc-i440fx-trusty</machine>
<machine maxCpus='255'>pc-i440fx-2.2</machine>
<machine maxCpus='288'>pc-q35-focal-hpb</machine>
<machine maxCpus='255'>pc-i440fx-eoan-hpb</machine>
<machine maxCpus='1024'>pc-q35-jammy-maxcpus</machine>
<machine maxCpus='255'>pc-i440fx-artful</machine>
<machine maxCpus='288'>pc-q35-bionic-hpb</machine>
<machine maxCpus='255'>pc-i440fx-2.7</machine>
<machine maxCpus='288'>pc-q35-6.1</machine>
<machine maxCpus='1024'>pc-i440fx-jammy-maxcpus</machine>
<machine maxCpus='255'>pc-i440fx-yakkety</machine>
<machine maxCpus='255'>pc-q35-2.4</machine>
<machine maxCpus='288'>pc-q35-cosmic-hpb</machine>
<machine maxCpus='288'>pc-q35-2.10</machine>
<machine maxCpus='1'>x-remote</machine>
<machine maxCpus='288'>pc-q35-5.1</machine>
<machine maxCpus='255'>pc-i440fx-1.7</machine>
<machine maxCpus='288'>pc-q35-2.9</machine>
<machine maxCpus='255'>pc-i440fx-2.11</machine>
<machine maxCpus='255'>pc-i440fx-jammy-hpb-maxcpus</machine>
<machine maxCpus='288'>pc-q35-3.1</machine>
<machine maxCpus='255'>pc-i440fx-6.1</machine>
<machine maxCpus='288'>pc-q35-4.1</machine>
<machine maxCpus='288'>pc-q35-jammy</machine>
<machine canonical='pc-q35-jammy' maxCpus='288'>ubuntu-q35</machine>
<machine maxCpus='255'>pc-i440fx-2.4</machine>
<machine maxCpus='255'>pc-i440fx-4.1</machine>
<machine maxCpus='288'>pc-q35-eoan</machine>
<machine maxCpus='288'>pc-q35-jammy-hpb</machine>
<machine maxCpus='255'>pc-i440fx-5.1</machine>
<machine maxCpus='255'>pc-i440fx-2.9</machine>
<machine maxCpus='255'>pc-i440fx-bionic-hpb</machine>
<machine maxCpus='1'>isapc</machine>
<machine maxCpus='255'>pc-i440fx-1.4</machine>
<machine maxCpus='288'>pc-q35-cosmic</machine>
<machine maxCpus='255'>pc-q35-2.6</machine>
<machine maxCpus='255'>pc-i440fx-3.1</machine>
<machine maxCpus='288'>pc-q35-bionic</machine>
<machine maxCpus='288'>pc-q35-disco-hpb</machine>
<machine maxCpus='255'>pc-i440fx-cosmic</machine>
<machine maxCpus='288'>pc-q35-2.12</machine>
<machine maxCpus='255'>pc-i440fx-bionic</machine>
<machine maxCpus='288'>pc-q35-groovy-hpb</machine>
<machine maxCpus='288'>pc-q35-disco</machine>
<machine maxCpus='255'>pc-i440fx-cosmic-hpb</machine>
<machine maxCpus='255'>pc-i440fx-2.1</machine>
<machine maxCpus='255'>pc-i440fx-wily</machine>
<machine maxCpus='288'>pc-q35-impish</machine>
<machine maxCpus='255'>pc-i440fx-2.6</machine>
<machine maxCpus='288'>pc-q35-6.0</machine>
<machine maxCpus='255'>pc-i440fx-impish</machine>
<machine maxCpus='288'>pc-q35-impish-hpb</machine>
<machine maxCpus='288'>pc-q35-hirsute</machine>
<machine maxCpus='288'>pc-q35-4.0.1</machine>
<machine maxCpus='288'>pc-q35-hirsute-hpb</machine>
<machine maxCpus='255'>pc-i440fx-1.6</machine>
<machine maxCpus='288'>pc-q35-5.0</machine>
<machine maxCpus='288'>pc-q35-2.8</machine>
<machine maxCpus='255'>pc-i440fx-2.10</machine>
<machine maxCpus='288'>pc-q35-3.0</machine>
<machine maxCpus='288'>pc-q35-zesty</machine>
<machine maxCpus='288'>pc-q35-4.0</machine>
<machine maxCpus='288'>pc-q35-focal</machine>
<machine maxCpus='288'>microvm</machine>
<machine maxCpus='255'>pc-i440fx-6.0</machine>
<machine maxCpus='255'>pc-i440fx-2.3</machine>
<machine maxCpus='1024'>pc-q35-jammy-hpb-maxcpus</machine>
<machine maxCpus='255'>pc-i440fx-disco</machine>
<machine maxCpus='255'>pc-i440fx-focal-hpb</machine>
<machine maxCpus='255'>pc-i440fx-4.0</machine>
<machine maxCpus='255'>pc-i440fx-groovy-hpb</machine>
<machine maxCpus='255'>pc-i440fx-hirsute-hpb</machine>
<machine maxCpus='255'>pc-i440fx-5.0</machine>
<machine maxCpus='255'>pc-i440fx-2.8</machine>
<machine maxCpus='288'>pc-q35-6.2</machine>
<machine canonical='pc-q35-6.2' maxCpus='288'>q35</machine>
<machine maxCpus='255'>pc-i440fx-eoan</machine>
<machine maxCpus='255'>pc-q35-2.5</machine>
<machine maxCpus='255'>pc-i440fx-3.0</machine>
<machine maxCpus='255'>pc-q35-yakkety</machine>
<machine maxCpus='288'>pc-q35-2.11</machine>
<domain type='qemu'/>
<domain type='kvm'/>
</arch>
<features>
<acpi default='on' toggle='yes'/>
<apic default='on' toggle='no'/>
<cpuselection/>
<deviceboot/>
<disksnapshot default='on' toggle='no'/>
</features>
</guest>
</capabilities>
Actual Behaviour
Agent is not able to retrieve CPU Speed of host in Ubuntu 22.04 hosts
Expected Behaviour
Agent should be retrieve CPU Speed of host in Ubuntu 22.04 hosts
@kiranchavala these looks like some error messages
I checked a ubuntu 22 env, the host cpu/speed is correct
@kiranchavala do you use ubuntu 22.04 in your homelab ? the output looks different
@weizhouapache
Yes it's from my home lab, will check on another ubuntu 22 host
@kiranchavala do you have the full logs?
Based on PR #6696, it uses the following in the order,
- lscpu
- value in /sys/devices/system/cpu/cpu0/cpufreq/base_frequency
- libvirt host capabilities
- libvirt nodeinfo
From you logs I see first 2 methods didn't yield result
@kiranchavala can you check the content of file /sys/devices/system/cpu/cpu0/cpufreq/base_frequency" abd "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq ?
maybe #9762 fixes the issue
@kiranchavala any update on this?
Not observing the issue on the latest 4.20 release and Ubuntu 24.0.4
Closing the issue