AWS爆竹如何处理vcpu?

时间:2019-11-23 06:02:57

标签: linux kubernetes kata-containers firecracker

我在aws firecracker中发出了以下命令来配置VM。我的主机中只有8个vcpu。

curl --unix-socket /tmp/firecracker.socket -i  \
    -X PUT 'http://localhost/machine-config' \
    -H 'Accept: application/json'            \
    -H 'Content-Type: application/json'      \
    -d '{
        "vcpu_count": 20,
        "mem_size_mib": 1024,
        "ht_enabled": false
    }'

在Kubernetes中,如果我们尝试使用主机中的vcpu大于max vcpu配置的Pod,它将移至挂起状态。但是鞭炮没有显示任何错误或警告,它只是启动了虚拟机。

有人请解释鞭炮如何处理vcpu吗?

2 个答案:

答案 0 :(得分:0)

爆竹是VMM,而vCPU只是在主机系统上运行的线程。

我不会将Kubernetes资源管理与VMM的行为混为一谈-它们是正交的。爆竹启动虚拟机,而不是Pod。

如果要在Kubernetes中使用利用Firecracker进行隔离的OCI运行时,则结果Pod的请求/限制数将受到Kubernetes(调度程序/小管)的限制。同样,这与VMM的行为正交。

答案 1 :(得分:0)

在Firecracker中,vCPU被实现为线程。

在实例启动时,Firecracker将为配置的每个vCPU创建一个线程。

例如,配置了4个vCPU的运行中的microvm具有6个线程:主线程(处理设备仿真),api线程(fc_ap​​i)和4个vCPU线程。

ubuntu@ip-172-31-20-103:~$ ps H -o 'tid comm' 571
  TID COMMAND
  571 firecracker
  572 fc_api
  730 fc_vcpu3
  731 fc_vcpu2
  734 fc_vcpu1
  735 fc_vcpu0

使用Firecracker,您可以同时预订CPU和内存,因此来宾内存的数量和vCPU的数量可以比实际的物理CPU和RAM高得多。

Kubernetes的情况有所不同,因为当您在pod定义中指定cpu和内存限制时,它将防止您过度订阅内存和cpu。