elastic-gpu-scheduler icon indicating copy to clipboard operation
elastic-gpu-scheduler copied to clipboard

gpu-core分配策略

Open Ilcyb opened this issue 2 years ago • 1 comments

对于gpu-core分配策略的设计有不解之处

阅读scheduler和agent的代码后发现在agent中通过这段代码把pod获得的设备传入:

	if len(devicesIDs) > 100 {
		for i := 0; i < len(devicesIDs)/100; i++ {
			devices = append(devices, &pluginapi.DeviceSpec{
				ContainerPath: fmt.Sprintf("/host/dev/elastic-gpu-%s-%d", faker, i),
				HostPath:      fmt.Sprintf("/dev/elastic-gpu-%s-%d", faker, i),
				Permissions:   "rwm",
			})
		}
	}

在当前设计下,如果某节点有3张GPU,有2个elasticgpu.io/gpu-core为150的pod都被调度到该节点,那么调度器会给这两个pod都只挂载一张显卡。此时该节点的gpu-core资源已经是300/300,不会再有其他需要gpu-core资源的pod会被调度到该节点,但该节点上只有两张显卡被挂载利用起来,还有一张显卡处于空置状态。

我想了解一下这是设计的Bug还是特意设计成这样的呢?

Ilcyb avatar Aug 04 '22 07:08 Ilcyb

100 后是转变为整卡分配模式,也即需要指定为 100 的整数倍。150代表1张卡,剩余50确实是被调度器占了。我在下个版本加个 validation 判断。

xiaoxubeii avatar Nov 21 '22 08:11 xiaoxubeii