Commit Graph

12 Commits

Author SHA1 Message Date
Bobby (Babak) Salamat
4386751b5d
Revert "Revert revert of equivalence class hash calculation in scheduler" 2018-03-23 17:34:49 -07:00
Harry Zhang
4e5901f947 Fixe golints of equiv class 2018-03-04 17:12:09 -08:00
Harry Zhang
c292af8f7b Use const in equiv class 2018-03-04 14:35:57 -08:00
Jonathan Basseri
f5ab6d5ad4 [PATCH] Fix equiv. cache invalidation of Node condition.
Equivalence cache for CheckNodeConditionPred becomes invalid when
Node.Spec.Unschedulable changes. This can happen even if
Node.Status.Conditions does not change, so move the logic around.

This logic is covered by integration test
"test/integration/scheduler".TestUnschedulableNodes but equivalence
cache is currently skipped when test pods have no OwnerReference.

Add benchmark for equivalence hashing.

Change equivalence hash function.

This changes the equivalence class hashing function to use as inputs all
the Pod fields which are read by FitPredicates. Before we used a
combination of OwnerReference and PersistentVolumeClaim info, which was
a close approximation. The new method ensures that hashing remains
correct regardless of controller behavior.

The PVCSet field can be removed from equivalencePod because it is
implicitly included in the Volume list.

Tests are now broken.

Move equivalence class hash code.

This moves the equivalence hashing code from
algorithm/predicates/utils.go to core/equivalence_cache.go.

In the process, making the hashing function and hashing function factory
both injectable dependencies is removed.

Fix equivalence cache hash tests.

Co-authored-by: Jonathan Basseri <misterikkit@google.com>
Co-authored-by: Harry Zhang <resouer@gmail.com>
2018-03-04 13:02:28 -08:00
Kubernetes Submit Queue
ab2e1cb02a
Merge pull request #59479 from tossmilestone/avoid-ecahe-update-race
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Avoid race condition when updating equivalence cache

**What this PR does / why we need it**:
Lock the ecache to update the ecache on each predicate running, to avoid race condition.

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fix #58507 

**Special notes for your reviewer**:
None

**Release note**:

```release-note
None
```
2018-02-12 16:38:07 -08:00
tossmilestone
e155582662 Avoid race condition when updating equivalence cache. 2018-02-09 16:26:41 +08:00
tossmilestone
3fdacfead5 Fix golint errors in pkg/scheduler based on golint check 2018-02-08 15:22:47 +08:00
Harry Zhang
482dc31937 Ensure euqiv hash calculation per schedule 2018-02-06 14:42:39 -08:00
Bobby (Babak) Salamat
2274e93b64
Revert "Change equivalence class hashing function" 2018-01-26 18:13:15 -08:00
Jonathan Basseri
e9a3815a6c Fix equivalence cache hash tests. 2018-01-24 17:15:42 -08:00
Jonathan Basseri
466a499fcb Move equivalence class hash code.
This moves the equivalence hashing code from
algorithm/predicates/utils.go to core/equivalence_cache.go.

In the process, making the hashing function and hashing function factory
both injectable dependencies is removed.
2018-01-24 17:15:42 -08:00
Jonathan Basseri
30b89d830b Move scheduler code out of plugin directory.
This moves plugin/pkg/scheduler to pkg/scheduler and
plugin/cmd/kube-scheduler to cmd/kube-scheduler.

Bulk of the work was done with gomvpkg, except for kube-scheduler main
package.
2018-01-05 15:05:01 -08:00