У меня есть многопоточное приложение, которое выполняет нагрузку на процессор, которую я хочу запустить в Kubernetes. Узел, который я использую, имеет 56 ядер, и я установил запрос и ограничение в 2 ядра для моего модуля.
Поскольку он интенсивно использует процессор, обычно нет смысла иметь больше потоков, чем число ядер (с гиперпоточностью, возможно, в два раза больше потоков, чем ядер), поэтому я бы выделил 2-4 потока и вызвал бы это день.
Тем не менее, AFAIK, Kubernetes, не гарантирует сродства ядра, поэтому в худшем случае 2 ядра могут быть равномерно распределены по 56 ядрам, при этом каждое ядро будет работать в 2/56 раз параллельно. , Если это произойдет, и я выделю только 4 потока, то по крайней мере 52 из 56 ядер будут простаивать.
Если я правильно понимаю, эта проблема не уникальна для Kubernetes и относится к любой виртуализированной среде, где аппаратные ресурсы являются общими.
Какова наилучшая практика, когда речь идет о возможном наихудшем сценарии? Вы игнорируете это и предполагаете, что у вас высокая местность, или вы планируете худшее, или что-то среднее?