You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Roman Khachatryan (Jira)" <ji...@apache.org> on 2020/05/25 13:32:00 UTC

[jira] [Commented] (FLINK-17928) Incorrect state size reported when using unaligned checkpoints

    [ https://issues.apache.org/jira/browse/FLINK-17928?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17116021#comment-17116021 ] 

Roman Khachatryan commented on FLINK-17928:
-------------------------------------------

The numbers were obtained using:

 
{code:java}
transferredBytes() {
 rest_url="http://`hostname`:20888/proxy/`get_aid`"
 job_id=`curl $rest_url/jobs/ | jq -r '.jobs[0].id'`
 vertex_ids=( `curl $rest_url/jobs/$job_id/ | jq -r '.vertices[].id'` )
 numBytesOut=0
 >&2 echo "job_id $job_id; vertex_ids: ${vertex_ids[@]}"
 for vertex in "${vertex_ids[@]}";
 do
 stats=`curl $rest_url/jobs/$job_id/vertices/$vertex/subtasks/metrics\?get=numBytesOut\&agg=sum`
 >&2 echo "vertex $vertex $stats"
 numBytesOut=$(($numBytesOut + `echo $stats | jq -s '[add | .[].sum] | add // 0' `))
 done
 echo "$numBytesOut" | numfmt --to=iec-i --suffix=B --padding=7
} 
{code}
 

> Incorrect state size reported when using unaligned checkpoints 
> ---------------------------------------------------------------
>
>                 Key: FLINK-17928
>                 URL: https://issues.apache.org/jira/browse/FLINK-17928
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Checkpointing
>    Affects Versions: 1.11.0
>            Reporter: Piotr Nowojski
>            Priority: Critical
>             Fix For: 1.11.0
>
>
> Even when checkpoints on HDFS are between 100-300MBs, the reported state size is in orders of magnitude larger with values like:
> {noformat}
> 1GiB  1.5TiB  2.0TiB  2.1TiB  2.1TiB
> 148GiB  148GiB  148GiB  148GiB  148GiB  148GiB
> {noformat}
> it's probably because we have multiple {{Collection<InputChannelStateHandle>}}, and each of the individual handle returns the same value from {{AbstractChannelStateHandle#getStateSize}} - the full size of the spilled data, ignoring that only small portion of those data belong to a single input channel/result subpartition. In other words {{
> org.apache.flink.runtime.state.AbstractChannelStateHandle#getStateSize}} should be taking the offsets into account and return only the size of the data that belong exclusively to this handle.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)