云容器引擎 CCE-NUMA亲和性调度:使用Volcano设置NUMA亲和性调度

时间:2024-04-03 08:02:22

使用Volcano设置NUMA亲和性调度

  1. 以下为使用Volcano设置NUMA亲和性调度的示例。

    1. 示例一:在无状态工作负载中配置NUMA亲和性。
      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: numa-tset
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: numa-tset
        template:
          metadata:
            labels:
              app: numa-tset
            annotations:
              volcano.sh/numa-topology-policy: single-numa-node    # set the topology policy
          spec:
            containers:
              - name: container-1
                image: nginx:alpine
                resources:
                  requests:
                    cpu: 2           # 必须为整数,且需要与limits中一致
                    memory: 2048Mi
                  limits:
                    cpu: 2           # 必须为整数,且需要与requests中一致
                    memory: 2048Mi
            imagePullSecrets:
            - name: default-secret
    2. 示例二:创建一个Volcano Job,并使用NUMA亲和性。
      apiVersion: batch.volcano.sh/v1alpha1
      kind: Job
      metadata:
        name: vj-test
      spec:
        schedulerName: volcano
        minAvailable: 1
        tasks:
          - replicas: 1
            name: "test"
            topologyPolicy: best-effort   # set the topology policy for task 
            template:
              spec:
                containers:
                  - image: alpine
                    command: ["/bin/sh", "-c", "sleep 1000"]
                    imagePullPolicy: IfNotPresent
                    name: running
                    resources:
                      limits:
                        cpu: 20
                        memory: "100Mi"
                restartPolicy: OnFailure

  2. NUMA调度分析。

    假设NUMA节点情况如下:

    工作节点

    节点策略拓扑管理器策略

    NUMA 节点 0 上的可分配 CPU

    NUMA 节点 1 上的可分配 CPU

    node-1

    single-numa-node

    16U

    16U

    node-2

    best-effort

    16U

    16U

    node-3

    best-effort

    20U

    20U

    则根据以上示例,

    • 示例一中,Pod的CPU申请值为2U,设置拓扑策略为“single-numa-node”,因此会被调度到相同策略的node-1。
    • 示例二中,Pod的CPU申请值为20U,设置拓扑策略为“best-effort”,它将被调度到node-3,因为node-3可以在单个NUMA节点上分配Pod的CPU请求,而node-2需要在两个NUMA节点上执行此操作。

support.huaweicloud.com/usermanual-cce/cce_10_0425.html