mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-10 13:42:02 +00:00
Merge pull request #88318 from mborsz/bench
Add BenchmarkSchedulingWaitForFirstConsumerPVs benchmark
This commit is contained in:
@@ -128,6 +128,25 @@ func BenchmarkSchedulingInTreePVs(b *testing.B) {
|
||||
}
|
||||
}
|
||||
|
||||
// BenchmarkSchedulingWaitForFirstConsumerPVs benchmarks the scheduling rate
|
||||
// of pods with volumes with VolumeBindingMode set to WaitForFirstConsumer.
|
||||
func BenchmarkSchedulingWaitForFirstConsumerPVs(b *testing.B) {
|
||||
tests := []struct{ nodes, existingPods, minPods int }{
|
||||
{nodes: 500, existingPods: 500, minPods: 1000},
|
||||
// default 5000 existingPods is a way too much for now
|
||||
}
|
||||
basePod := makeBasePod()
|
||||
testStrategy := testutils.NewCreatePodWithPersistentVolumeWithFirstConsumerStrategy(gceVolumeFactory, basePod)
|
||||
nodeStrategy := testutils.NewLabelNodePrepareStrategy(v1.LabelZoneFailureDomain, "zone1")
|
||||
for _, test := range tests {
|
||||
name := fmt.Sprintf("%vNodes/%vPods", test.nodes, test.existingPods)
|
||||
b.Run(name, func(b *testing.B) {
|
||||
nodeStrategies := []testutils.CountToStrategy{{Count: test.nodes, Strategy: nodeStrategy}}
|
||||
benchmarkScheduling(test.existingPods, test.minPods, nodeStrategies, testStrategy, b)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// BenchmarkSchedulingMigratedInTreePVs benchmarks the scheduling rate of pods with
|
||||
// in-tree volumes (used via PV/PVC) that are migrated to CSI. CSINode instances exist
|
||||
// for all nodes and have proper annotation that AWS is migrated.
|
||||
@@ -557,6 +576,42 @@ func awsVolumeFactory(id int) *v1.PersistentVolume {
|
||||
}
|
||||
}
|
||||
|
||||
func gceVolumeFactory(id int) *v1.PersistentVolume {
|
||||
return &v1.PersistentVolume{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: fmt.Sprintf("vol-%d", id),
|
||||
},
|
||||
Spec: v1.PersistentVolumeSpec{
|
||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany},
|
||||
Capacity: v1.ResourceList{
|
||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("1Gi"),
|
||||
},
|
||||
PersistentVolumeReclaimPolicy: v1.PersistentVolumeReclaimRetain,
|
||||
PersistentVolumeSource: v1.PersistentVolumeSource{
|
||||
GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
|
||||
FSType: "ext4",
|
||||
PDName: fmt.Sprintf("vol-%d-pvc", id),
|
||||
},
|
||||
},
|
||||
NodeAffinity: &v1.VolumeNodeAffinity{
|
||||
Required: &v1.NodeSelector{
|
||||
NodeSelectorTerms: []v1.NodeSelectorTerm{
|
||||
{
|
||||
MatchExpressions: []v1.NodeSelectorRequirement{
|
||||
{
|
||||
Key: v1.LabelZoneFailureDomain,
|
||||
Operator: v1.NodeSelectorOpIn,
|
||||
Values: []string{"zone1"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func csiVolumeFactory(id int) *v1.PersistentVolume {
|
||||
return &v1.PersistentVolume{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
|
@@ -61,8 +61,10 @@ func mustSetupScheduler() (util.ShutdownFunc, coreinformers.PodInformer, clients
|
||||
Burst: 5000,
|
||||
})
|
||||
_, podInformer, schedulerShutdown := util.StartScheduler(clientSet)
|
||||
fakePVControllerShutdown := util.StartFakePVController(clientSet)
|
||||
|
||||
shutdownFunc := func() {
|
||||
fakePVControllerShutdown()
|
||||
schedulerShutdown()
|
||||
apiShutdown()
|
||||
}
|
||||
|
Reference in New Issue
Block a user