zoukankan      html  css  js  c++  java
  • dlv volcano scheduler

    [root@bogon data2]# source ./kata/go_source
    [root@bogon delve]# ps -elf | grep scheduler
    4 S nova      2302     1  0  80   0 -  3748 SyS_ep  2020 ?        09:22:51 /usr/bin/python2 /usr/bin/nova-scheduler
    0 S root     27494 10930  0  80   0 -  1727 pipe_w 14:59 pts/0    00:00:00 grep --color scheduler
    4 S root     39444 39423  0  80   0 - 11577 futex_ Jul05 ?        00:40:40 /vc-scheduler --logtostderr --scheduler-conf=/volcano.scheduler/volcano-scheduler.conf -v=3 2>&1
    [root@bogon delve]# dlv attach 39444 
    Type 'help' for list of commands.
    (dlv) b updateJob
    Breakpoint 2 (enabled) set at 0xeb2b70 for volcano.sh/volcano/pkg/scheduler/framework.(*jobUpdater).updateJob() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/job_updater.go:97
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*jobUpdater).updateJob() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/job_updater.go:97 (hits goroutine(1812870):1 total:1) (PC: 0xeb2b70)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000eb2b70 in volcano.sh/volcano/pkg/scheduler/framework.(*jobUpdater).updateJob
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/job_updater.go:97
    1  0x0000000000ebcd30 in volcano.sh/volcano/pkg/scheduler/framework.(*jobUpdater).updateJob-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/job_updater.go:97
    2  0x000000000059429c in k8s.io/client-go/util/workqueue.ParallelizeUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/client-go/util/workqueue/parallelizer.go:57
    3  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148

    func (pc *Scheduler) Run(stopCh <-chan struct{}) {
       pc.loadSchedulerConf()
       go pc.watchSchedulerConf(stopCh)
       // Start cache for policy.
       go pc.cache.Run(stopCh)
       pc.cache.WaitForCacheSync(stopCh)
       go wait.Until(pc.runOnce, pc.schedulePeriod, stopCh)
    }
    
    func (pc *Scheduler) runOnce() {
        klog.V(4).Infof("Start scheduling ...")
        scheduleStartTime := time.Now()
        defer klog.V(4).Infof("End scheduling ...")
    
        pc.mutex.Lock()
        actions := pc.actions
        plugins := pc.plugins
        configurations := pc.configurations
        pc.mutex.Unlock()
    
        ssn := framework.OpenSession(pc.cache, plugins, configurations)
        defer framework.CloseSession(ssn)
    
        for _, action := range actions {
            actionStartTime := time.Now()
            action.Execute(ssn)
            metrics.UpdateActionDuration(action.Name(), metrics.Duration(actionStartTime))
        }
        metrics.UpdateE2eDuration(metrics.Duration(scheduleStartTime))
    }

    每次调用 runOnce 的过程如下面调度流程图所示:

     

    • OpenSession: 获得这次调度过程的上下文,主要是对 cache 的信息(JobInfos,NodeInfos)做一次 snapshot,然后注册不同 actions 的 plugins。
    • enqueue:这个 action 目的是更新一次集群的可提供的资源和待调度 job 的状态,如果 job 里面所有的 task 所需要的资源比集群空余资源小,就会把 job.PodGroup.Status.Phase 从 PodGroupPending 置为 PodGroupInqueue。从这里可以看出 volcano 是以 job 为单位进行调度准入的。
    • allocate:这个 action 是调度的的主逻辑,对应 kube-scheduler 的调度和绑定这两步。不过,这里以 task 为单位进行,也是通过预选(PredicateNodes),优选(PrioritizeNodes)的步骤筛选合适的 node,然后对 task 和 node 进行绑定。
    • preempt:抢占 actions 是可选的,不过跟 kube-scheduler 的抢占不同的是,不会抢占已经调度完成的 tasks,只会尝试从其他调度队列中的 jobs 或者是同一调度队列的 jobs 中抢占资源(根据 jobs 的优先级抢占)。如果希望抢占已经调度的资源,可以开启另外一个 action reclaim ,会尝试抢占其他低优先级队列中的已经调度 jobs 的资源。
    • backfill:这个 actions 我认为是 volcano 比较特别的一个功能,主要是对前面提到还在 pending 中的 jobs 预留资源,因为在集群资源紧张的时候,有可能还没等到有足够的资源启动 job 所有的 tasks,资源就被分配掉了。backfill 会尝试看到资源就申请占用着,等到 jobs 启动的条件足够再退出来让给 job。

    volcano调度流程图

    image-20191202165727868

    代码流程图

    image-20191202163510557

    说明:

    (1)在每轮session调度期间,使用的都是缓存中的数据,如果这个时候集群资源更新了,当前session中的数据不会更新

    (2)enqueue的作用就是,根据当前集群资源情况预先筛选出一部分作业。集群资源更新相关的代码都要在这里修改。

    (3)allocate负责真正的pod 调度过程。调度逻辑相关的代码需要在这里修改。

    (dlv) b allocate.(*Action).Execute
    Breakpoint 1 (enabled) set at 0xf083f0 for volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:40
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:40 (hits goroutine(188):1 total:1) (PC: 0xf083f0)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000f083f0 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:40
    1  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    2  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    3  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    4  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    5  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    6  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    7  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148

    调度器的本质还是给所有没有绑定到节点上的pod找到合适的节点并绑定上去,但是为了实现gang调度、抢占、资源预留等功能,不能跟k8s的调度器一样通过watch到的pod事件来触发调度(大多数情况下,每一个pod的调度都是单pod最优),所以volcano的调度器采用的是周期性全局调度的方式。我们在看volcano的调度器代码时也能够看到调度逻辑也是这样的思路:

    • list-watch的是PodGroup和Node
    • 周期性创建一个全局调度的Session,对集群做一次快照
    • 在每一个Session中,根据配置的调度算法和策略对快照中的所有PodGroup进行调度
    // Scheduler watches for new unscheduled pods for volcano. It attempts to find
    // nodes that they fit on and writes bindings back to the api server.
    type Scheduler struct {
        cache          schedcache.Cache   // Cache是一个接口,实现了这个接口的是SchedulerCache,所有调度资源的缓存
        actions        []framework.Action // 调度器的配置文件中设置的每一轮调度的处理逻辑,有enqueue, allocate, backfill等
        plugins        []conf.Tier        // 调度器的配置文件中设置的调度算法的各个层级的算法集合
        configurations []conf.Configuration  // 调度器每个Action对应的参数
        schedulerConf  string             // 调度器配置文件路径
        schedulePeriod time.Duration      // 调度器的调度周期,默认1s
    }

    一个默认的配置文件如下:

     scheduler/util.go

    var defaultSchedulerConf = `
    actions: "enqueue, allocate, backfill"
    tiers:
    - plugins:
      - name: priority
      - name: gang
    - plugins:
      - name: drf
      - name: predicates
      - name: proportion
      - name: nodeorder
    `

    kubectl apply  -f job.yaml 执行前

    root@ubuntu:~# cat job.yaml 
    apiVersion: batch.volcano.sh/v1alpha1
    kind: Job
    metadata:
      name: test-job
    spec:
      minAvailable: 3
      schedulerName: volcano
      policies:
        - event: PodEvicted
          action: RestartJob
      plugins:
        ssh: []
        env: []
        svc: []
      maxRetry: 5
      queue: default
      # Comment out the following section to enable volumes for job input/output.
      #volumes:
      #  - mountPath: "/myinput"
      #  - mountPath: "/myoutput"
      #    volumeClaimName: "testvolumeclaimname"
      #    volumeClaim:
      #      accessModes: [ "ReadWriteOnce" ]
      #      storageClassName: "my-storage-class"
      #      resources:
      #        requests:
      #          storage: 1Gi
      tasks:
        - replicas: 6
          name: "default-nginx"
          template:
            metadata:
              name: web
            spec:
              containers:
                - image: nginx
                  imagePullPolicy: IfNotPresent
                  name: nginx
                  resources:
                    requests:
                      cpu: "1"
              restartPolicy: OnFailure
    (dlv) bt
    0  0x0000000000f0b1d0 in volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:52
    1  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    2  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    3  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    4  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    5  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    6  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    7  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) b enqueue.Execute
    Breakpoint 1 (enabled) set at 0xf0b1d0 for volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:52
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:52 (hits goroutine(188):1 total:1) (PC: 0xf0b1d0)
    Warning: debugging optimized function
    (dlv) p  ssn
    *volcano.sh/volcano/pkg/scheduler/framework.Session {
            UID: "048cc4c0-bd4a-4784-9d1f-7c132822c6f2",
            kubeClient: k8s.io/client-go/kubernetes.Interface(*k8s.io/client-go/kubernetes.Clientset) *{
                    DiscoveryClient: *(*"k8s.io/client-go/discovery.DiscoveryClient")(0x40004a04c0),
                    admissionregistrationV1: *(*"k8s.io/client-go/kubernetes/typed/admissionregistration/v1.AdmissionregistrationV1Client")(0x400047c060),
                    admissionregistrationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1.AdmissionregistrationV1beta1Client")(0x400047c0c0),
                    appsV1: *(*"k8s.io/client-go/kubernetes/typed/apps/v1.AppsV1Client")(0x400047c120),
                    appsV1beta1: *(*"k8s.io/client-go/kubernetes/typed/apps/v1beta1.AppsV1beta1Client")(0x400047c180),
                    appsV1beta2: *(*"k8s.io/client-go/kubernetes/typed/apps/v1beta2.AppsV1beta2Client")(0x400047c1e0),
                    auditregistrationV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1.AuditregistrationV1alpha1Client")(0x400047c240),
                    authenticationV1: *(*"k8s.io/client-go/kubernetes/typed/authentication/v1.AuthenticationV1Client")(0x400047c2a0),
                    authenticationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/authentication/v1beta1.AuthenticationV1beta1Client")(0x400047c300),
                    authorizationV1: *(*"k8s.io/client-go/kubernetes/typed/authorization/v1.AuthorizationV1Client")(0x400047c360),
                    authorizationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/authorization/v1beta1.AuthorizationV1beta1Client")(0x400047c3c0),
                    autoscalingV1: *(*"k8s.io/client-go/kubernetes/typed/autoscaling/v1.AutoscalingV1Client")(0x400047c420),
                    autoscalingV2beta1: *(*"k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1.AutoscalingV2beta1Client")(0x400047c480),
                    autoscalingV2beta2: *(*"k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2.AutoscalingV2beta2Client")(0x400047c4e0),
                    batchV1: *(*"k8s.io/client-go/kubernetes/typed/batch/v1.BatchV1Client")(0x400047c540),
                    batchV1beta1: *(*"k8s.io/client-go/kubernetes/typed/batch/v1beta1.BatchV1beta1Client")(0x400047c5a0),
                    batchV2alpha1: *(*"k8s.io/client-go/kubernetes/typed/batch/v2alpha1.BatchV2alpha1Client")(0x400047c600),
                    certificatesV1beta1: *(*"k8s.io/client-go/kubernetes/typed/certificates/v1beta1.CertificatesV1beta1Client")(0x400047c660),
                    coordinationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/coordination/v1beta1.CoordinationV1beta1Client")(0x400047c6c0),
                    coordinationV1: *(*"k8s.io/client-go/kubernetes/typed/coordination/v1.CoordinationV1Client")(0x400047c720),
                    coreV1: *(*"k8s.io/client-go/kubernetes/typed/core/v1.CoreV1Client")(0x400047c780),
                    discoveryV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/discovery/v1alpha1.DiscoveryV1alpha1Client")(0x400047c7e0),
                    discoveryV1beta1: *(*"k8s.io/client-go/kubernetes/typed/discovery/v1beta1.DiscoveryV1beta1Client")(0x400047c840),
                    eventsV1beta1: *(*"k8s.io/client-go/kubernetes/typed/events/v1beta1.EventsV1beta1Client")(0x400047c8a0),
                    extensionsV1beta1: *(*"k8s.io/client-go/kubernetes/typed/extensions/v1beta1.ExtensionsV1beta1Client")(0x400047c900),
                    flowcontrolV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1.FlowcontrolV1alpha1Client")(0x400047c960),
                    networkingV1: *(*"k8s.io/client-go/kubernetes/typed/networking/v1.NetworkingV1Client")(0x400047c9c0),
                    networkingV1beta1: *(*"k8s.io/client-go/kubernetes/typed/networking/v1beta1.NetworkingV1beta1Client")(0x400047ca20),
                    nodeV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/node/v1alpha1.NodeV1alpha1Client")(0x400047ca80),
                    nodeV1beta1: *(*"k8s.io/client-go/kubernetes/typed/node/v1beta1.NodeV1beta1Client")(0x400047cae0),
                    policyV1beta1: *(*"k8s.io/client-go/kubernetes/typed/policy/v1beta1.PolicyV1beta1Client")(0x400047cb40),
                    rbacV1: *(*"k8s.io/client-go/kubernetes/typed/rbac/v1.RbacV1Client")(0x400047cba0),
                    rbacV1beta1: *(*"k8s.io/client-go/kubernetes/typed/rbac/v1beta1.RbacV1beta1Client")(0x400047cc00),
                    rbacV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/rbac/v1alpha1.RbacV1alpha1Client")(0x400047cc60),
                    schedulingV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1.SchedulingV1alpha1Client")(0x400047ccc0),
                    schedulingV1beta1: *(*"k8s.io/client-go/kubernetes/typed/scheduling/v1beta1.SchedulingV1beta1Client")(0x400047cd20),
                    schedulingV1: *(*"k8s.io/client-go/kubernetes/typed/scheduling/v1.SchedulingV1Client")(0x400047cd80),
                    settingsV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/settings/v1alpha1.SettingsV1alpha1Client")(0x400047cde0),
                    storageV1beta1: *(*"k8s.io/client-go/kubernetes/typed/storage/v1beta1.StorageV1beta1Client")(0x400047ce40),
                    storageV1: *(*"k8s.io/client-go/kubernetes/typed/storage/v1.StorageV1Client")(0x400047cea0),
                    storageV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/storage/v1alpha1.StorageV1alpha1Client")(0x400047cf00),},
            cache: volcano.sh/volcano/pkg/scheduler/cache.Cache(*volcano.sh/volcano/pkg/scheduler/cache.SchedulerCache) *{
                    Mutex: (*sync.Mutex)(0x4000364900),
                    kubeClient: *(*"k8s.io/client-go/kubernetes.Clientset")(0x400044c840),
                    vcClient: *(*"volcano.sh/volcano/pkg/client/clientset/versioned.Clientset")(0x40004a0500),
                    defaultQueue: "default",
                    schedulerName: "volcano",
                    podInformer: k8s.io/client-go/informers/core/v1.PodInformer(*k8s.io/client-go/informers/core/v1.podInformer) ...,
                    nodeInformer: k8s.io/client-go/informers/core/v1.NodeInformer(*k8s.io/client-go/informers/core/v1.nodeInformer) ...,
                    podGroupInformerV1beta1: volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.PodGroupInformer(*volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.podGroupInformer) ...,
                    queueInformerV1beta1: volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.QueueInformer(*volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.queueInformer) ...,
                    pvInformer: k8s.io/client-go/informers/core/v1.PersistentVolumeInformer(*k8s.io/client-go/informers/core/v1.persistentVolumeInformer) ...,
                    pvcInformer: k8s.io/client-go/informers/core/v1.PersistentVolumeClaimInformer(*k8s.io/client-go/informers/core/v1.persistentVolumeClaimInformer) ...,
                    scInformer: k8s.io/client-go/informers/storage/v1.StorageClassInformer(*k8s.io/client-go/informers/storage/v1.storageClassInformer) ...,
                    pcInformer: k8s.io/client-go/informers/scheduling/v1beta1.PriorityClassInformer(*k8s.io/client-go/informers/scheduling/v1beta1.priorityClassInformer) ...,
                    quotaInformer: k8s.io/client-go/informers/core/v1.ResourceQuotaInformer(*k8s.io/client-go/informers/core/v1.resourceQuotaInformer) ...,
                    Binder: volcano.sh/volcano/pkg/scheduler/cache.Binder(*volcano.sh/volcano/pkg/scheduler/cache.defaultBinder) ...,
                    Evictor: volcano.sh/volcano/pkg/scheduler/cache.Evictor(*volcano.sh/volcano/pkg/scheduler/cache.defaultEvictor) ...,
                    StatusUpdater: volcano.sh/volcano/pkg/scheduler/cache.StatusUpdater(*volcano.sh/volcano/pkg/scheduler/cache.defaultStatusUpdater) ...,
                    VolumeBinder: volcano.sh/volcano/pkg/scheduler/cache.VolumeBinder(*volcano.sh/volcano/pkg/scheduler/cache.defaultVolumeBinder) ...,
                    Recorder: k8s.io/client-go/tools/record.EventRecorder(*k8s.io/client-go/tools/record.recorderImpl) ...,
                    Jobs: map[volcano.sh/volcano/pkg/scheduler/api.JobID]*volcano.sh/volcano/pkg/scheduler/api.JobInfo [...],
                    Nodes: map[string]*volcano.sh/volcano/pkg/scheduler/api.NodeInfo [...],
                    Queues: map[volcano.sh/volcano/pkg/scheduler/api.QueueID]*volcano.sh/volcano/pkg/scheduler/api.QueueInfo [...],
                    PriorityClasses: map[string]*k8s.io/api/scheduling/v1beta1.PriorityClass [...],
                    defaultPriorityClass: *k8s.io/api/scheduling/v1beta1.PriorityClass nil,
                    defaultPriority: 0,
                    NamespaceCollection: map[string]*volcano.sh/volcano/pkg/scheduler/api.NamespaceCollection [],
                    errTasks: k8s.io/client-go/util/workqueue.RateLimitingInterface(*k8s.io/client-go/util/workqueue.rateLimitingType) ...,
                    deletedJobs: k8s.io/client-go/util/workqueue.RateLimitingInterface(*k8s.io/client-go/util/workqueue.rateLimitingType) ...,},
            podGroupStatus: map[volcano.sh/volcano/pkg/scheduler/api.JobID]volcano.sh/volcano/pkg/apis/scheduling.PodGroupStatus [],
            Jobs: map[volcano.sh/volcano/pkg/scheduler/api.JobID]*volcano.sh/volcano/pkg/scheduler/api.JobInfo [],
            Nodes: map[string]*volcano.sh/volcano/pkg/scheduler/api.NodeInfo [
                    "ubuntu": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000499e00), 
                    "bogon": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000714500), 
                    "centos7": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000715000), 
                    "cloud": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000715980), 
            ],
            Queues: map[volcano.sh/volcano/pkg/scheduler/api.QueueID]*volcano.sh/volcano/pkg/scheduler/api.QueueInfo [
                    "default": *(*"volcano.sh/volcano/pkg/scheduler/api.QueueInfo")(0x40004ce7b0), 
                    "test": *(*"volcano.sh/volcano/pkg/scheduler/api.QueueInfo")(0x40004ce7e0), 
            ],
            NamespaceInfo: map[volcano.sh/volcano/pkg/scheduler/api.NamespaceName]*volcano.sh/volcano/pkg/scheduler/api.NamespaceInfo [],
            Tiers: []volcano.sh/volcano/pkg/scheduler/conf.Tier len: 2, cap: 2, [
                    (*"volcano.sh/volcano/pkg/scheduler/conf.Tier")(0x400090bcb0),
                    (*"volcano.sh/volcano/pkg/scheduler/conf.Tier")(0x400090bcc8),
            ],
            Configurations: []volcano.sh/volcano/pkg/scheduler/conf.Configuration len: 0, cap: 0, nil,
            plugins: map[string]volcano.sh/volcano/pkg/scheduler/framework.Plugin [
                    "priority": ..., 
                    "gang": ..., 
                    "conformance": ..., 
                    "drf": ..., 
                    "predicates": ..., 
                    "proportion": ..., 
                    "nodeorder": ..., 
                    "binpack": ..., 
            ],
            eventHandlers: []*volcano.sh/volcano/pkg/scheduler/framework.EventHandler len: 4, cap: 4, [
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x400002f1e0),
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x400002f280),
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x400002f300),
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x400002f3a0),
            ],
            jobOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "priority": volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen.func2, 
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func3, 
                    "drf": volcano.sh/volcano/pkg/scheduler/plugins/drf.(*drfPlugin).OnSessionOpen.func2, 
            ],
            queueOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func1, 
            ],
            taskOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "priority": volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen.func1, 
            ],
            namespaceOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "drf": volcano.sh/volcano/pkg/scheduler/plugins/drf.(*drfPlugin).OnSessionOpen.func3, 
            ],
            predicateFns: map[string]volcano.sh/volcano/pkg/scheduler/api.PredicateFn [
                    "predicates": volcano.sh/volcano/pkg/scheduler/plugins/predicates.(*predicatesPlugin).OnSessionOpen.func3, 
            ],
            bestNodeFns: map[string]volcano.sh/volcano/pkg/scheduler/api.BestNodeFn [],
            nodeOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.NodeOrderFn [
                    "nodeorder": volcano.sh/volcano/pkg/scheduler/plugins/nodeorder.(*nodeOrderPlugin).OnSessionOpen.func3, 
                    "binpack": volcano.sh/volcano/pkg/scheduler/plugins/binpack.(*binpackPlugin).OnSessionOpen.func2, 
            ],
            batchNodeOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.BatchNodeOrderFn [
                    "nodeorder": volcano.sh/volcano/pkg/scheduler/plugins/nodeorder.(*nodeOrderPlugin).OnSessionOpen.func4, 
            ],
            nodeMapFns: map[string]volcano.sh/volcano/pkg/scheduler/api.NodeMapFn [],
            nodeReduceFns: map[string]volcano.sh/volcano/pkg/scheduler/api.NodeReduceFn [],
            preemptableFns: map[string]volcano.sh/volcano/pkg/scheduler/api.EvictableFn [
                    "priority": volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen.func3, 
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func2, 
                    "conformance": volcano.sh/volcano/pkg/scheduler/plugins/conformance.(*conformancePlugin).OnSessionOpen.func1, 
                    "drf": volcano.sh/volcano/pkg/scheduler/plugins/drf.(*drfPlugin).OnSessionOpen.func1, 
            ],
            reclaimableFns: map[string]volcano.sh/volcano/pkg/scheduler/api.EvictableFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func2, 
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func2, 
                    "conformance": volcano.sh/volcano/pkg/scheduler/plugins/conformance.(*conformancePlugin).OnSessionOpen.func1, 
            ],
            overusedFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func3, 
            ],
            jobReadyFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func4, 
            ],
            jobPipelinedFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func5, 
            ],
            jobValidFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateExFn [
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func1, 
            ],
            jobEnqueueableFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func4, 
            ],}
    (dlv) p ssn.QueueOrderFn
    volcano.sh/volcano/pkg/scheduler/framework.(*Session).QueueOrderFn
    (dlv) p ssn.ssn.Jobs
    Command failed: ssn has no member ssn
    (dlv) p ssn.Jobs
    map[volcano.sh/volcano/pkg/scheduler/api.JobID]*volcano.sh/volcano/pkg/scheduler/api.JobInfo []
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:52 (hits goroutine(188):2 total:2) (PC: 0xf0b1d0)
    Warning: debugging optimized function
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:52 (hits goroutine(188):3 total:3) (PC: 0xf0b1d0)
    Warning: debugging optimized function

    kubectl apply  -f job.yaml 执行后

    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:52 (hits goroutine(188):3 total:3) (PC: 0xf0b1d0)
    Warning: debugging optimized function
    (dlv) p  ssn
    *volcano.sh/volcano/pkg/scheduler/framework.Session {
            UID: "e5ce3226-8c97-4ee7-9ec5-0ac605997204",
            kubeClient: k8s.io/client-go/kubernetes.Interface(*k8s.io/client-go/kubernetes.Clientset) *{
                    DiscoveryClient: *(*"k8s.io/client-go/discovery.DiscoveryClient")(0x40004a04c0),
                    admissionregistrationV1: *(*"k8s.io/client-go/kubernetes/typed/admissionregistration/v1.AdmissionregistrationV1Client")(0x400047c060),
                    admissionregistrationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1.AdmissionregistrationV1beta1Client")(0x400047c0c0),
                    appsV1: *(*"k8s.io/client-go/kubernetes/typed/apps/v1.AppsV1Client")(0x400047c120),
                    appsV1beta1: *(*"k8s.io/client-go/kubernetes/typed/apps/v1beta1.AppsV1beta1Client")(0x400047c180),
                    appsV1beta2: *(*"k8s.io/client-go/kubernetes/typed/apps/v1beta2.AppsV1beta2Client")(0x400047c1e0),
                    auditregistrationV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1.AuditregistrationV1alpha1Client")(0x400047c240),
                    authenticationV1: *(*"k8s.io/client-go/kubernetes/typed/authentication/v1.AuthenticationV1Client")(0x400047c2a0),
                    authenticationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/authentication/v1beta1.AuthenticationV1beta1Client")(0x400047c300),
                    authorizationV1: *(*"k8s.io/client-go/kubernetes/typed/authorization/v1.AuthorizationV1Client")(0x400047c360),
                    authorizationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/authorization/v1beta1.AuthorizationV1beta1Client")(0x400047c3c0),
                    autoscalingV1: *(*"k8s.io/client-go/kubernetes/typed/autoscaling/v1.AutoscalingV1Client")(0x400047c420),
                    autoscalingV2beta1: *(*"k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1.AutoscalingV2beta1Client")(0x400047c480),
                    autoscalingV2beta2: *(*"k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2.AutoscalingV2beta2Client")(0x400047c4e0),
                    batchV1: *(*"k8s.io/client-go/kubernetes/typed/batch/v1.BatchV1Client")(0x400047c540),
                    batchV1beta1: *(*"k8s.io/client-go/kubernetes/typed/batch/v1beta1.BatchV1beta1Client")(0x400047c5a0),
                    batchV2alpha1: *(*"k8s.io/client-go/kubernetes/typed/batch/v2alpha1.BatchV2alpha1Client")(0x400047c600),
                    certificatesV1beta1: *(*"k8s.io/client-go/kubernetes/typed/certificates/v1beta1.CertificatesV1beta1Client")(0x400047c660),
                    coordinationV1beta1: *(*"k8s.io/client-go/kubernetes/typed/coordination/v1beta1.CoordinationV1beta1Client")(0x400047c6c0),
                    coordinationV1: *(*"k8s.io/client-go/kubernetes/typed/coordination/v1.CoordinationV1Client")(0x400047c720),
                    coreV1: *(*"k8s.io/client-go/kubernetes/typed/core/v1.CoreV1Client")(0x400047c780),
                    discoveryV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/discovery/v1alpha1.DiscoveryV1alpha1Client")(0x400047c7e0),
                    discoveryV1beta1: *(*"k8s.io/client-go/kubernetes/typed/discovery/v1beta1.DiscoveryV1beta1Client")(0x400047c840),
                    eventsV1beta1: *(*"k8s.io/client-go/kubernetes/typed/events/v1beta1.EventsV1beta1Client")(0x400047c8a0),
                    extensionsV1beta1: *(*"k8s.io/client-go/kubernetes/typed/extensions/v1beta1.ExtensionsV1beta1Client")(0x400047c900),
                    flowcontrolV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1.FlowcontrolV1alpha1Client")(0x400047c960),
                    networkingV1: *(*"k8s.io/client-go/kubernetes/typed/networking/v1.NetworkingV1Client")(0x400047c9c0),
                    networkingV1beta1: *(*"k8s.io/client-go/kubernetes/typed/networking/v1beta1.NetworkingV1beta1Client")(0x400047ca20),
                    nodeV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/node/v1alpha1.NodeV1alpha1Client")(0x400047ca80),
                    nodeV1beta1: *(*"k8s.io/client-go/kubernetes/typed/node/v1beta1.NodeV1beta1Client")(0x400047cae0),
                    policyV1beta1: *(*"k8s.io/client-go/kubernetes/typed/policy/v1beta1.PolicyV1beta1Client")(0x400047cb40),
                    rbacV1: *(*"k8s.io/client-go/kubernetes/typed/rbac/v1.RbacV1Client")(0x400047cba0),
                    rbacV1beta1: *(*"k8s.io/client-go/kubernetes/typed/rbac/v1beta1.RbacV1beta1Client")(0x400047cc00),
                    rbacV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/rbac/v1alpha1.RbacV1alpha1Client")(0x400047cc60),
                    schedulingV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1.SchedulingV1alpha1Client")(0x400047ccc0),
                    schedulingV1beta1: *(*"k8s.io/client-go/kubernetes/typed/scheduling/v1beta1.SchedulingV1beta1Client")(0x400047cd20),
                    schedulingV1: *(*"k8s.io/client-go/kubernetes/typed/scheduling/v1.SchedulingV1Client")(0x400047cd80),
                    settingsV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/settings/v1alpha1.SettingsV1alpha1Client")(0x400047cde0),
                    storageV1beta1: *(*"k8s.io/client-go/kubernetes/typed/storage/v1beta1.StorageV1beta1Client")(0x400047ce40),
                    storageV1: *(*"k8s.io/client-go/kubernetes/typed/storage/v1.StorageV1Client")(0x400047cea0),
                    storageV1alpha1: *(*"k8s.io/client-go/kubernetes/typed/storage/v1alpha1.StorageV1alpha1Client")(0x400047cf00),},
            cache: volcano.sh/volcano/pkg/scheduler/cache.Cache(*volcano.sh/volcano/pkg/scheduler/cache.SchedulerCache) *{
                    Mutex: (*sync.Mutex)(0x4000364900),
                    kubeClient: *(*"k8s.io/client-go/kubernetes.Clientset")(0x400044c840),
                    vcClient: *(*"volcano.sh/volcano/pkg/client/clientset/versioned.Clientset")(0x40004a0500),
                    defaultQueue: "default",
                    schedulerName: "volcano",
                    podInformer: k8s.io/client-go/informers/core/v1.PodInformer(*k8s.io/client-go/informers/core/v1.podInformer) ...,
                    nodeInformer: k8s.io/client-go/informers/core/v1.NodeInformer(*k8s.io/client-go/informers/core/v1.nodeInformer) ...,
                    podGroupInformerV1beta1: volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.PodGroupInformer(*volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.podGroupInformer) ...,
                    queueInformerV1beta1: volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.QueueInformer(*volcano.sh/volcano/pkg/client/informers/externalversions/scheduling/v1beta1.queueInformer) ...,
                    pvInformer: k8s.io/client-go/informers/core/v1.PersistentVolumeInformer(*k8s.io/client-go/informers/core/v1.persistentVolumeInformer) ...,
                    pvcInformer: k8s.io/client-go/informers/core/v1.PersistentVolumeClaimInformer(*k8s.io/client-go/informers/core/v1.persistentVolumeClaimInformer) ...,
                    scInformer: k8s.io/client-go/informers/storage/v1.StorageClassInformer(*k8s.io/client-go/informers/storage/v1.storageClassInformer) ...,
                    pcInformer: k8s.io/client-go/informers/scheduling/v1beta1.PriorityClassInformer(*k8s.io/client-go/informers/scheduling/v1beta1.priorityClassInformer) ...,
                    quotaInformer: k8s.io/client-go/informers/core/v1.ResourceQuotaInformer(*k8s.io/client-go/informers/core/v1.resourceQuotaInformer) ...,
                    Binder: volcano.sh/volcano/pkg/scheduler/cache.Binder(*volcano.sh/volcano/pkg/scheduler/cache.defaultBinder) ...,
                    Evictor: volcano.sh/volcano/pkg/scheduler/cache.Evictor(*volcano.sh/volcano/pkg/scheduler/cache.defaultEvictor) ...,
                    StatusUpdater: volcano.sh/volcano/pkg/scheduler/cache.StatusUpdater(*volcano.sh/volcano/pkg/scheduler/cache.defaultStatusUpdater) ...,
                    VolumeBinder: volcano.sh/volcano/pkg/scheduler/cache.VolumeBinder(*volcano.sh/volcano/pkg/scheduler/cache.defaultVolumeBinder) ...,
                    Recorder: k8s.io/client-go/tools/record.EventRecorder(*k8s.io/client-go/tools/record.recorderImpl) ...,
                    Jobs: map[volcano.sh/volcano/pkg/scheduler/api.JobID]*volcano.sh/volcano/pkg/scheduler/api.JobInfo [...],
                    Nodes: map[string]*volcano.sh/volcano/pkg/scheduler/api.NodeInfo [...],
                    Queues: map[volcano.sh/volcano/pkg/scheduler/api.QueueID]*volcano.sh/volcano/pkg/scheduler/api.QueueInfo [...],
                    PriorityClasses: map[string]*k8s.io/api/scheduling/v1beta1.PriorityClass [...],
                    defaultPriorityClass: *k8s.io/api/scheduling/v1beta1.PriorityClass nil,
                    defaultPriority: 0,
                    NamespaceCollection: map[string]*volcano.sh/volcano/pkg/scheduler/api.NamespaceCollection [],
                    errTasks: k8s.io/client-go/util/workqueue.RateLimitingInterface(*k8s.io/client-go/util/workqueue.rateLimitingType) ...,
                    deletedJobs: k8s.io/client-go/util/workqueue.RateLimitingInterface(*k8s.io/client-go/util/workqueue.rateLimitingType) ...,},
            podGroupStatus: map[volcano.sh/volcano/pkg/scheduler/api.JobID]volcano.sh/volcano/pkg/apis/scheduling.PodGroupStatus [],
            Jobs: map[volcano.sh/volcano/pkg/scheduler/api.JobID]*volcano.sh/volcano/pkg/scheduler/api.JobInfo [
                    "default/test-job": *(*"volcano.sh/volcano/pkg/scheduler/api.JobInfo")(0x4000014420), 
            ],
            Nodes: map[string]*volcano.sh/volcano/pkg/scheduler/api.NodeInfo [
                    "bogon": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000394080), 
                    "centos7": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000395080), 
                    "cloud": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000395f80), 
                    "ubuntu": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x400020d500), 
            ],
            Queues: map[volcano.sh/volcano/pkg/scheduler/api.QueueID]*volcano.sh/volcano/pkg/scheduler/api.QueueInfo [
                    "default": *(*"volcano.sh/volcano/pkg/scheduler/api.QueueInfo")(0x400079d2f0), 
                    "test": *(*"volcano.sh/volcano/pkg/scheduler/api.QueueInfo")(0x400079d320), 
            ],
            NamespaceInfo: map[volcano.sh/volcano/pkg/scheduler/api.NamespaceName]*volcano.sh/volcano/pkg/scheduler/api.NamespaceInfo [],
            Tiers: []volcano.sh/volcano/pkg/scheduler/conf.Tier len: 2, cap: 2, [
                    (*"volcano.sh/volcano/pkg/scheduler/conf.Tier")(0x400079c7b0),
                    (*"volcano.sh/volcano/pkg/scheduler/conf.Tier")(0x400079c7c8),
            ],
            Configurations: []volcano.sh/volcano/pkg/scheduler/conf.Configuration len: 0, cap: 0, nil,
            plugins: map[string]volcano.sh/volcano/pkg/scheduler/framework.Plugin [
                    "priority": ..., 
                    "gang": ..., 
                    "conformance": ..., 
                    "drf": ..., 
                    "predicates": ..., 
                    "proportion": ..., 
                    "nodeorder": ..., 
                    "binpack": ..., 
            ],
            eventHandlers: []*volcano.sh/volcano/pkg/scheduler/framework.EventHandler len: 4, cap: 4, [
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x40005b9170),
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x40005b9240),
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x40005b9440),
                    *(*"volcano.sh/volcano/pkg/scheduler/framework.EventHandler")(0x40005b9730),
            ],
            jobOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "drf": volcano.sh/volcano/pkg/scheduler/plugins/drf.(*drfPlugin).OnSessionOpen.func2, 
                    "priority": volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen.func2, 
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func3, 
            ],
            queueOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func1, 
            ],
            taskOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "priority": volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen.func1, 
            ],
            namespaceOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "drf": volcano.sh/volcano/pkg/scheduler/plugins/drf.(*drfPlugin).OnSessionOpen.func3, 
            ],
            predicateFns: map[string]volcano.sh/volcano/pkg/scheduler/api.PredicateFn [
                    "predicates": volcano.sh/volcano/pkg/scheduler/plugins/predicates.(*predicatesPlugin).OnSessionOpen.func3, 
            ],
            bestNodeFns: map[string]volcano.sh/volcano/pkg/scheduler/api.BestNodeFn [],
            nodeOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.NodeOrderFn [
                    "nodeorder": volcano.sh/volcano/pkg/scheduler/plugins/nodeorder.(*nodeOrderPlugin).OnSessionOpen.func3, 
                    "binpack": volcano.sh/volcano/pkg/scheduler/plugins/binpack.(*binpackPlugin).OnSessionOpen.func2, 
            ],
            batchNodeOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.BatchNodeOrderFn [
                    "nodeorder": volcano.sh/volcano/pkg/scheduler/plugins/nodeorder.(*nodeOrderPlugin).OnSessionOpen.func4, 
            ],
            nodeMapFns: map[string]volcano.sh/volcano/pkg/scheduler/api.NodeMapFn [],
            nodeReduceFns: map[string]volcano.sh/volcano/pkg/scheduler/api.NodeReduceFn [],
            preemptableFns: map[string]volcano.sh/volcano/pkg/scheduler/api.EvictableFn [
                    "drf": volcano.sh/volcano/pkg/scheduler/plugins/drf.(*drfPlugin).OnSessionOpen.func1, 
                    "priority": volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen.func3, 
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func2, 
                    "conformance": volcano.sh/volcano/pkg/scheduler/plugins/conformance.(*conformancePlugin).OnSessionOpen.func1, 
            ],
            reclaimableFns: map[string]volcano.sh/volcano/pkg/scheduler/api.EvictableFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func2, 
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func2, 
                    "conformance": volcano.sh/volcano/pkg/scheduler/plugins/conformance.(*conformancePlugin).OnSessionOpen.func1, 
            ],
            overusedFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func3, 
            ],
            jobReadyFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func4, 
            ],
            jobPipelinedFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func5, 
            ],
            jobValidFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateExFn [
                    "gang": volcano.sh/volcano/pkg/scheduler/plugins/gang.(*gangPlugin).OnSessionOpen.func1, 
            ],
            jobEnqueueableFns: map[string]volcano.sh/volcano/pkg/scheduler/api.ValidateFn [
                    "proportion": volcano.sh/volcano/pkg/scheduler/plugins/proportion.(*proportionPlugin).OnSessionOpen.func4, 
            ],}
    (dlv) p ssn.Jobs
    map[volcano.sh/volcano/pkg/scheduler/api.JobID]*volcano.sh/volcano/pkg/scheduler/api.JobInfo [
            "default/test-job": *{
                    UID: "default/test-job",
                    Name: "test-job",
                    Namespace: "default",
                    Queue: "default",
                    Priority: 0,
                    MinAvailable: 3,
                    NodesFitDelta: volcano.sh/volcano/pkg/scheduler/api.NodeResourceMap [],
                    JobFitErrors: "",
                    NodesFitErrors: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.FitErrors [],
                    TaskStatusIndex: map[volcano.sh/volcano/pkg/scheduler/api.TaskStatus]volcano.sh/volcano/pkg/scheduler/api.tasksMap [],
                    Tasks: volcano.sh/volcano/pkg/scheduler/api.tasksMap [],
                    Allocated: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40004c83a0),
                    TotalRequest: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40004c83e0),
                    CreationTimestamp: (*"k8s.io/apimachinery/pkg/apis/meta/v1.Time")(0x40000144a8),
                    PodGroup: *(*"volcano.sh/volcano/pkg/scheduler/api.PodGroup")(0x4000466340),}, 
    ]
    (dlv) s
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:53 (PC: 0xf0b204)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:54 (PC: 0xf0b218)
    Warning: debugging optimized function
    (dlv) list
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:54 (PC: 0xf0b218)
    Warning: debugging optimized function
    Command failed: open /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go: no such file or directory
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:56 (PC: 0xf0b260)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:57 (PC: 0xf0b2f0)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:58 (PC: 0xf0b328)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:60 (PC: 0xf0b360)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:61 (PC: 0xf0b3c0)
    Warning: debugging optimized function
    (dlv) p queues
    *volcano.sh/volcano/pkg/scheduler/util.PriorityQueue {
            queue: volcano.sh/volcano/pkg/scheduler/util.priorityQueue {
                    items: []interface {} len: 0, cap: 0, [],
                    lessFn: volcano.sh/volcano/pkg/scheduler/framework.(*Session).QueueOrderFn-fm,},}
    (dlv) p jobsMap
    (unreadable empty OP stack)
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:65 (PC: 0xf0b400)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:66 (PC: 0xf0b718)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:67 (PC: 0xf0b724)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:66 (PC: 0xf0b788)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:69 (PC: 0xf0b7c4)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:70 (PC: 0xf0b838)
    Warning: debugging optimized function
    (dlv) p queues
    *volcano.sh/volcano/pkg/scheduler/util.PriorityQueue {
            queue: volcano.sh/volcano/pkg/scheduler/util.priorityQueue {
                    items: []interface {} len: 1, cap: 1, [
                            ...,
                    ],
                    lessFn: volcano.sh/volcano/pkg/scheduler/framework.(*Session).QueueOrderFn-fm,},}
    (dlv) p jobsMap
    (unreadable empty OP stack)
    (dlv) p job.PodGroup.Status.Phase
    ""
    (dlv) p job.PodGroup
    *volcano.sh/volcano/pkg/scheduler/api.PodGroup {
            PodGroup: volcano.sh/volcano/pkg/apis/scheduling.PodGroup {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x4000466340),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x4000466360),
                    Spec: (*"volcano.sh/volcano/pkg/apis/scheduling.PodGroupSpec")(0x4000466458),
                    Status: (*"volcano.sh/volcano/pkg/apis/scheduling.PodGroupStatus")(0x4000466488),},
            Version: "v1beta1",}
    (dlv) p job.PodGroup.TypeMeta
    k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta {Kind: "", APIVersion: ""}
    (dlv) p job.PodGroup.ObjectMeta
    k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
            Name: "test-job",
            GenerateName: "",
            Namespace: "default",
            SelfLink: "/apis/scheduling.volcano.sh/v1beta1/namespaces/default/podgroups...+9 more",
            UID: "9bab7dad-50a4-457e-b54d-4e7869ae967d",
            ResourceVersion: "2562848",
            Generation: 1,
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x40004663c8),},
            DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
            DeletionGracePeriodSeconds: *int64 nil,
            Labels: map[string]string nil,
            Annotations: map[string]string [
                    "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"batch.volcano.sh/v1alpha1","kind":"Job","metadata...+484 more", 
            ],
            OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 1, cap: 1, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference")(0x40003e8690),
            ],
            Finalizers: []string len: 0, cap: 0, nil,
            ClusterName: "",
            ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 1, cap: 1, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40003e85a0),
            ],}
    (dlv) p job.PodGroup.Spec
    volcano.sh/volcano/pkg/apis/scheduling.PodGroupSpec {
            MinMember: 3,
            Queue: "default",
            PriorityClassName: "",
            MinResources: *k8s.io/api/core/v1.ResourceList [
                    "cpu": (*"k8s.io/apimachinery/pkg/api/resource.Quantity")(0x40008aad08), 
            ],}
    (dlv) p job.PodGroup.Status
    volcano.sh/volcano/pkg/apis/scheduling.PodGroupStatus {
            Phase: "",
            Conditions: []volcano.sh/volcano/pkg/apis/scheduling.PodGroupCondition len: 0, cap: 0, nil,
            Running: 0,
            Succeeded: 0,
            Failed: 0,}
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:73 (PC: 0xf0b430)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:60 (PC: 0xf0b3a0)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:82 (PC: 0xf0b968)
    Warning: debugging optimized function
    (dlv) p queues
    *volcano.sh/volcano/pkg/scheduler/util.PriorityQueue {
            queue: volcano.sh/volcano/pkg/scheduler/util.priorityQueue {
                    items: []interface {} len: 1, cap: 1, [
                            ...,
                    ],
                    lessFn: volcano.sh/volcano/pkg/scheduler/framework.(*Session).QueueOrderFn-fm,},}
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/actions/enqueue.(*Action).Execute() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/enqueue/enqueue.go:84 (PC: 0xf0b9a8)
    Warning: debugging optimized function
    (dlv) p queue
    Command failed: could not find symbol value for queue
    (dlv) p queues
    *volcano.sh/volcano/pkg/scheduler/util.PriorityQueue {
            queue: volcano.sh/volcano/pkg/scheduler/util.priorityQueue {
                    items: []interface {} len: 1, cap: 1, [
                            ...,
                    ],
                    lessFn: volcano.sh/volcano/pkg/scheduler/framework.(*Session).QueueOrderFn-fm,},}
    (dlv) quit
    Would you like to kill the process? [Y/n] n
    You have mail in /var/spool/mail/root
    [root@bogon delve]# 

     

    BestNodeFn

    (dlv) b  BestNodeFn
    Breakpoint 1 (enabled) set at 0xeb8c20 for volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):1 total:1) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000eb8c20 in volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428
    1  0x0000000000f095c4 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:209
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) s
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:429 (PC: 0xeb8c34)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "93c1c010-9bd8-43bd-b2ee-7b8f15d084e1",
            Job: "default/test-job",
            Name: "test-job-default-nginx-0",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x40005e3800),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x40005e3820),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x40005e3918),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x40005e3af0),},}
    (dlv) p task.Pod.ObjectMeta
    k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
            Name: "test-job-default-nginx-0",
            GenerateName: "",
            Namespace: "default",
            SelfLink: "/api/v1/namespaces/default/pods/test-job-default-nginx-0",
            UID: "93c1c010-9bd8-43bd-b2ee-7b8f15d084e1",
            ResourceVersion: "2566229",
            Generation: 0,
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x40005e3888),},
            DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
            DeletionGracePeriodSeconds: *int64 nil,
            Labels: map[string]string [
                    "volcano.sh/job-name": "test-job", 
                    "volcano.sh/job-namespace": "default", 
            ],
            Annotations: map[string]string [
                    "scheduling.k8s.io/group-name": "test-job", 
                    "volcano.sh/job-name": "test-job", 
                    "volcano.sh/job-version": "0", 
                    "volcano.sh/task-spec": "default-nginx", 
            ],
            OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 1, cap: 1, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference")(0x4000448d20),
            ],
            Finalizers: []string len: 0, cap: 0, nil,
            ClusterName: "",
            ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 1, cap: 1, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x4000448d70),
            ],}
    (dlv) p task.Pod.TypeMeta
    k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta {Kind: "", APIVersion: ""}
    (dlv) p task.Pod.Spec
    k8s.io/api/core/v1.PodSpec {
            Volumes: []k8s.io/api/core/v1.Volume len: 3, cap: 4, [
                    (*"k8s.io/api/core/v1.Volume")(0x40005e3c00),
                    (*"k8s.io/api/core/v1.Volume")(0x40005e3cf0),
                    (*"k8s.io/api/core/v1.Volume")(0x40005e3de0),
            ],
            InitContainers: []k8s.io/api/core/v1.Container len: 0, cap: 0, nil,
            Containers: []k8s.io/api/core/v1.Container len: 1, cap: 1, [
                    (*"k8s.io/api/core/v1.Container")(0x400044d1e0),
            ],
            EphemeralContainers: []k8s.io/api/core/v1.EphemeralContainer len: 0, cap: 0, nil,
            RestartPolicy: "OnFailure",
            TerminationGracePeriodSeconds: *30,
            ActiveDeadlineSeconds: *int64 nil,
            DNSPolicy: "ClusterFirst",
            NodeSelector: map[string]string nil,
            ServiceAccountName: "default",
            DeprecatedServiceAccount: "default",
            AutomountServiceAccountToken: *bool nil,
            NodeName: "",
            HostNetwork: false,
            HostPID: false,
            HostIPC: false,
            ShareProcessNamespace: *bool nil,
            SecurityContext: *k8s.io/api/core/v1.PodSecurityContext {
                    SELinuxOptions: *k8s.io/api/core/v1.SELinuxOptions nil,
                    WindowsOptions: *k8s.io/api/core/v1.WindowsSecurityContextOptions nil,
                    RunAsUser: *int64 nil,
                    RunAsGroup: *int64 nil,
                    RunAsNonRoot: *bool nil,
                    SupplementalGroups: []int64 len: 0, cap: 0, nil,
                    FSGroup: *int64 nil,
                    Sysctls: []k8s.io/api/core/v1.Sysctl len: 0, cap: 0, nil,
                    FSGroupChangePolicy: *k8s.io/api/core/v1.PodFSGroupChangePolicy nil,},
            ImagePullSecrets: []k8s.io/api/core/v1.LocalObjectReference len: 0, cap: 0, nil,
            Hostname: "test-job-default-nginx-0",
            Subdomain: "test-job",
            Affinity: *k8s.io/api/core/v1.Affinity nil,
            SchedulerName: "volcano",
            Tolerations: []k8s.io/api/core/v1.Toleration len: 2, cap: 2, [
                    (*"k8s.io/api/core/v1.Toleration")(0x40008e6360),
                    (*"k8s.io/api/core/v1.Toleration")(0x40008e63a8),
            ],
            HostAliases: []k8s.io/api/core/v1.HostAlias len: 0, cap: 0, nil,
            PriorityClassName: "",
            Priority: *0,
            DNSConfig: *k8s.io/api/core/v1.PodDNSConfig nil,
            ReadinessGates: []k8s.io/api/core/v1.PodReadinessGate len: 0, cap: 0, nil,
            RuntimeClassName: *string nil,
            EnableServiceLinks: *true,
            PreemptionPolicy: *k8s.io/api/core/v1.PreemptionPolicy nil,
            Overhead: k8s.io/api/core/v1.ResourceList nil,
            TopologySpreadConstraints: []k8s.io/api/core/v1.TopologySpreadConstraint len: 0, cap: 0, nil,}
    (dlv) p task.Pod.Status
    k8s.io/api/core/v1.PodStatus {
            Phase: "Pending",
            Conditions: []k8s.io/api/core/v1.PodCondition len: 0, cap: 0, nil,
            Message: "",
            Reason: "",
            NominatedNodeName: "",
            HostIP: "",
            PodIP: "",
            PodIPs: []k8s.io/api/core/v1.PodIP len: 0, cap: 0, nil,
            StartTime: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
            InitContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
            ContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
            QOSClass: "Burstable",
            EphemeralContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,}
    (dlv) p nodeScores
    map[float64][]*volcano.sh/volcano/pkg/scheduler/api.NodeInfo [
            201.078125: [
                    *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000664800),
            ], 
    ]

    test-job-default-nginx-4 test-job-default-nginx-1

    root@ubuntu:~# kubectl get pods 
    NAME                           READY   STATUS      RESTARTS   AGE
    example-foo-54dc4db9fc-lqz9j   1/1     Running     0          2d21h
    job-1-nginx-0                  0/1     Completed   0          5d5h
    test-job-default-nginx-0       0/1     Pending     0          4s
    test-job-default-nginx-1       0/1     Pending     0          4s
    test-job-default-nginx-2       0/1     Pending     0          13s
    test-job-default-nginx-3       0/1     Pending     0          4s
    test-job-default-nginx-4       0/1     Pending     0          4s
    test-job-default-nginx-5       0/1     Pending     0          13s
    root@ubuntu:~# 
    (dlv)  b  BestNodeFn
    Breakpoint 1 (enabled) set at 0xeb8c20 for volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):1 total:1) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "0a50d40f-abd1-4726-950c-e8f45a5768be",
            Job: "default/test-job",
            Name: "test-job-default-nginx-4",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x4000a8e000),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x4000a8e020),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x4000a8e118),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x4000a8e2f0),},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):2 total:2) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "9bb63222-c61f-49f7-8aee-f99eccb72374",
            Job: "default/test-job",
            Name: "test-job-default-nginx-1",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400085ec00),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400085ec20),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x400085ed18),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x400085eef0),},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):3 total:3) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "9cc7f975-acf0-4944-9e2d-344a0d37f395",
            Job: "default/test-job",
            Name: "test-job-default-nginx-5",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x4000578c00),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x4000578c20),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x4000578d18),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x4000578ef0),},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):4 total:4) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "bc7fd0b9-0d85-4814-a53a-2fb69317a91c",
            Job: "default/test-job",
            Name: "test-job-default-nginx-2",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x4000a8f800),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x4000a8f820),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x4000a8f918),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x4000a8faf0),},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):5 total:5) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "bf3476f7-88a2-4318-8765-a84eb375aa2e",
            Job: "default/test-job",
            Name: "test-job-default-nginx-0",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400085f400),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400085f420),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x400085f518),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x400085f6f0),},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):6 total:6) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "c4b23af2-a4ff-4bf0-b9a0-e23b76b5bd4a",
            Job: "default/test-job",
            Name: "test-job-default-nginx-3",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400085e400),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400085e420),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x400085e518),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x400085e6f0),},}
    (dlv) p task.Pod.ObjectMeta
    k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
            Name: "test-job-default-nginx-3",
            GenerateName: "",
            Namespace: "default",
            SelfLink: "/api/v1/namespaces/default/pods/test-job-default-nginx-3",
            UID: "c4b23af2-a4ff-4bf0-b9a0-e23b76b5bd4a",
            ResourceVersion: "2567653",
            Generation: 0,
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x400085e488),},
            DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
            DeletionGracePeriodSeconds: *int64 nil,
            Labels: map[string]string [
                    "volcano.sh/job-name": "test-job", 
                    "volcano.sh/job-namespace": "default", 
            ],
            Annotations: map[string]string [
                    "scheduling.k8s.io/group-name": "test-job", 
                    "volcano.sh/job-name": "test-job", 
                    "volcano.sh/job-version": "0", 
                    "volcano.sh/task-spec": "default-nginx", 
            ],
            OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 1, cap: 1, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference")(0x4000413630),
            ],
            Finalizers: []string len: 0, cap: 0, nil,
            ClusterName: "",
            ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 1, cap: 1, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x4000413900),
            ],}
    (dlv) p task.Pod.Spec
    k8s.io/api/core/v1.PodSpec {
            Volumes: []k8s.io/api/core/v1.Volume len: 3, cap: 4, [
                    (*"k8s.io/api/core/v1.Volume")(0x400085e800),
                    (*"k8s.io/api/core/v1.Volume")(0x400085e8f0),
                    (*"k8s.io/api/core/v1.Volume")(0x400085e9e0),
            ],
            InitContainers: []k8s.io/api/core/v1.Container len: 0, cap: 0, nil,
            Containers: []k8s.io/api/core/v1.Container len: 1, cap: 1, [
                    (*"k8s.io/api/core/v1.Container")(0x40009ec000),
            ],
            EphemeralContainers: []k8s.io/api/core/v1.EphemeralContainer len: 0, cap: 0, nil,
            RestartPolicy: "OnFailure",
            TerminationGracePeriodSeconds: *30,
            ActiveDeadlineSeconds: *int64 nil,
            DNSPolicy: "ClusterFirst",
            NodeSelector: map[string]string nil,
            ServiceAccountName: "default",
            DeprecatedServiceAccount: "default",
            AutomountServiceAccountToken: *bool nil,
            NodeName: "",
            HostNetwork: false,
            HostPID: false,
            HostIPC: false,
            ShareProcessNamespace: *bool nil,
            SecurityContext: *k8s.io/api/core/v1.PodSecurityContext {
                    SELinuxOptions: *k8s.io/api/core/v1.SELinuxOptions nil,
                    WindowsOptions: *k8s.io/api/core/v1.WindowsSecurityContextOptions nil,
                    RunAsUser: *int64 nil,
                    RunAsGroup: *int64 nil,
                    RunAsNonRoot: *bool nil,
                    SupplementalGroups: []int64 len: 0, cap: 0, nil,
                    FSGroup: *int64 nil,
                    Sysctls: []k8s.io/api/core/v1.Sysctl len: 0, cap: 0, nil,
                    FSGroupChangePolicy: *k8s.io/api/core/v1.PodFSGroupChangePolicy nil,},
            ImagePullSecrets: []k8s.io/api/core/v1.LocalObjectReference len: 0, cap: 0, nil,
            Hostname: "test-job-default-nginx-3",
            Subdomain: "test-job",
            Affinity: *k8s.io/api/core/v1.Affinity nil,
            SchedulerName: "volcano",
            Tolerations: []k8s.io/api/core/v1.Toleration len: 2, cap: 2, [
                    (*"k8s.io/api/core/v1.Toleration")(0x4000278090),
                    (*"k8s.io/api/core/v1.Toleration")(0x40002780d8),
            ],
            HostAliases: []k8s.io/api/core/v1.HostAlias len: 0, cap: 0, nil,
            PriorityClassName: "",
            Priority: *0,
            DNSConfig: *k8s.io/api/core/v1.PodDNSConfig nil,
            ReadinessGates: []k8s.io/api/core/v1.PodReadinessGate len: 0, cap: 0, nil,
            RuntimeClassName: *string nil,
            EnableServiceLinks: *true,
            PreemptionPolicy: *k8s.io/api/core/v1.PreemptionPolicy nil,
            Overhead: k8s.io/api/core/v1.ResourceList nil,
            TopologySpreadConstraints: []k8s.io/api/core/v1.TopologySpreadConstraint len: 0, cap: 0, nil,}
    (dlv) c

    OnSessionOpen

    (dlv) b AddTaskOrderFn
    Command failed: Location "AddTaskOrderFn" ambiguous: volcano.sh/volcano/pkg/scheduler/framework.(*Session).AddTaskOrderFn, volcano.sh/volcano/pkg/scheduler/framework.(*Session).AddTaskOrderFn…
    (dlv) b volcano.sh/volcano/pkg/scheduler/framework.(*Session).AddTaskOrderFn
    Breakpoint 2 (enabled) set at 0xeb6720 for volcano.sh/volcano/pkg/scheduler/framework.(*Session).AddTaskOrderFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:36
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/plugins/priority/priority.go:43 (hits goroutine(188):2 total:2) (PC: 0xee3620)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000ee3620 in volcano.sh/volcano/pkg/scheduler/plugins/priority.(*priorityPlugin).OnSessionOpen
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/plugins/priority/priority.go:43
    1  0x0000000000eb1ee8 in volcano.sh/volcano/pkg/scheduler/framework.OpenSession
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/framework.go:48
    2  0x0000000000ee6f4c in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:76
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    [root@bogon delve]# dlv attach 38678
    Type 'help' for list of commands.
    (dlv) b Commit
    Breakpoint 1 (enabled) set at 0xebc7f0 for volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:370
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:370 (hits goroutine(188):1 total:1) (PC: 0xebc7f0)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000ebc7f0 in volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:370
    1  0x0000000000f09778 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:247
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) s
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:371 (PC: 0xebc7fc)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:372 (PC: 0xebc82c)
    Warning: debugging optimized function
    (dlv) p s.operations
    []volcano.sh/volcano/pkg/scheduler/framework.operation len: 3, cap: 4, [
            {
                    name: 2,
                    task: *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40005a7780),
                    reason: "",},
            {
                    name: 2,
                    task: *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40005a7680),
                    reason: "",},
            {
                    name: 2,
                    task: *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40005a7600),
                    reason: "",},
    ]
    (dlv) p s.operations[0]
    volcano.sh/volcano/pkg/scheduler/framework.operation {
            name: 2,
            task: *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
                    UID: "23b04f91-4d17-43a9-8a1e-600107f0d9ac",
                    Job: "default/test-job",
                    Name: "test-job-default-nginx-4",
                    Namespace: "default",
                    Resreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911e60),
                    InitResreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911e80),
                    NodeName: "bogon",
                    Status: Allocated (2),
                    Priority: 0,
                    VolumeReady: true,
                    Pod: *(*"k8s.io/api/core/v1.Pod")(0x40005e2800),},
            reason: "",}
    (dlv) p s.operations[1]
    volcano.sh/volcano/pkg/scheduler/framework.operation {
            name: 2,
            task: *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
                    UID: "34dcf318-82bf-44ca-a63d-e559f7462b6d",
                    Job: "default/test-job",
                    Name: "test-job-default-nginx-2",
                    Namespace: "default",
                    Resreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911d60),
                    InitResreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911da0),
                    NodeName: "bogon",
                    Status: Allocated (2),
                    Priority: 0,
                    VolumeReady: true,
                    Pod: *(*"k8s.io/api/core/v1.Pod")(0x400085f400),},
            reason: "",}
    (dlv) p s.operations[1].Pod
    Command failed:  has no member Pod
    (dlv) p s.operations[1].task.Pod
    *k8s.io/api/core/v1.Pod {
            TypeMeta: k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta {Kind: "", APIVersion: ""},
            ObjectMeta: k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
                    Name: "test-job-default-nginx-2",
                    GenerateName: "",
                    Namespace: "default",
                    SelfLink: "/api/v1/namespaces/default/pods/test-job-default-nginx-2",
                    UID: "34dcf318-82bf-44ca-a63d-e559f7462b6d",
                    ResourceVersion: "2571667",
                    Generation: 0,
                    CreationTimestamp: (*"k8s.io/apimachinery/pkg/apis/meta/v1.Time")(0x400085f488),
                    DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    DeletionGracePeriodSeconds: *int64 nil,
                    Labels: map[string]string [...],
                    Annotations: map[string]string [...],
                    OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference")(0x40009b8c80),
                    ],
                    Finalizers: []string len: 0, cap: 0, nil,
                    ClusterName: "",
                    ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40009b8cd0),
                    ],},
            Spec: k8s.io/api/core/v1.PodSpec {
                    Volumes: []k8s.io/api/core/v1.Volume len: 3, cap: 4, [
                            (*"k8s.io/api/core/v1.Volume")(0x400085f800),
                            (*"k8s.io/api/core/v1.Volume")(0x400085f8f0),
                            (*"k8s.io/api/core/v1.Volume")(0x400085f9e0),
                    ],
                    InitContainers: []k8s.io/api/core/v1.Container len: 0, cap: 0, nil,
                    Containers: []k8s.io/api/core/v1.Container len: 1, cap: 1, [
                            (*"k8s.io/api/core/v1.Container")(0x400051e000),
                    ],
                    EphemeralContainers: []k8s.io/api/core/v1.EphemeralContainer len: 0, cap: 0, nil,
                    RestartPolicy: "OnFailure",
                    TerminationGracePeriodSeconds: *30,
                    ActiveDeadlineSeconds: *int64 nil,
                    DNSPolicy: "ClusterFirst",
                    NodeSelector: map[string]string nil,
                    ServiceAccountName: "default",
                    DeprecatedServiceAccount: "default",
                    AutomountServiceAccountToken: *bool nil,
                    NodeName: "",
                    HostNetwork: false,
                    HostPID: false,
                    HostIPC: false,
                    ShareProcessNamespace: *bool nil,
                    SecurityContext: *(*"k8s.io/api/core/v1.PodSecurityContext")(0x4000bb2930),
                    ImagePullSecrets: []k8s.io/api/core/v1.LocalObjectReference len: 0, cap: 0, nil,
                    Hostname: "test-job-default-nginx-2",
                    Subdomain: "test-job",
                    Affinity: *k8s.io/api/core/v1.Affinity nil,
                    SchedulerName: "volcano",
                    Tolerations: []k8s.io/api/core/v1.Toleration len: 2, cap: 2, [
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd3290),
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd32d8),
                    ],
                    HostAliases: []k8s.io/api/core/v1.HostAlias len: 0, cap: 0, nil,
                    PriorityClassName: "",
                    Priority: *0,
                    DNSConfig: *k8s.io/api/core/v1.PodDNSConfig nil,
                    ReadinessGates: []k8s.io/api/core/v1.PodReadinessGate len: 0, cap: 0, nil,
                    RuntimeClassName: *string nil,
                    EnableServiceLinks: *true,
                    PreemptionPolicy: *k8s.io/api/core/v1.PreemptionPolicy nil,
                    Overhead: k8s.io/api/core/v1.ResourceList nil,
                    TopologySpreadConstraints: []k8s.io/api/core/v1.TopologySpreadConstraint len: 0, cap: 0, nil,},
            Status: k8s.io/api/core/v1.PodStatus {
                    Phase: "Pending",
                    Conditions: []k8s.io/api/core/v1.PodCondition len: 0, cap: 0, nil,
                    Message: "",
                    Reason: "",
                    NominatedNodeName: "",
                    HostIP: "",
                    PodIP: "",
                    PodIPs: []k8s.io/api/core/v1.PodIP len: 0, cap: 0, nil,
                    StartTime: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    InitContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    ContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    QOSClass: "Burstable",
                    EphemeralContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,},}
    (dlv) p s.operations[1].name
    2
    (dlv) p s.operations[2]
    volcano.sh/volcano/pkg/scheduler/framework.operation {
            name: 2,
            task: *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
                    UID: "3b84997f-f761-4bbc-b949-f98d8d61a214",
                    Job: "default/test-job",
                    Name: "test-job-default-nginx-0",
                    Namespace: "default",
                    Resreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911ce0),
                    InitResreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911d20),
                    NodeName: "bogon",
                    Status: Allocated (2),
                    Priority: 0,
                    VolumeReady: true,
                    Pod: *(*"k8s.io/api/core/v1.Pod")(0x400085ec00),},
            reason: "",}
    (dlv) b allocate
    Breakpoint 2 (enabled) set at 0xebbb80 for volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284 (hits goroutine(188):1 total:1) (PC: 0xebbb80)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "23b04f91-4d17-43a9-8a1e-600107f0d9ac",
            Job: "default/test-job",
            Name: "test-job-default-nginx-4",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "bogon",
            Status: Allocated (2),
            Priority: 0,
            VolumeReady: true,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x40005e2800),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x40005e2820),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x40005e2918),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x40005e2af0),},}
    (dlv) p task.Pod
    *k8s.io/api/core/v1.Pod {
            TypeMeta: k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta {Kind: "", APIVersion: ""},
            ObjectMeta: k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
                    Name: "test-job-default-nginx-4",
                    GenerateName: "",
                    Namespace: "default",
                    SelfLink: "/api/v1/namespaces/default/pods/test-job-default-nginx-4",
                    UID: "23b04f91-4d17-43a9-8a1e-600107f0d9ac",
                    ResourceVersion: "2571669",
                    Generation: 0,
                    CreationTimestamp: (*"k8s.io/apimachinery/pkg/apis/meta/v1.Time")(0x40005e2888),
                    DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    DeletionGracePeriodSeconds: *int64 nil,
                    Labels: map[string]string [...],
                    Annotations: map[string]string [...],
                    OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference")(0x40009b9040),
                    ],
                    Finalizers: []string len: 0, cap: 0, nil,
                    ClusterName: "",
                    ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40009b9090),
                    ],},
            Spec: k8s.io/api/core/v1.PodSpec {
                    Volumes: []k8s.io/api/core/v1.Volume len: 3, cap: 4, [
                            (*"k8s.io/api/core/v1.Volume")(0x40005e3000),
                            (*"k8s.io/api/core/v1.Volume")(0x40005e30f0),
                            (*"k8s.io/api/core/v1.Volume")(0x40005e31e0),
                    ],
                    InitContainers: []k8s.io/api/core/v1.Container len: 0, cap: 0, nil,
                    Containers: []k8s.io/api/core/v1.Container len: 1, cap: 1, [
                            (*"k8s.io/api/core/v1.Container")(0x400051e2c0),
                    ],
                    EphemeralContainers: []k8s.io/api/core/v1.EphemeralContainer len: 0, cap: 0, nil,
                    RestartPolicy: "OnFailure",
                    TerminationGracePeriodSeconds: *30,
                    ActiveDeadlineSeconds: *int64 nil,
                    DNSPolicy: "ClusterFirst",
                    NodeSelector: map[string]string nil,
                    ServiceAccountName: "default",
                    DeprecatedServiceAccount: "default",
                    AutomountServiceAccountToken: *bool nil,
                    NodeName: "",
                    HostNetwork: false,
                    HostPID: false,
                    HostIPC: false,
                    ShareProcessNamespace: *bool nil,
                    SecurityContext: *(*"k8s.io/api/core/v1.PodSecurityContext")(0x4000bb2a10),
                    ImagePullSecrets: []k8s.io/api/core/v1.LocalObjectReference len: 0, cap: 0, nil,
                    Hostname: "test-job-default-nginx-4",
                    Subdomain: "test-job",
                    Affinity: *k8s.io/api/core/v1.Affinity nil,
                    SchedulerName: "volcano",
                    Tolerations: []k8s.io/api/core/v1.Toleration len: 2, cap: 2, [
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd33b0),
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd33f8),
                    ],
                    HostAliases: []k8s.io/api/core/v1.HostAlias len: 0, cap: 0, nil,
                    PriorityClassName: "",
                    Priority: *0,
                    DNSConfig: *k8s.io/api/core/v1.PodDNSConfig nil,
                    ReadinessGates: []k8s.io/api/core/v1.PodReadinessGate len: 0, cap: 0, nil,
                    RuntimeClassName: *string nil,
                    EnableServiceLinks: *true,
                    PreemptionPolicy: *k8s.io/api/core/v1.PreemptionPolicy nil,
                    Overhead: k8s.io/api/core/v1.ResourceList nil,
                    TopologySpreadConstraints: []k8s.io/api/core/v1.TopologySpreadConstraint len: 0, cap: 0, nil,},
            Status: k8s.io/api/core/v1.PodStatus {
                    Phase: "Pending",
                    Conditions: []k8s.io/api/core/v1.PodCondition len: 0, cap: 0, nil,
                    Message: "",
                    Reason: "",
                    NominatedNodeName: "",
                    HostIP: "",
                    PodIP: "",
                    PodIPs: []k8s.io/api/core/v1.PodIP len: 0, cap: 0, nil,
                    StartTime: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    InitContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    ContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    QOSClass: "Burstable",
                    EphemeralContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284 (hits goroutine(188):2 total:2) (PC: 0xebbb80)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "34dcf318-82bf-44ca-a63d-e559f7462b6d",
            Job: "default/test-job",
            Name: "test-job-default-nginx-2",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "bogon",
            Status: Allocated (2),
            Priority: 0,
            VolumeReady: true,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400085f400),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400085f420),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x400085f518),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x400085f6f0),},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284 (hits goroutine(188):3 total:3) (PC: 0xebbb80)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "3b84997f-f761-4bbc-b949-f98d8d61a214",
            Job: "default/test-job",
            Name: "test-job-default-nginx-0",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "bogon",
            Status: Allocated (2),
            Priority: 0,
            VolumeReady: true,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400085ec00),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400085ec20),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x400085ed18),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x400085eef0),},}
    (dlv) 

    Statement Commit

    pkg/scheduler/framework/statement.go
    
    func (s *Statement) Commit() {
        for _, op := range s.operations {
            switch op.name {
            case Evict:
          ...
            case Pipeline:
                s.pipeline(op.task)
            case Allocate:
                err := s.allocate(op.task)
          ...
            }
        }
    }
    func (s *Statement) allocate(task *api.TaskInfo) error {
       if err := s.ssn.cache.BindVolumes(task); err != nil {
          return err
       }
    
       if err := s.ssn.cache.Bind(task, task.NodeName); err != nil {
          return err
       }
    
       ... // Update status in session
       return nil
    }
    [root@bogon delve]# dlv attach 38678
    Type 'help' for list of commands.
    (dlv) b Commit
    Breakpoint 1 (enabled) set at 0xebc7f0 for volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:370
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:370 (hits goroutine(188):1 total:1) (PC: 0xebc7f0)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000ebc7f0 in volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:370
    1  0x0000000000f09778 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:247
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) s
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:371 (PC: 0xebc7fc)
    Warning: debugging optimized function
    (dlv) n
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Commit() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:372 (PC: 0xebc82c)
    Warning: debugging optimized function
    (dlv) p s.operations
    []volcano.sh/volcano/pkg/scheduler/framework.operation len: 3, cap: 4, [
            {
                    name: 2,
                    task: *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40005a7780),
                    reason: "",},
            {
                    name: 2,
                    task: *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40005a7680),
                    reason: "",},
            {
                    name: 2,
                    task: *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40005a7600),
                    reason: "",},
    ]
    (dlv) p s.operations[0]
    volcano.sh/volcano/pkg/scheduler/framework.operation {
            name: 2,
            task: *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
                    UID: "23b04f91-4d17-43a9-8a1e-600107f0d9ac",
                    Job: "default/test-job",
                    Name: "test-job-default-nginx-4",
                    Namespace: "default",
                    Resreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911e60),
                    InitResreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911e80),
                    NodeName: "bogon",
                    Status: Allocated (2),
                    Priority: 0,
                    VolumeReady: true,
                    Pod: *(*"k8s.io/api/core/v1.Pod")(0x40005e2800),},
            reason: "",}
    (dlv) p s.operations[1]
    volcano.sh/volcano/pkg/scheduler/framework.operation {
            name: 2,
            task: *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
                    UID: "34dcf318-82bf-44ca-a63d-e559f7462b6d",
                    Job: "default/test-job",
                    Name: "test-job-default-nginx-2",
                    Namespace: "default",
                    Resreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911d60),
                    InitResreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911da0),
                    NodeName: "bogon",
                    Status: Allocated (2),
                    Priority: 0,
                    VolumeReady: true,
                    Pod: *(*"k8s.io/api/core/v1.Pod")(0x400085f400),},
            reason: "",}
    (dlv) p s.operations[1].Pod
    Command failed:  has no member Pod
    (dlv) p s.operations[1].task.Pod
    *k8s.io/api/core/v1.Pod {
            TypeMeta: k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta {Kind: "", APIVersion: ""},
            ObjectMeta: k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
                    Name: "test-job-default-nginx-2",
                    GenerateName: "",
                    Namespace: "default",
                    SelfLink: "/api/v1/namespaces/default/pods/test-job-default-nginx-2",
                    UID: "34dcf318-82bf-44ca-a63d-e559f7462b6d",
                    ResourceVersion: "2571667",
                    Generation: 0,
                    CreationTimestamp: (*"k8s.io/apimachinery/pkg/apis/meta/v1.Time")(0x400085f488),
                    DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    DeletionGracePeriodSeconds: *int64 nil,
                    Labels: map[string]string [...],
                    Annotations: map[string]string [...],
                    OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference")(0x40009b8c80),
                    ],
                    Finalizers: []string len: 0, cap: 0, nil,
                    ClusterName: "",
                    ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40009b8cd0),
                    ],},
            Spec: k8s.io/api/core/v1.PodSpec {
                    Volumes: []k8s.io/api/core/v1.Volume len: 3, cap: 4, [
                            (*"k8s.io/api/core/v1.Volume")(0x400085f800),
                            (*"k8s.io/api/core/v1.Volume")(0x400085f8f0),
                            (*"k8s.io/api/core/v1.Volume")(0x400085f9e0),
                    ],
                    InitContainers: []k8s.io/api/core/v1.Container len: 0, cap: 0, nil,
                    Containers: []k8s.io/api/core/v1.Container len: 1, cap: 1, [
                            (*"k8s.io/api/core/v1.Container")(0x400051e000),
                    ],
                    EphemeralContainers: []k8s.io/api/core/v1.EphemeralContainer len: 0, cap: 0, nil,
                    RestartPolicy: "OnFailure",
                    TerminationGracePeriodSeconds: *30,
                    ActiveDeadlineSeconds: *int64 nil,
                    DNSPolicy: "ClusterFirst",
                    NodeSelector: map[string]string nil,
                    ServiceAccountName: "default",
                    DeprecatedServiceAccount: "default",
                    AutomountServiceAccountToken: *bool nil,
                    NodeName: "",
                    HostNetwork: false,
                    HostPID: false,
                    HostIPC: false,
                    ShareProcessNamespace: *bool nil,
                    SecurityContext: *(*"k8s.io/api/core/v1.PodSecurityContext")(0x4000bb2930),
                    ImagePullSecrets: []k8s.io/api/core/v1.LocalObjectReference len: 0, cap: 0, nil,
                    Hostname: "test-job-default-nginx-2",
                    Subdomain: "test-job",
                    Affinity: *k8s.io/api/core/v1.Affinity nil,
                    SchedulerName: "volcano",
                    Tolerations: []k8s.io/api/core/v1.Toleration len: 2, cap: 2, [
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd3290),
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd32d8),
                    ],
                    HostAliases: []k8s.io/api/core/v1.HostAlias len: 0, cap: 0, nil,
                    PriorityClassName: "",
                    Priority: *0,
                    DNSConfig: *k8s.io/api/core/v1.PodDNSConfig nil,
                    ReadinessGates: []k8s.io/api/core/v1.PodReadinessGate len: 0, cap: 0, nil,
                    RuntimeClassName: *string nil,
                    EnableServiceLinks: *true,
                    PreemptionPolicy: *k8s.io/api/core/v1.PreemptionPolicy nil,
                    Overhead: k8s.io/api/core/v1.ResourceList nil,
                    TopologySpreadConstraints: []k8s.io/api/core/v1.TopologySpreadConstraint len: 0, cap: 0, nil,},
            Status: k8s.io/api/core/v1.PodStatus {
                    Phase: "Pending",
                    Conditions: []k8s.io/api/core/v1.PodCondition len: 0, cap: 0, nil,
                    Message: "",
                    Reason: "",
                    NominatedNodeName: "",
                    HostIP: "",
                    PodIP: "",
                    PodIPs: []k8s.io/api/core/v1.PodIP len: 0, cap: 0, nil,
                    StartTime: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    InitContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    ContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    QOSClass: "Burstable",
                    EphemeralContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,},}
    (dlv) p s.operations[1].name
    2
    (dlv) p s.operations[2]
    volcano.sh/volcano/pkg/scheduler/framework.operation {
            name: 2,
            task: *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
                    UID: "3b84997f-f761-4bbc-b949-f98d8d61a214",
                    Job: "default/test-job",
                    Name: "test-job-default-nginx-0",
                    Namespace: "default",
                    Resreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911ce0),
                    InitResreq: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x4000911d20),
                    NodeName: "bogon",
                    Status: Allocated (2),
                    Priority: 0,
                    VolumeReady: true,
                    Pod: *(*"k8s.io/api/core/v1.Pod")(0x400085ec00),},
            reason: "",}
    (dlv) b allocate
    Breakpoint 2 (enabled) set at 0xebbb80 for volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284 (hits goroutine(188):1 total:1) (PC: 0xebbb80)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "23b04f91-4d17-43a9-8a1e-600107f0d9ac",
            Job: "default/test-job",
            Name: "test-job-default-nginx-4",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "bogon",
            Status: Allocated (2),
            Priority: 0,
            VolumeReady: true,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x40005e2800),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x40005e2820),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x40005e2918),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x40005e2af0),},}
    (dlv) p task.Pod
    *k8s.io/api/core/v1.Pod {
            TypeMeta: k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta {Kind: "", APIVersion: ""},
            ObjectMeta: k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
                    Name: "test-job-default-nginx-4",
                    GenerateName: "",
                    Namespace: "default",
                    SelfLink: "/api/v1/namespaces/default/pods/test-job-default-nginx-4",
                    UID: "23b04f91-4d17-43a9-8a1e-600107f0d9ac",
                    ResourceVersion: "2571669",
                    Generation: 0,
                    CreationTimestamp: (*"k8s.io/apimachinery/pkg/apis/meta/v1.Time")(0x40005e2888),
                    DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    DeletionGracePeriodSeconds: *int64 nil,
                    Labels: map[string]string [...],
                    Annotations: map[string]string [...],
                    OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference")(0x40009b9040),
                    ],
                    Finalizers: []string len: 0, cap: 0, nil,
                    ClusterName: "",
                    ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 1, cap: 1, [
                            (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40009b9090),
                    ],},
            Spec: k8s.io/api/core/v1.PodSpec {
                    Volumes: []k8s.io/api/core/v1.Volume len: 3, cap: 4, [
                            (*"k8s.io/api/core/v1.Volume")(0x40005e3000),
                            (*"k8s.io/api/core/v1.Volume")(0x40005e30f0),
                            (*"k8s.io/api/core/v1.Volume")(0x40005e31e0),
                    ],
                    InitContainers: []k8s.io/api/core/v1.Container len: 0, cap: 0, nil,
                    Containers: []k8s.io/api/core/v1.Container len: 1, cap: 1, [
                            (*"k8s.io/api/core/v1.Container")(0x400051e2c0),
                    ],
                    EphemeralContainers: []k8s.io/api/core/v1.EphemeralContainer len: 0, cap: 0, nil,
                    RestartPolicy: "OnFailure",
                    TerminationGracePeriodSeconds: *30,
                    ActiveDeadlineSeconds: *int64 nil,
                    DNSPolicy: "ClusterFirst",
                    NodeSelector: map[string]string nil,
                    ServiceAccountName: "default",
                    DeprecatedServiceAccount: "default",
                    AutomountServiceAccountToken: *bool nil,
                    NodeName: "",
                    HostNetwork: false,
                    HostPID: false,
                    HostIPC: false,
                    ShareProcessNamespace: *bool nil,
                    SecurityContext: *(*"k8s.io/api/core/v1.PodSecurityContext")(0x4000bb2a10),
                    ImagePullSecrets: []k8s.io/api/core/v1.LocalObjectReference len: 0, cap: 0, nil,
                    Hostname: "test-job-default-nginx-4",
                    Subdomain: "test-job",
                    Affinity: *k8s.io/api/core/v1.Affinity nil,
                    SchedulerName: "volcano",
                    Tolerations: []k8s.io/api/core/v1.Toleration len: 2, cap: 2, [
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd33b0),
                            (*"k8s.io/api/core/v1.Toleration")(0x4000bd33f8),
                    ],
                    HostAliases: []k8s.io/api/core/v1.HostAlias len: 0, cap: 0, nil,
                    PriorityClassName: "",
                    Priority: *0,
                    DNSConfig: *k8s.io/api/core/v1.PodDNSConfig nil,
                    ReadinessGates: []k8s.io/api/core/v1.PodReadinessGate len: 0, cap: 0, nil,
                    RuntimeClassName: *string nil,
                    EnableServiceLinks: *true,
                    PreemptionPolicy: *k8s.io/api/core/v1.PreemptionPolicy nil,
                    Overhead: k8s.io/api/core/v1.ResourceList nil,
                    TopologySpreadConstraints: []k8s.io/api/core/v1.TopologySpreadConstraint len: 0, cap: 0, nil,},
            Status: k8s.io/api/core/v1.PodStatus {
                    Phase: "Pending",
                    Conditions: []k8s.io/api/core/v1.PodCondition len: 0, cap: 0, nil,
                    Message: "",
                    Reason: "",
                    NominatedNodeName: "",
                    HostIP: "",
                    PodIP: "",
                    PodIPs: []k8s.io/api/core/v1.PodIP len: 0, cap: 0, nil,
                    StartTime: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
                    InitContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    ContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,
                    QOSClass: "Burstable",
                    EphemeralContainerStatuses: []k8s.io/api/core/v1.ContainerStatus len: 0, cap: 0, nil,},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284 (hits goroutine(188):2 total:2) (PC: 0xebbb80)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "34dcf318-82bf-44ca-a63d-e559f7462b6d",
            Job: "default/test-job",
            Name: "test-job-default-nginx-2",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "bogon",
            Status: Allocated (2),
            Priority: 0,
            VolumeReady: true,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400085f400),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400085f420),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x400085f518),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x400085f6f0),},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Statement).allocate() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:284 (hits goroutine(188):3 total:3) (PC: 0xebbb80)
    Warning: debugging optimized function
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "3b84997f-f761-4bbc-b949-f98d8d61a214",
            Job: "default/test-job",
            Name: "test-job-default-nginx-0",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "bogon",
            Status: Allocated (2),
            Priority: 0,
            VolumeReady: true,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400085ec00),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400085ec20),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x400085ed18),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x400085eef0),},}
    (dlv) 

    node选择 PredicateNodes PrioritizeNode BestNodeFn

    [root@bogon delve]# dlv attach 38678
    Type 'help' for list of commands.
    (dlv) b PredicateNodes
    Breakpoint 1 (enabled) set at 0xf06870 for volcano.sh/volcano/pkg/scheduler/util.PredicateNodes() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:65
    (dlv) b PrioritizeNode
    Command failed: location "PrioritizeNode" not found
    (dlv) b PrioritizeNodes
    Breakpoint 2 (enabled) set at 0xf06c40 for volcano.sh/volcano/pkg/scheduler/util.PrioritizeNodes() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:121
    (dlv) b BestNodeFn
    Breakpoint 3 (enabled) set at 0xeb8c20 for volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428
    (dlv) b SelectBestNode
    Breakpoint 4 (enabled) set at 0xf075e0 for volcano.sh/volcano/pkg/scheduler/util.SelectBestNode() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:201
    (dlv) b Pipeline
    Command failed: Location "Pipeline" ambiguous: volcano.sh/volcano/pkg/scheduler/framework.(*Session).Pipeline, volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Pipeline…
    (dlv) b framework.(*Statement).Pipeline
    Breakpoint 5 (enabled) set at 0xeba3a0 for volcano.sh/volcano/pkg/scheduler/framework.(*Statement).Pipeline() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/statement.go:146
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/util.PredicateNodes() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:65 (hits goroutine(188):1 total:1) (PC: 0xf06870)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000f06870 in volcano.sh/volcano/pkg/scheduler/util.PredicateNodes
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:65
    1  0x0000000000f094d4 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:189
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) p task
    *volcano.sh/volcano/pkg/scheduler/api.TaskInfo {
            UID: "25653abe-1cc9-436b-b4a1-ba0039e78fd4",
            Job: "default/test-job",
            Name: "test-job-default-nginx-1",
            Namespace: "default",
            Resreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            InitResreq: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            NodeName: "",
            Status: Pending (1),
            Priority: 0,
            VolumeReady: false,
            Pod: *k8s.io/api/core/v1.Pod {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x4000d7fc00),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x4000d7fc20),
                    Spec: (*"k8s.io/api/core/v1.PodSpec")(0x4000d7fd18),
                    Status: (*"k8s.io/api/core/v1.PodStatus")(0x4000d7fef0),},}
    (dlv) p nodes
    []*volcano.sh/volcano/pkg/scheduler/api.NodeInfo len: 4, cap: 4, [
            *{
                    Name: "cloud",
                    Node: *(*"k8s.io/api/core/v1.Node")(0x40005dc000),
                    State: (*"volcano.sh/volcano/pkg/scheduler/api.NodeState")(0x4000624498),
                    Releasing: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aeb60),
                    Pipelined: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aeb80),
                    Idle: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aec20),
                    Used: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aebc0),
                    Allocatable: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aec60),
                    Capability: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aeca0),
                    Tasks: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.TaskInfo [...],
                    Others: map[string]interface {} nil,
                    GPUDevices: map[int]*volcano.sh/volcano/pkg/scheduler/api.GPUDevice [],},
            *{
                    Name: "ubuntu",
                    Node: *(*"k8s.io/api/core/v1.Node")(0x4000c3e300),
                    State: (*"volcano.sh/volcano/pkg/scheduler/api.NodeState")(0x4000624b18),
                    Releasing: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aeee0),
                    Pipelined: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aef00),
                    Idle: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009af020),
                    Used: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009aefa0),
                    Allocatable: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009af040),
                    Capability: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009af060),
                    Tasks: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.TaskInfo [...],
                    Others: map[string]interface {} nil,
                    GPUDevices: map[int]*volcano.sh/volcano/pkg/scheduler/api.GPUDevice [],},
            *{
                    Name: "bogon",
                    Node: *(*"k8s.io/api/core/v1.Node")(0x400000b500),
                    State: (*"volcano.sh/volcano/pkg/scheduler/api.NodeState")(0x400053a318),
                    Releasing: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae540),
                    Pipelined: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae560),
                    Idle: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae600),
                    Used: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae5a0),
                    Allocatable: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae620),
                    Capability: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae640),
                    Tasks: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.TaskInfo [...],
                    Others: map[string]interface {} nil,
                    GPUDevices: map[int]*volcano.sh/volcano/pkg/scheduler/api.GPUDevice [],},
            *{
                    Name: "centos7",
                    Node: *(*"k8s.io/api/core/v1.Node")(0x40005ddb00),
                    State: (*"volcano.sh/volcano/pkg/scheduler/api.NodeState")(0x400053b298),
                    Releasing: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae8a0),
                    Pipelined: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae8c0),
                    Idle: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae960),
                    Used: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae900),
                    Allocatable: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae980),
                    Capability: *(*"volcano.sh/volcano/pkg/scheduler/api.Resource")(0x40009ae9a0),
                    Tasks: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.TaskInfo [...],
                    Others: map[string]interface {} nil,
                    GPUDevices: map[int]*volcano.sh/volcano/pkg/scheduler/api.GPUDevice [],},
    ]
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/util.PrioritizeNodes() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:121 (hits goroutine(188):1 total:1) (PC: 0xf06c40)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000f06c40 in volcano.sh/volcano/pkg/scheduler/util.PrioritizeNodes
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:121
    1  0x0000000000f095a4 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:207
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428 (hits goroutine(188):1 total:1) (PC: 0xeb8c20)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000eb8c20 in volcano.sh/volcano/pkg/scheduler/framework.(*Session).BestNodeFn
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:428
    1  0x0000000000f095c4 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:209
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/util.SelectBestNode() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:201 (hits goroutine(188):1 total:1) (PC: 0xf075e0)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000f075e0 in volcano.sh/volcano/pkg/scheduler/util.SelectBestNode
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:201
    1  0x0000000000f09dcc in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:211
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/util.PredicateNodes() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:65 (hits goroutine(188):2 total:2) (PC: 0xf06870)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000f06870 in volcano.sh/volcano/pkg/scheduler/util.PredicateNodes
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/util/scheduler_helper.go:65
    1  0x0000000000f094d4 in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:189
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) 

    Queues

            podGroupStatus: map[volcano.sh/volcano/pkg/scheduler/api.JobID]volcano.sh/volcano/pkg/apis/scheduling.PodGroupStatus [],
            Jobs: map[volcano.sh/volcano/pkg/scheduler/api.JobID]*volcano.sh/volcano/pkg/scheduler/api.JobInfo [
                    "default/test-job": *(*"volcano.sh/volcano/pkg/scheduler/api.JobInfo")(0x40000140b0), 
            ],
            Nodes: map[string]*volcano.sh/volcano/pkg/scheduler/api.NodeInfo [
                    "centos7": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000174a00), 
                    "cloud": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000175180), 
                    "ubuntu": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x4000175f80), 
                    "bogon": *(*"volcano.sh/volcano/pkg/scheduler/api.NodeInfo")(0x400098a500), 
            ],
            Queues: map[volcano.sh/volcano/pkg/scheduler/api.QueueID]*volcano.sh/volcano/pkg/scheduler/api.QueueInfo [
                    "test": *(*"volcano.sh/volcano/pkg/scheduler/api.QueueInfo")(0x4000c24840), 
                    "default": *(*"volcano.sh/volcano/pkg/scheduler/api.QueueInfo")(0x4000c24870), 
            ],
            NamespaceInfo: map[volcano.sh/volcano/pkg/scheduler/api.NamespaceName]*volcano.sh/volcano/pkg/scheduler/api.NamespaceInfo [],
            Tiers: []volcano.sh/volcano/pkg/scheduler/conf.Tier len: 2, cap: 2, [
                    (*"volcano.sh/volcano/pkg/scheduler/conf.Tier")(0x400034ade0),
                    (*"volcano.sh/volcano/pkg/scheduler/conf.Tier")(0x400034adf8),
            ],
    (dlv) p ssn.Queues["test"]
    *volcano.sh/volcano/pkg/scheduler/api.QueueInfo {
            UID: "test",
            Name: "test",
            Weight: 1,
            Queue: *volcano.sh/volcano/pkg/apis/scheduling.Queue {
                    TypeMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta")(0x400044d600),
                    ObjectMeta: (*"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta")(0x400044d620),
                    Spec: (*"volcano.sh/volcano/pkg/apis/scheduling.QueueSpec")(0x400044d718),
                    Status: (*"volcano.sh/volcano/pkg/apis/scheduling.QueueStatus")(0x400044d740),},}
    (dlv) p ssn.Queues["test"].Queue.ObjectMeta
    k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
            Name: "test",
            GenerateName: "",
            Namespace: "",
            SelfLink: "/apis/scheduling.volcano.sh/v1beta1/queues/test",
            UID: "44ddd84e-6143-4714-aabb-6af4396d3f41",
            ResourceVersion: "1343999",
            Generation: 1,
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x400044d688),},
            DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
            DeletionGracePeriodSeconds: *int64 nil,
            Labels: map[string]string nil,
            Annotations: map[string]string [
                    "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"scheduling.volcano.sh/v1beta1","kind":"Queue","me...+105 more", 
            ],
            OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 0, cap: 0, nil,
            Finalizers: []string len: 0, cap: 0, nil,
            ClusterName: "",
            ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 2, cap: 2, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40003800a0),
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40003800f0),
            ],}
    (dlv) p ssn.Queues["test"].Queue.Spec
    volcano.sh/volcano/pkg/apis/scheduling.QueueSpec {
            Weight: 1,
            Capability: k8s.io/api/core/v1.ResourceList [
                    "cpu": (*"k8s.io/apimachinery/pkg/api/resource.Quantity")(0x4000224588), 
            ],
            State: "",
            Reclaimable: *false,}
    (dlv) p ssn.Queues["default"].Queue.Spec
    volcano.sh/volcano/pkg/apis/scheduling.QueueSpec {
            Weight: 1,
            Capability: k8s.io/api/core/v1.ResourceList nil,
            State: "",
            Reclaimable: *true,}
    (dlv) p ssn.Queues["default"].Queue.ObjectMeta
    k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta {
            Name: "default",
            GenerateName: "",
            Namespace: "",
            SelfLink: "/apis/scheduling.volcano.sh/v1beta1/queues/default",
            UID: "3ceaa093-3278-437e-831a-e5d6681cab27",
            ResourceVersion: "2578826",
            Generation: 1,
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x4001128a28),},
            DeletionTimestamp: *k8s.io/apimachinery/pkg/apis/meta/v1.Time nil,
            DeletionGracePeriodSeconds: *int64 nil,
            Labels: map[string]string nil,
            Annotations: map[string]string nil,
            OwnerReferences: []k8s.io/apimachinery/pkg/apis/meta/v1.OwnerReference len: 0, cap: 0, nil,
            Finalizers: []string len: 0, cap: 0, nil,
            ClusterName: "",
            ManagedFields: []k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry len: 2, cap: 2, [
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40007c08c0),
                    (*"k8s.io/apimachinery/pkg/apis/meta/v1.ManagedFieldsEntry")(0x40007c0910),
            ],}
    (dlv) p ssn.Jobs["default/test-job"]
    *volcano.sh/volcano/pkg/scheduler/api.JobInfo {
            UID: "default/test-job",
            Name: "test-job",
            Namespace: "default",
            Queue: "default",
            Priority: 0,
            MinAvailable: 3,
            NodesFitDelta: volcano.sh/volcano/pkg/scheduler/api.NodeResourceMap [],
            JobFitErrors: "",
            NodesFitErrors: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.FitErrors [],
            TaskStatusIndex: map[volcano.sh/volcano/pkg/scheduler/api.TaskStatus]volcano.sh/volcano/pkg/scheduler/api.tasksMap [],
            Tasks: volcano.sh/volcano/pkg/scheduler/api.tasksMap [],
            Allocated: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 0,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            TotalRequest: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 0,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x4000014138),},
            PodGroup: *volcano.sh/volcano/pkg/scheduler/api.PodGroup {
                    PodGroup: (*"volcano.sh/volcano/pkg/apis/scheduling.PodGroup")(0x400041a000),
                    Version: "v1beta1",},}
    (dlv) p ssn.Jobs["default/test-job"].Queue
    "default"

    优先级队列  namespaceOrderFns

    container/heap实现优先级队列

       namespaceOrderFns: map[string]volcano.sh/volcano/pkg/scheduler/api.CompareFn [
                    "drf": volcano.sh/volcano/pkg/scheduler/plugins/drf.(*drfPlugin).OnSessionOpen.func3, 
            ],
    func (alloc *Action) Execute(ssn *framework.Session) {
        klog.V(3).Infof("Enter Allocate ...")
        defer klog.V(3).Infof("Leaving Allocate ...")
    
        // the allocation for pod may have many stages
        // 1. pick a namespace named N (using ssn.NamespaceOrderFn)
        // 2. pick a queue named Q from N (using ssn.QueueOrderFn)
        // 3. pick a job named J from Q (using ssn.JobOrderFn)
        // 4. pick a task T from J (using ssn.TaskOrderFn)
        // 5. use predicateFn to filter out node that T can not be allocated on.
        // 6. use ssn.NodeOrderFn to judge the best node and assign it to T
    
        namespaces := util.NewPriorityQueue(ssn.NamespaceOrderFn)
    
        // jobsMap is map[api.NamespaceName]map[api.QueueID]PriorityQueue(*api.JobInfo)
        // used to find job with highest priority in given queue and namespace
        jobsMap := map[api.NamespaceName]map[api.QueueID]*util.PriorityQueue{}
    
        for _, job := range ssn.Jobs {
            if job.PodGroup.Status.Phase == scheduling.PodGroupPending {
                continue
            }
            if vr := ssn.JobValid(job); vr != nil && !vr.Pass {
                klog.V(4).Infof("Job <%s/%s> Queue <%s> skip allocate, reason: %v, message %v", job.Namespace, job.Name, job.Queue, vr.Reason, vr.Message)
                continue
            }
    
            if _, found := ssn.Queues[job.Queue]; !found {
                klog.Warningf("Skip adding Job <%s/%s> because its queue %s is not found",
                    job.Namespace, job.Name, job.Queue)
                continue
            }
    
            namespace := api.NamespaceName(job.Namespace)
            queueMap, found := jobsMap[namespace]
            if !found {
                namespaces.Push(namespace)
    
                queueMap = make(map[api.QueueID]*util.PriorityQueue)
                jobsMap[namespace] = queueMap
            }
    
            jobs, found := queueMap[job.Queue]
            if !found {
                jobs = util.NewPriorityQueue(ssn.JobOrderFn)
                queueMap[job.Queue] = jobs
            }
    
            klog.V(4).Infof("Added Job <%s/%s> into Queue <%s>", job.Namespace, job.Name, job.Queue)
            jobs.Push(job)
        }
    package util
    
    import (
        "container/heap"
    
        "volcano.sh/volcano/pkg/scheduler/api"
    )
    
    //PriorityQueue implements a scheduling queue.
    type PriorityQueue struct {
        queue priorityQueue
    }
    
    type priorityQueue struct {
        items  []interface{}
        lessFn api.LessFn
    }
    
    // NewPriorityQueue returns a PriorityQueue
    func NewPriorityQueue(lessFn api.LessFn) *PriorityQueue {
        return &PriorityQueue{
            queue: priorityQueue{
                items:  make([]interface{}, 0),
                lessFn: lessFn,
            },
        }
    }

    framework.(*Session).JobReady

    root@bogon ~]# dlv attach 50283 
    Type 'help' for list of commands.
    (dlv) b dispatch
    Command failed: Location "dispatch" ambiguous: github.com/emicklei/go-restful.(*Container).dispatch, volcano.sh/volcano/pkg/scheduler/framework.(*Session).dispatch…
    (dlv) b framework.(*Session).dispatch
    Breakpoint 1 (enabled) set at 0xeb5520 for volcano.sh/volcano/pkg/scheduler/framework.(*Session).dispatch() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session.go:310
    (dlv) b jobReady
    Command failed: location "jobReady" not found
    (dlv) b JobReady
    Breakpoint 2 (enabled) set at 0xeb78a0 for volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213 (hits goroutine(337):1 total:1) (PC: 0xeb78a0)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000eb78a0 in volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213
    1  0x0000000000f096fc in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:240
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) p obj
    interface {}(*volcano.sh/volcano/pkg/scheduler/api.JobInfo) *{
            UID: "default/test-job",
            Name: "test-job",
            Namespace: "default",
            Queue: "default",
            Priority: 0,
            MinAvailable: 3,
            NodesFitDelta: volcano.sh/volcano/pkg/scheduler/api.NodeResourceMap [],
            JobFitErrors: "",
            NodesFitErrors: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.FitErrors [],
            TaskStatusIndex: map[volcano.sh/volcano/pkg/scheduler/api.TaskStatus]volcano.sh/volcano/pkg/scheduler/api.tasksMap [
                    Pending (1): [...], 
                    Allocated (2): [...], 
            ],
            Tasks: volcano.sh/volcano/pkg/scheduler/api.tasksMap [
                    "85b6432c-5960-4d24-b9dc-028818830145": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d0e80), 
                    "a69afd83-8e3c-4ba6-83b5-c4166368fac1": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1100), 
                    "c7f50837-fdaa-4e3c-a583-ea679ec2a621": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1200), 
                    "04267fd7-3ffa-47e8-8e24-6b204994941f": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1300), 
                    "f7ccfd37-6c7c-4020-9b2b-51d1d134f17f": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1400), 
                    "8eb8ae0f-5583-4c46-8017-2f500fa397cb": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1480), 
            ],
            Allocated: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 1000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            TotalRequest: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 6000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x40007c6088),},
            PodGroup: *volcano.sh/volcano/pkg/scheduler/api.PodGroup {
                    PodGroup: (*"volcano.sh/volcano/pkg/apis/scheduling.PodGroup")(0x4000929040),
                    Version: "v1beta1",},}
    (dlv) s
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:214 (PC: 0xeb78b4)
    Warning: debugging optimized function
    (dlv) p obj.(*"volcano.sh/volcano/pkg/scheduler/api.JobInfo")
    Command failed: 1:7: expected type, found "volcano.sh/volcano/pkg/scheduler/api.JobInfo"
    (dlv) p obj.(*"volcano.sh/volcano/pkg/scheduler/api.JobInfo"{})
    Command failed: 1:7: expected type, found "volcano.sh/volcano/pkg/scheduler/api.JobInfo"
    (dlv) p obj.*(*"volcano.sh/volcano/pkg/scheduler/api.JobInfo")
    Command failed: 1:5: expected selector or type assertion, found '*'
    (dlv) p obj(*"volcano.sh/volcano/pkg/scheduler/api.JobInfo")
    Command failed: expression ""volcano.sh/volcano/pkg/scheduler/api.JobInfo"" (string) can not be dereferenced
    (dlv) p obj.(*"volcano.sh/volcano/pkg/scheduler/api.JobInfo")
    Command failed: 1:7: expected type, found "volcano.sh/volcano/pkg/scheduler/api.JobInfo"
    (dlv) p obj.("volcano.sh/volcano/pkg/scheduler/api.JobInfo)
    Command failed: 1:6: string literal not terminated
    (dlv) p obj.("volcano.sh/volcano/pkg/scheduler/api.JobInfo")
    Command failed: 1:6: expected type, found "volcano.sh/volcano/pkg/scheduler/api.JobInfo"
    (dlv) p obj.("*volcano.sh/volcano/pkg/scheduler/api.JobInfo")
    Command failed: 1:6: expected type, found "*volcano.sh/volcano/pkg/scheduler/api.JobInfo"
    (dlv) p obj["Tasks"]
    Command failed: expression "obj" (interface {}) does not support indexing
    (dlv) p obj.(type)
    Command failed: no type entry found, use 'types' for a list of valid types
    (dlv) s
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:215 (PC: 0xeb7944)
    Warning: debugging optimized function
    (dlv) p ssn.Tiers
    []volcano.sh/volcano/pkg/scheduler/conf.Tier len: 2, cap: 2, [
            {
                    Plugins: []volcano.sh/volcano/pkg/scheduler/conf.PluginOption len: 3, cap: 3, [
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x4000512000),
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x4000512070),
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x40005120e0),
                    ],},
            {
                    Plugins: []volcano.sh/volcano/pkg/scheduler/conf.PluginOption len: 5, cap: 5, [
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x400022a240),
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x400022a2b0),
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x400022a320),
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x400022a390),
                            (*"volcano.sh/volcano/pkg/scheduler/conf.PluginOption")(0x400022a400),
                    ],},
    ]
    (dlv) p ssn.Tiers[0].Plugins[0]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "priority",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) p ssn.Tiers[0].Plugins[1]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "gang",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) p ssn.Tiers[0].Plugins[2]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "conformance",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) p ssn.Tiers[0].Plugins[2].name
    Command failed:  has no member name
    (dlv) p ssn.Tiers[0].Plugins[2].Name
    "conformance"
    (dlv) p ssn.Tiers[1].Plugins[0].Name
    "drf"
    (dlv) p ssn.Tiers[1].Plugins[0]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "drf",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) p ssn.Tiers[1].Plugins[1]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "predicates",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) p ssn.Tiers[1].Plugins[2]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "proportion",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) p ssn.Tiers[1].Plugins[3]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "nodeorder",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) p ssn.Tiers[1].Plugins[4]
    volcano.sh/volcano/pkg/scheduler/conf.PluginOption {
            Name: "binpack",
            EnabledJobOrder: *true,
            EnabledNamespaceOrder: *true,
            EnabledJobReady: *true,
            EnabledJobPipelined: *true,
            EnabledTaskOrder: *true,
            EnabledPreemptable: *true,
            EnabledReclaimable: *true,
            EnabledQueueOrder: *true,
            EnabledPredicate: *true,
            EnabledBestNode: *true,
            EnabledNodeOrder: *true,
            Arguments: map[string]string nil,}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213 (hits goroutine(337):2 total:2) (PC: 0xeb78a0)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000eb78a0 in volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213
    1  0x0000000000f096fc in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:240
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) p obj
    interface {}(*volcano.sh/volcano/pkg/scheduler/api.JobInfo) *{
            UID: "default/test-job",
            Name: "test-job",
            Namespace: "default",
            Queue: "default",
            Priority: 0,
            MinAvailable: 3,
            NodesFitDelta: volcano.sh/volcano/pkg/scheduler/api.NodeResourceMap [],
            JobFitErrors: "",
            NodesFitErrors: map[volcano.sh/volcano/pkg/scheduler/api.TaskID]*volcano.sh/volcano/pkg/scheduler/api.FitErrors [],
            TaskStatusIndex: map[volcano.sh/volcano/pkg/scheduler/api.TaskStatus]volcano.sh/volcano/pkg/scheduler/api.tasksMap [
                    Pending (1): [...], 
                    Allocated (2): [...], 
            ],
            Tasks: volcano.sh/volcano/pkg/scheduler/api.tasksMap [
                    "85b6432c-5960-4d24-b9dc-028818830145": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d0e80), 
                    "a69afd83-8e3c-4ba6-83b5-c4166368fac1": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1100), 
                    "c7f50837-fdaa-4e3c-a583-ea679ec2a621": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1200), 
                    "04267fd7-3ffa-47e8-8e24-6b204994941f": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1300), 
                    "f7ccfd37-6c7c-4020-9b2b-51d1d134f17f": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1400), 
                    "8eb8ae0f-5583-4c46-8017-2f500fa397cb": *(*"volcano.sh/volcano/pkg/scheduler/api.TaskInfo")(0x40007d1480), 
            ],
            Allocated: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 2000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            TotalRequest: *volcano.sh/volcano/pkg/scheduler/api.Resource {
                    MilliCPU: 6000,
                    Memory: 0,
                    ScalarResources: map[k8s.io/api/core/v1.ResourceName]float64 nil,
                    MaxTaskNum: 0,},
            CreationTimestamp: k8s.io/apimachinery/pkg/apis/meta/v1.Time {
                    Time: (*time.Time)(0x40007c6088),},
            PodGroup: *volcano.sh/volcano/pkg/scheduler/api.PodGroup {
                    PodGroup: (*"volcano.sh/volcano/pkg/apis/scheduling.PodGroup")(0x4000929040),
                    Version: "v1beta1",},}
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213 (hits goroutine(337):3 total:3) (PC: 0xeb78a0)
    Warning: debugging optimized function
    (dlv) bt
    0  0x0000000000eb78a0 in volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213
    1  0x0000000000f096fc in volcano.sh/volcano/pkg/scheduler/actions/allocate.(*Action).Execute
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/actions/allocate/allocate.go:240
    2  0x0000000000ee6fe8 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:81
    3  0x0000000000ee7818 in volcano.sh/volcano/pkg/scheduler.(*Scheduler).runOnce-fm
       at /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/scheduler.go:69
    4  0x0000000000339ae4 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155
    5  0x0000000000338b54 in k8s.io/apimachinery/pkg/util/wait.BackoffUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156
    6  0x0000000000338ac8 in k8s.io/apimachinery/pkg/util/wait.JitterUntil
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
    7  0x0000000000338a28 in k8s.io/apimachinery/pkg/util/wait.Until
       at /usr/wulei/projects/src/volcano.sh/volcano/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:90
    8  0x0000000000073ff4 in runtime.goexit
       at /usr/local/go/src/runtime/asm_arm64.s:1148
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213 (hits goroutine(337):4 total:4) (PC: 0xeb78a0)
    Warning: debugging optimized function
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213 (hits goroutine(337):5 total:5) (PC: 0xeb78a0)
    Warning: debugging optimized function
    (dlv) c
    > volcano.sh/volcano/pkg/scheduler/framework.(*Session).JobReady() /usr/wulei/projects/src/volcano.sh/volcano/pkg/scheduler/framework/session_plugins.go:213 (hits goroutine(337):6 total:6) (PC: 0xeb78a0)
    Warning: debugging optimized function
    (dlv) c

     ssn.dispatch

    func (ssn *Session) Allocate(task *api.TaskInfo, hostname string) error {
        if err := ssn.cache.AllocateVolumes(task, hostname); err != nil {
            return err
        }
     
        // 这里这是更新task的状态。
        // Only update status in session
        job, found := ssn.Jobs[task.Job]
        if found {
            if err := job.UpdateTaskStatus(task, api.Allocated); err != nil {
                glog.Errorf("Failed to update task <%v/%v> status to %v in Session <%v>: %v",
                    task.Namespace, task.Name, api.Allocated, ssn.UID, err)
                return err
            }
        } else {
            glog.Errorf("Failed to found Job <%s> in Session <%s> index when binding.",
                task.Job, ssn.UID)
            return fmt.Errorf("failed to find job %s", task.Job)
        }
     
        task.NodeName = hostname
     
        if node, found := ssn.Nodes[hostname]; found {
            if err := node.AddTask(task); err != nil {
                glog.Errorf("Failed to add task <%v/%v> to node <%v> in Session <%v>: %v",
                    task.Namespace, task.Name, hostname, ssn.UID, err)
                return err
            }
            glog.V(3).Infof("After allocated Task <%v/%v> to Node <%v>: idle <%v>, used <%v>, releasing <%v>",
                task.Namespace, task.Name, node.Name, node.Idle, node.Used, node.Releasing)
        } else {
            glog.Errorf("Failed to found Node <%s> in Session <%s> index when binding.",
                hostname, ssn.UID)
            return fmt.Errorf("failed to find node %s", hostname)
        }
     
        //gang.go中有,这里是真正的绑定了,当jobReady时,调用dispatch函数对所有的Allocated的task进行绑定。
        // dispatch就在该函数的下面。内容也很直观,就是调用k8s的接口,真正的绑定pod
        if ssn.JobReady(job) {
            for _, task := range job.TaskStatusIndex[api.Allocated] {
                if err := ssn.dispatch(task); err != nil {                    // 如果job准备好了,就直接真正绑定所有准备好的任务??
                    glog.Errorf("Failed to dispatch task <%v/%v>: %v",
                        task.Namespace, task.Name, err)
                    return err
                }
            }
        }
     
        return nil
    }

    volcano代码分析

    Volcano 调度器源码分析(scheduler 03)

    部署自己的volcano

  • 相关阅读:
    STL源码剖析 真是一本好书
    消息映射与消息路由原理
    linux下无法正常打开pdf文件的解决方法
    [转载]Amazon's Dynamo 中文版
    [转载]NoSQL数据建模技术
    [转载]linuxkerneltuningfor500k
    YCSB初步介绍
    Lamport's Logical Clocks 和 Vector Clock
    googleperftools 试用
    [转载]Big List Of 20 Common Bottlenecks
  • 原文地址:https://www.cnblogs.com/dream397/p/15002075.html
Copyright © 2011-2022 走看看