cpu_slot_preemption
- 如果为
true(默认值) ,则按实际消耗的 CPU 时间进行核算。系统会在相互竞争的 workload 之间公平分配 CPU 时间。CPU 插槽仅分配一段有限时间,到期后需要重新申请。在 CPU 资源过载时,申请插槽可能会阻塞线程执行,即可能发生抢占。这可确保 CPU 时间分配的公平性。 - 如果为
false,则按已分配的 CPU 插槽数量进行核算。系统会在相互竞争的 workload 之间公平分配 CPU 插槽。线程启动时会分配一个插槽,并在整个执行期间持续持有,直到线程结束时才释放。用于查询执行的线程数只能从 1 增加到max_threads,不会减少。这种方式更有利于长时间运行的查询,但可能导致短查询出现 CPU 饥饿。
cpu_slot_preemption_timeout_ms
cpu_slot_preemption 且为 WORKER THREAD 定义了 CPU resource 时,此设置才有意义。
示例
cpu_slot_quantum_ns
cpu_slot_preemption,且为 MASTER THREAD 或 WORKER THREAD 定义了 CPU 资源时,此设置才有意义。
示例