jobs
)的方式提交工作,每个 job 由包含着相同程序的一个或多个任务(tasks
)组成。每个 job 运行在一个 Borg cell
(一组机器集合管理单元) 上。site
。一个集群通常包括一个大规模的 cell 和许多小规模的测试或者特殊目的的 cells。尽量避免单点故障。SIGTERM
信号, 以便在被强制发送 SIGKILL
之前,可以有时间进行清理,保存状态,完成当前执行请求,拒绝新的请求。在实践中,规定时间有 80% 的可以正常处理信号。alloc
是可以运行在一个或多个 tasks 的机器上的一组预留资源。无论资源是否使用,资源仍分配。Allocs 可以被用于将来的 tasks 资源使用,在停止和启动 task 之间保留资源,并且可以将不同 jobs 的 tasks 聚集到同一台机器上。一个 alloc 的资源和机器上资源类似的方式处理,多个 tasks 运行在 alloc 上是共享资源的,如果一个 alloc 必须重新分配到另外一台主机,它的 tasks 也会同它一起重新被调度。alloc
集合和 job 很像,它是一组分配在多台机器上的预留资源。一旦创建一个 alloc 集合,就可以提交一个或多个 jobs 运行在其中。为简洁起见,通常使用 "task" 引用 alloc 或者一个顶级的 task(alloc 之外的 task) 和 "job" 来引用一个 job 或者 alloc 集合。priority
优先级,一个小的正整数。高优先级的 task 可以在牺牲较低优先级的 task 来获取资源,甚至是以抢占方式。 Borg 为不同用途定义不同的优先级:监控、生产、批处理和 best effort。Quota
配额被用于确定调度哪些 jobs。配额表示为一段时间内(通常为几个月)给定优先级的资源量(CPU、RAM、磁盘等)。这些值指定了用户的 job 在请求时间段内可以使用的最大资源量。配额检查是准入控制的一部分,配额不足情况下,job 会被拒绝调度。