Benchmark test for PodAffinity

This commit is contained in:
Wei Huang
2019-09-17 20:23:20 -07:00
parent ef69b488bd
commit e85473c2df
5 changed files with 235 additions and 7 deletions

View File

@@ -1682,7 +1682,7 @@ func BenchmarkTestGetTPMapMatchingSpreadConstraints(b *testing.B) {
}
for _, tt := range tests {
b.Run(tt.name, func(b *testing.B) {
existingPods, allNodes, _ := st.MakeNodesAndPods(tt.pod, tt.existingPodsNum, tt.allNodesNum, tt.filteredNodesNum)
existingPods, allNodes, _ := st.MakeNodesAndPodsForEvenPodsSpread(tt.pod, tt.existingPodsNum, tt.allNodesNum, tt.filteredNodesNum)
nodeNameToInfo := schedulernodeinfo.CreateNodeNameToInfoMap(existingPods, allNodes)
b.ResetTimer()
for i := 0; i < b.N; i++ {

View File

@@ -483,7 +483,7 @@ func BenchmarkTestCalculateEvenPodsSpreadPriority(b *testing.B) {
}
for _, tt := range tests {
b.Run(tt.name, func(b *testing.B) {
existingPods, allNodes, filteredNodes := st.MakeNodesAndPods(tt.pod, tt.existingPodsNum, tt.allNodesNum, tt.filteredNodesNum)
existingPods, allNodes, filteredNodes := st.MakeNodesAndPodsForEvenPodsSpread(tt.pod, tt.existingPodsNum, tt.allNodesNum, tt.filteredNodesNum)
nodeNameToInfo := schedulernodeinfo.CreateNodeNameToInfoMap(existingPods, allNodes)
b.ResetTimer()
for i := 0; i < b.N; i++ {

View File

@@ -25,6 +25,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
st "k8s.io/kubernetes/pkg/scheduler/testing"
)
type FakeNodeListInfo []*v1.Node
@@ -612,3 +613,57 @@ func TestHardPodAffinitySymmetricWeight(t *testing.T) {
})
}
}
func BenchmarkInterPodAffinityPriority(b *testing.B) {
tests := []struct {
name string
pod *v1.Pod
existingPodsNum int
allNodesNum int
prepFunc func(existingPodsNum, allNodesNum int) (existingPods []*v1.Pod, allNodes []*v1.Node)
}{
{
name: "1000nodes/incoming pod without PodAffinity and existing pods without PodAffinity",
pod: st.MakePod().Name("p").Label("foo", "").Obj(),
existingPodsNum: 10000,
allNodesNum: 1000,
prepFunc: st.MakeNodesAndPods,
},
{
name: "1000nodes/incoming pod with PodAffinity and existing pods without PodAffinity",
pod: st.MakePod().Name("p").Label("foo", "").PodAffinityExists("foo", "zone", st.PodAffinityWithPreferredReq).Obj(),
existingPodsNum: 10000,
allNodesNum: 1000,
prepFunc: st.MakeNodesAndPods,
},
{
name: "1000nodes/incoming pod without PodAffinity and existing pods with PodAffinity",
pod: st.MakePod().Name("p").Label("foo", "").Obj(),
existingPodsNum: 10000,
allNodesNum: 1000,
prepFunc: st.MakeNodesAndPodsForPodAffinity,
},
{
name: "1000nodes/incoming pod with PodAffinity and existing pods with PodAffinity",
pod: st.MakePod().Name("p").Label("foo", "").PodAffinityExists("foo", "zone", st.PodAffinityWithPreferredReq).Obj(),
existingPodsNum: 10000,
allNodesNum: 1000,
prepFunc: st.MakeNodesAndPodsForPodAffinity,
},
}
for _, tt := range tests {
b.Run(tt.name, func(b *testing.B) {
existingPods, allNodes := tt.prepFunc(tt.existingPodsNum, tt.allNodesNum)
nodeNameToInfo := schedulernodeinfo.CreateNodeNameToInfoMap(existingPods, allNodes)
interPodAffinity := InterPodAffinity{
info: FakeNodeListInfo(allNodes),
hardPodAffinityWeight: v1.DefaultHardPodAffinitySymmetricWeight,
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
interPodAffinity.CalculateInterPodAffinityPriority(tt.pod, nodeNameToInfo, allNodes)
}
})
}
}