Experimental change to solve performance overshooting issue#1286
Experimental change to solve performance overshooting issue#1286sunshine-Chun wants to merge 1 commit into
Conversation
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
| auto active_tasks = | ||
| (current_target == 0) ? num_tasks : (current_speed / current_target); | ||
|
|
||
| active_tasks = num_tasks; |
There was a problem hiding this comment.
The issue here is the calculation of active tasks is not correct. Let's say, the current_target is 700MB/S, and the current_speed is 900MB/S. Then the active_tasks will be 1.
According to the calculation for task_target below, the task target will be 700MB/s.
auto task_target = target_speed / active_tasks;
The task_target will be used as the current_target of next call of this task_target() function. Hence, it will go over the above calculation again and the task target speed will not be updated at all.
Since the max speed capacity for each thread is around 450MB/s, it will never throttle the thread. (Because it's always smaller than the target task speed 700MB/s).
For the change I made, I assume all threads created are active.
There was a problem hiding this comment.
Why InnoDB clone does not exhibit the issue?
Summary:
This is a experimental change to solve the performance overshooting issue. The full change need to change the number of function parameters for several functions. Will apply the changes after we reach an agreement to make this change.
Test Plan:
Reviewers:
Subscribers:
Tasks:
Tags: