Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Making k8s-cluster-simulator event-driven #208

Open
oza opened this issue Apr 15, 2019 · 0 comments
Open

Making k8s-cluster-simulator event-driven #208

oza opened this issue Apr 15, 2019 · 0 comments
Labels
api Area: API for users breaking change Importance: Design and implementations that break existing user programs enhancement Category: Enhancement on existing features implementation Area: Internal implementation of the simulator needs decision Importance: in need of decision performance Category: Problems and improvement on simulator performance

Comments

@oza
Copy link

oza commented Apr 15, 2019

Currently, the k8s-cluster-simulator is designed as a time-driven simulator (using a variable, tick, as a time). The simplicity of the design is nice :-) This design, however, might cause some difficulties when simulating:

  1. Some events, like node failures, are not guaranteed to occur at regular intervals. If an event happens between ticks, it has to be postponed until the next tick.
  2. As a workaround of 1, we can make the tick value smaller. This can cause additional useless ticks. The result is a longer simulation time.

To address the difficulties, this issue proposes to make the simulator event-driven instead of time-driven one. The event-driven simulator can skip useless ticks since it only handles events (an element to change state) instead of handling periodic ticks. Events include a scheduler’s scheduling , node addition/deletion, submitter’s job submission/cancellation, and so on. One deficit of the proposal I recognize is complexity - I don’t know whether it fits in the current simulator’s design. So, do you have any comments about the point?

For the purpose of reference, I implemented a basic data structure, evseq, for an event-driven simulator. I hope that this sample pseudo main loop helps our discussion.

@ordovicia ordovicia added enhancement Category: Enhancement on existing features api Area: API for users breaking change Importance: Design and implementations that break existing user programs implementation Area: Internal implementation of the simulator lowest-level abst Area: Lowest-level scheduler abstraction needs decision Importance: in need of decision performance Category: Problems and improvement on simulator performance queue Area: Pending pod queue submitter Area: Pod submitters and removed lowest-level abst Area: Lowest-level scheduler abstraction queue Area: Pending pod queue submitter Area: Pod submitters labels Apr 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Area: API for users breaking change Importance: Design and implementations that break existing user programs enhancement Category: Enhancement on existing features implementation Area: Internal implementation of the simulator needs decision Importance: in need of decision performance Category: Problems and improvement on simulator performance
Projects
None yet
Development

No branches or pull requests

2 participants