[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2021-11-07 Thread Piotr Nowojski (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Piotr Nowojski updated FLINK-19052:
---
Priority: Not a Priority  (was: Minor)

> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Priority: Not a Priority
>  Labels: auto-deprioritized-major, pull-request-available, 
> stale-minor
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)


[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2021-11-03 Thread Flink Jira Bot (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Flink Jira Bot updated FLINK-19052:
---
Labels: auto-deprioritized-major pull-request-available stale-minor  (was: 
auto-deprioritized-major pull-request-available)

I am the [Flink Jira Bot|https://github.com/apache/flink-jira-bot/] and I help 
the community manage its development. I see this issues has been marked as 
Minor but is unassigned and neither itself nor its Sub-Tasks have been updated 
for 180 days. I have gone ahead and marked it "stale-minor". If this ticket is 
still Minor, please either assign yourself or give an update. Afterwards, 
please remove the label or in 7 days the issue will be deprioritized.


> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Priority: Minor
>  Labels: auto-deprioritized-major, pull-request-available, 
> stale-minor
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



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


[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2021-04-29 Thread Flink Jira Bot (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Flink Jira Bot updated FLINK-19052:
---
Priority: Minor  (was: Major)

> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Priority: Minor
>  Labels: auto-deprioritized-major, pull-request-available
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



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


[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2021-04-29 Thread Flink Jira Bot (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Flink Jira Bot updated FLINK-19052:
---
Labels: auto-deprioritized-major pull-request-available  (was: 
pull-request-available stale-major)

> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Priority: Major
>  Labels: auto-deprioritized-major, pull-request-available
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



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


[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2021-04-22 Thread Flink Jira Bot (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Flink Jira Bot updated FLINK-19052:
---
Labels: pull-request-available stale-major  (was: pull-request-available)

> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Priority: Major
>  Labels: pull-request-available, stale-major
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



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


[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2020-12-08 Thread Piotr Nowojski (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Piotr Nowojski updated FLINK-19052:
---
Fix Version/s: (was: 1.13.0)

> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Assignee: Roman Grebennikov
>Priority: Major
>  Labels: pull-request-available
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



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


[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2020-12-07 Thread Robert Metzger (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Metzger updated FLINK-19052:
---
Fix Version/s: (was: 1.12.0)
   1.13.0

> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Assignee: Roman Grebennikov
>Priority: Major
>  Labels: pull-request-available
> Fix For: 1.13.0
>
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



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


[jira] [Updated] (FLINK-19052) Performance issue with PojoSerializer

2020-08-26 Thread ASF GitHub Bot (Jira)


 [ 
https://issues.apache.org/jira/browse/FLINK-19052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated FLINK-19052:
---
Labels: pull-request-available  (was: )

> Performance issue with PojoSerializer
> -
>
> Key: FLINK-19052
> URL: https://issues.apache.org/jira/browse/FLINK-19052
> Project: Flink
>  Issue Type: Improvement
>  Components: API / Type Serialization System
>Affects Versions: 1.11.1
> Environment: Flink 1.12 master on 26.08.2020
>Reporter: Roman Grebennikov
>Priority: Major
>  Labels: pull-request-available
> Attachments: image-2020-08-26-10-46-19-800.png, 
> image-2020-08-26-10-49-59-400.png
>
>
> Currently PojoSerializer.createInstance() uses reflection call to create a 
> class instance. As this method is called on each stream element on 
> deserialization, reflection overhead can become noticeable in 
> serialization-bound cases when:
>  # Pojo class is small, so instantiation is noticeable.
>  # The job is not having heavy CPU-bound event processing.
> See this flamegraph built for 
> flink-benchmarks/SerializationFrameworkMiniBenchmarks.serializerPojo 
> benchmark:
> !image-2020-08-26-10-46-19-800.png!
> This Reflection.getCallerClass method consumes a lot of CPU, mostly doing a 
> security check if we allowed to do this reflective call.
>  
> There is no true reason to perform this check on each deserializing event, so 
> to speed things up we can just cache the constructor using MetaHandle, so 
> this check will be performed only once. With this tiny fix, the 
> getCallerClass is gone:
>  
> !image-2020-08-26-10-49-59-400.png!
>  
> The benchmark result:
> {noformat}
> serializerPojo thrpt 100 487.706 ± 30.480 ops/ms
> serializerPojo thrpt 100 569.828 ± 8.815 ops/m{noformat}
> Which is +15% to throughput.



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