Thanks Chandler, Fabian, comments in-line below.
On Mon, 18 Sept 2023 at 16:05, Chandler Wilkerson <
cwil...@redhat.com> wrote:
> On Mon, Sep 18, 2023 at 8:14 AM Fabian Deutsch <
fdeu...@redhat.com> wrote:
>>
>> Chandler, hi!
>>
>> Adding @Lee Yarwood
:) thanks!
>> On Mon, Sep 18, 2023 at 2:56 PM Chandler Wilkerson <
cwil...@redhat.com> wrote:
>>>
>>> Using a compute or memory instance type requires a node with huge pages support, which is not a default setting, so out of the box, compute and memory instance types are unusable.
I tend to agree for compute but I think it's fine for the memory
intensive class.
>>> When trying to create a VM with one of these instance types, it fails with an unhelpful error that points to scheduling, but does not mention huge pages as the reason.
Insufficient hugepages-2Mi is listed in the message below, I don't
think there's anything more we could do here tbh as we don't want to
wrap the VMI scheduling process with some awareness of instance types
and preferences when the reason is already documented pretty well.
>> Please share the exact message - here and in [1].
>>
> Here's the describe Status: output:
>
> Status:
> Active Pods:
> bd8dc179-cd57-4e75-a589-40c1c02e770a:
> Conditions:
> Last Probe Time: 2023-09-18T14:42:43Z
> Last Transition Time: 2023-09-18T14:42:43Z
> Message: Guest VM is not reported as running
> Reason: GuestNotRunning
> Status: False
> Type: Ready
> Last Probe Time: <nil>
> Last Transition Time: 2023-09-18T14:42:43Z
> Message: 0/6 nodes are available: 1 node(s) were unschedulable, 2 Insufficient hugepages-2Mi, 3 node(s) had untolerated taint {
node-role.kubernetes.io/master: }. preemption: 0/6 nodes are available: 2 No preemption victims found for incoming pod, 4 Preemption is not helpful for scheduling..
^ `2 Insufficient hugepages-2Mi`
I honestly think Insufficient hugepages-2Mi is pretty clear here.
>>> I would like to see a discussion here about whether to remove huge pages from the compute and memory instance types (by default) and find another way to introduce to admins the ability to require huge pages in an instance type.
>>
>>
>> Can you please specify to which instanceTypes you refer to specifically?
>>
>> to me, hugepages shoudl be limited to memory intensive, compute exclusive, and network (coming up).
What's the justification for compute exclusive again?
> I'm referring to the cx and m types specifically, both require 2Mi hugepages.
>
> For that matter, the cx types require dedicated CPU placement, which requires cpumanager support, exposed in the virt-launcher Pod as a nodeSelector:
>
> nodeSelector:
> cpumanager: "true"
>
kubevirt.io/schedulable: "true"
>
>>> Huge pages make sense across the board for VM handling nodes, but fine tuning the number of huge pages per compute node is a per-cluster exercise, and IMO fits better in a performance and tuning guide than a default.
>>
>> In general, for no specific needs, U is the right series to take.
>> The goal of istance types is to move the tuning needs on users to pratically zero.
>
> I agree with that goal; would it help to add help to the
instancetype.kubevirt.io/description annotation for the instance type itself?
> Current for a CX is defined here [2]
> In part:
> The exclusive resources are given to the compute threads of the
> VM. In order to ensure this, some additional cores (depending
> on the number of disks and NICs) will be requested to offload
> the IO threading from cores dedicated to the workload.
> In addition, in this series, the NUMA topology of the used
> cores is provided to the VM.
>
> Perhaps a link to a page in user-guide explaining how to adjust a cluster node to support the required features for each instance type that requires them?
ACK to links to documentation, we also expose the requirements as
labels now FWIW:
https://blog.yarwood.me.uk/2023/06/22/kubevirt_instancetype_update_5/#resource-labels
Thanks, I'll document my thoughts there as well.
> 2.
https://github.com/kubevirt/common-instancetypes/blob/main/instancetypes/cx/1/cx1.yaml
Cheers,
Lee