gpt4 book ai didi

virtualization - "cpu_time"在 libvirt 中到底代表什么?

转载 作者:行者123 更新时间:2023-12-03 01:59:38 24 4
gpt4 key购买 nike

我可以从 libvirt 中获取以下 CPU 值:

virsh domstats vm1 --cpu-total
Domain: 'vm1'
cpu.time=6173016809079111
cpu.user=26714880000000
cpu.system=248540680000000

virsh cpu-stats vm1 --total
Total:
cpu_time 6173017.263233824 seconds
user_time 26714.890000000 seconds
system_time 248540.700000000 seconds

这里的 cpu_time 数字到底代表什么?

我希望使用此数据计算 CPU 利用率百分比。

谢谢

最佳答案

这是一个非常难以回答的问题!在研究了内核代码一段时间后,我已经弄清楚这里发生了什么,并且很高兴了解发生了什么。

通常,对于 Linux 上的进程,总体 CPU 使用率只是用户空间所用时间与内核空间所用时间的总和。因此,人们会天真地期望 user_time + system_time 等于 cpu_time。我发现 Linux 会独立于用户空间或内核空间时间来跟踪 vCPU 线程执行 guest 代码所花费的时间。

因此cpu_time == user_time + system_time + guest_time

因此,您可以将 system_time + user_time 视为主机端 QEMU/KVM 的开销。 cpu_time - (user_time + system_time) 给出了 guest 操作系统运行其 CPU 的实际时间。

要计算 CPU 使用率,您可能只想每 N 秒记录一次 cpu_time 并计算两个样本之间的增量。例如使用率% = 100 * (cpu_time 2 - cpu_time 1)/N

关于virtualization - "cpu_time"在 libvirt 中到底代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40468370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com