我知道任务管理器可以有多个任务槽。
但是,什么是任务槽?是JVM进程、内存中的对象还是线程?
我知道任务管理器可以有多个任务槽。
但是,什么是任务槽?是JVM进程、内存中的对象还是线程?
每个工作进程(TaskManager)都是一个JVM进程,并且可以在单独的线程中执行一个或多个子任务。为了控制工作进程接受多少任务,工作进程有所谓的任务槽(至少一个)。
TaskSlot 是一个线程
默认情况下,TaskSlot 不等于 Thread。只有在禁用插槽共享时,TaskSlot = Thread。插槽共享是一种默认开启的优化,大多数情况下,您应该保持这种状态。更准确地说,每个操作器链都会为其执行生成单独的线程[1]。
TS 表示 TM 的固定资源子集
这并不是事实。任务插槽仅仅是一个调度概念,它可以控制在哪个任务管理器上放置多少个操作器或操作器链。没有保证将一组固定的资源分配给任务插槽。例如,如果您有一个具有 5 个内核和 5GB RAM 的任务管理器,分配了两个任务插槽,那么这些插槽将“竞争”CPU和内存 - 它们不会以任何固定的方式划分。
槽位数量通常与每个TaskManager可用CPU核心数成比例。作为一般建议,可用CPU核心数是taskmanager.numberOfTaskSlots的良好默认值。