-
Notifications
You must be signed in to change notification settings - Fork 2.9k
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
Add throughput distribution and coarse datapoints for StressWorkerBench #18149
Conversation
…ghput metric, calculate throughput percentiles
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for the work! I left some comments :)
dora/job/server/src/main/java/alluxio/job/plan/stress/StressBenchDefinition.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchCoarseDataPoint.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchCoarseDataPoint.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchCoarseDataPoint.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchCoarseDataPoint.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchTaskResult.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchTaskResult.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchParameters.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchParameters.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchParameters.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added a few more comments. I think it's good to merge after our comments are resolved. Thanks for the work!
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchCoarseDataPoint.java
Outdated
Show resolved
Hide resolved
dora/stress/common/src/main/java/alluxio/stress/worker/WorkerBenchCoarseDataPoint.java
Outdated
Show resolved
Hide resolved
WorkerBenchCoarseDataPoint dp = new WorkerBenchCoarseDataPoint( | ||
Long.parseLong(workerID), | ||
Thread.currentThread().getId(), | ||
new ArrayList<>(), new ArrayList<>()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
new ArrayList<>(), new ArrayList<>()); | |
new ArrayList<>(), new ArrayList<>()); |
are you going to use these lists and add to them? It's better if you just init empty lists internally.
public WorkerBenchCoarseDataPoint(long, long) {
xxx = new ArrayList<>();
xxx = new ArrayList<>();
}
Kinda weird if you create a list, and give it to someone, you and that someone both hold the list and can add to it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I agree. There are two places creating a WorkerBenchCoarseDataPoint
. One in the bench (without data and throughput arrays), and another in the deserializer (with data and throughput arrays). I will write two different constructors for them.
if (startMs > 0) { | ||
if (bytesRead > 0) { | ||
mResult.setIOBytes(mResult.getIOBytes() + bytesRead); | ||
throughputList.add(bytesRead / duration); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok let's change it to ns-based in another PR. The problem with ms is the error on the clock. If an operation is longer than 1ms then you may still observe the same ms value in some extreme cases. I don't really care what the smallest unit is, I just don't want DividedByZeroException.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks
alluxio-bot, merge this please |
For random reads, bytes read per file is not a constant any more. In spite of existing duration distribution, need a throughput distribution for better understanding of reading performance.
Also, when duration too long, grpc will receive huge size of output data. Should aggregate data points to transfer more datapoints with limited output size.
Group datapoints by threads and time slices:
Example:
Slice time with
--slice-size
flag, e.g.--slice-size 1s
.