Docker Swarm跨栈GPU资源锁定方案咨询
单节点Docker Swarm跨栈GPU访问锁定方案咨询
我在单节点Docker Swarm集群中运行了多个逻辑完全独立的同类型stack实例,这些实例需保持独立stack状态。它们唯一共享的资源是GPU,部分pod会不定期需要使用GPU。若多个pod同时访问GPU,通常会触发OOM异常,虽影响不大但不符合预期。
现咨询:有哪些简洁高效的跨栈GPU访问锁定方案?
我目前考虑的方案如下:
一、锁文件
在栈和pod间共享卷,pod使用GPU时写入锁文件。
优点
- 实现简单
- 易于适配多GPU/其他资源场景
- 易实现租期/超时机制
缺点
- 无法适配未来可能扩展的多节点Swarm集群
二、数据库
部署额外数据库服务(如Redis)供所有pod访问。
优点
- 易于适配多GPU/其他资源场景
- 易实现租期/超时机制
- 支持多节点Swarm集群
缺点
- 增加应用技术依赖
- 需额外维护该服务
- 提升Swarm网络复杂度
三、不锁定,仅检查GPU内存
该方案可行,但存在并发风险:若两个服务同时启动并检查GPU内存,均判定GPU空闲后同时使用,会导致崩溃。虽影响有限,但体验不佳。
内容的提问来源于stack exchange,提问作者Johannes Bauer
相关产品推荐
相关产品推荐

