[
https://issues.apache.org/jira/browse/HDFS-16949?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17702455#comment-17702455
]
ASF GitHub Bot commented on HDFS-16949:
---------------------------------------
rdingankar opened a new pull request, #5495:
URL: https://github.com/apache/hadoop/pull/5495
…ic value is better
<!--
Thanks for sending a pull request!
1. If this is your first time, please read our contributor guidelines:
https://cwiki.apache.org/confluence/display/HADOOP/How+To+Contribute
2. Make sure your PR title starts with JIRA issue id, e.g.,
'HADOOP-17799. Your PR title ...'.
-->
### Description of PR
Currently quantiles are used for latencies, where lower numeric value is
better.
Hence p90 gives us a value val(p90) such that 90% of our sample set has a
value better (lower) than val(p90)
However for metrics such as calculating transfer rates (eg :
[HDFS-16917](https://issues.apache.org/jira/browse/HDFS-16917) ) higher numeric
value is better. Thus for such metrics the current quantiles dont work.
For these metrics in order for p90 to give a value val(p90) where 90% of the
sample set is better (higher) than val(p90) we need to inverse the selection by
choosing a value at the (100 - 90)th location instead of the usual 90th
position.
Note: There will be error guarantees for percentiles as our quantile
implementation following [Cormode, Korn, Muthukrishnan, and Srivastava
algorithm](http://dimacs.rutgers.edu/~graham/pubs/papers/bquant-icde.pdf)
### How was this patch tested?
Results from UT testInverseQuantiles()
Starting run 0
Expected 50000 with error 5000, estimated 50502
Expected 75000 with error 2500, estimated 75136
Expected 90000 with error 1000, estimated 90052
Expected 95000 with error 500, estimated 95029
Expected 99000 with error 100, estimated 98993
Starting run 1
Expected 50000 with error 5000, estimated 50796
Expected 75000 with error 2500, estimated 75150
Expected 90000 with error 1000, estimated 89978
Expected 95000 with error 500, estimated 94993
Expected 99000 with error 100, estimated 99000
Starting run 2
Expected 50000 with error 5000, estimated 50743
Expected 75000 with error 2500, estimated 75299
Expected 90000 with error 1000, estimated 90112
Expected 95000 with error 500, estimated 95044
Expected 99000 with error 100, estimated 99002
Starting run 3
Expected 50000 with error 5000, estimated 51313
Expected 75000 with error 2500, estimated 75495
Expected 90000 with error 1000, estimated 90003
Expected 95000 with error 500, estimated 95048
Expected 99000 with error 100, estimated 99002
Starting run 4
Expected 50000 with error 5000, estimated 50258
Expected 75000 with error 2500, estimated 75208
Expected 90000 with error 1000, estimated 90091
Expected 95000 with error 500, estimated 94990
Expected 99000 with error 100, estimated 99005
Starting run 5
Expected 50000 with error 5000, estimated 50718
Expected 75000 with error 2500, estimated 75308
Expected 90000 with error 1000, estimated 90028
Expected 95000 with error 500, estimated 95020
Expected 99000 with error 100, estimated 99007
Starting run 6
Expected 50000 with error 5000, estimated 50203
Expected 75000 with error 2500, estimated 75368
Expected 90000 with error 1000, estimated 90047
Expected 95000 with error 500, estimated 95024
Expected 99000 with error 100, estimated 99006
Starting run 7
Expected 50000 with error 5000, estimated 50423
Expected 75000 with error 2500, estimated 75196
Expected 90000 with error 1000, estimated 90064
Expected 95000 with error 500, estimated 95005
Expected 99000 with error 100, estimated 99010
Starting run 8
Expected 50000 with error 5000, estimated 50380
Expected 75000 with error 2500, estimated 75311
Expected 90000 with error 1000, estimated 90028
Expected 95000 with error 500, estimated 95002
Expected 99000 with error 100, estimated 98999
Starting run 9
Expected 50000 with error 5000, estimated 50548
Expected 75000 with error 2500, estimated 75366
Expected 90000 with error 1000, estimated 90079
Expected 95000 with error 500, estimated 95010
Expected 99000 with error 100, estimated 98994
### For code changes:
- [ ] Does the title or this PR starts with the corresponding JIRA issue id
(e.g. 'HADOOP-17799. Your PR title ...')?
- [ ] Object storage: have the integration tests been executed and the
endpoint declared according to the connector-specific documentation?
- [ ] If adding new dependencies to the code, are these dependencies
licensed in a way that is compatible for inclusion under [ASF
2.0](http://www.apache.org/legal/resolved.html#category-a)?
- [ ] If applicable, have you updated the `LICENSE`, `LICENSE-binary`,
`NOTICE-binary` files?
> Update ReadTransferRate to ReadLatencyPerGB for effective percentile metrics
> ----------------------------------------------------------------------------
>
> Key: HDFS-16949
> URL: https://issues.apache.org/jira/browse/HDFS-16949
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: datanode
> Reporter: Ravindra Dingankar
> Assignee: Ravindra Dingankar
> Priority: Minor
> Labels: pull-request-available
> Fix For: 3.3.0, 3.4.0
>
>
> HDFS-16917 added ReadTransferRate quantiles to calculate the rate which data
> is read per unit of time.
> With percentiles the values are sorted in ascending order and hence for the
> transfer rate p90 gives us the value where 90 percent rates are lower
> (worse), p99 gives us the value where 99 percent values are lower (worse).
> Note that value(p90) < p(99) thus p99 is a better transfer rate as compared
> to p90.
> However as the percentile increases the value should become worse in order to
> know how good our system is.
> Hence instead of calculating the data read transfer rate, we should calculate
> it's inverse. We will instead calculate the time taken for a GB of data to be
> read. ( seconds / GB )
> After this the p90 value will give us 90 percentage of total values where the
> time taken is less than value(p90), similarly for p99 and others.
> Also p(90) < p(99) and here p(99) will become a worse value (taking more time
> each byte) as compared to p(90)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]