一个kubernetes应用程序有多少个线程?

问题描述 投票:0回答:1

我有一个多线程应用程序,它执行我想在Kubernetes上运行的CPU密集型任务。我正在使用的节点有56个核心,我为pod设置了一个请求,并限制了2个核心。

由于它是CPU密集型设备,因此通常没有更多的线程可以使用比内核数量更多的线程(具有超线程功能,可能是内核数量的两倍),所以我要分配2-4个线程并每天调用它。

但是,AFAIK,Kubernetes不能保证核心亲和力,因此在最坏的情况下,两个核心可以平均分配到56个核心中,每个核心并行工作的时间为第56个的56%。如果发生这种情况,而我仅分配了4个线程,则56个内核中至少有52个处于空闲状态。

如果我正确理解,则此问题并非Kubernetes所独有,并且适用于共享硬件资源的任何虚拟化环境。

关于处理这种潜在的最坏情况的最佳实践是什么?您是否忽略它并假设您具有较高的本地性,还是计划最坏的情况,或者介于两者之间?

kubernetes virtualization cgroups
1个回答
0
投票

线程调度取决于包括亲和力在内的操作系统,Kubernetes通常不会对其产生影响。如果这对您的工作负载很重要-您可以在k8s中尝试Static policy以为您的应用获取专用的CPU内核。

您可以使用pod CPU限制56,并运行56个线程来利用所有节点核心。假设此节点上的所有其他Pod使用正确的CPU请求,这不会对其他Pod产生负面影响。

© www.soinside.com 2019 - 2024. All rights reserved.