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
color_filter_and_fade_perf__timeline_summary regression worst_frame_rasterizer_time_millis #54095
Comments
@liyuqian @chinmaygarde thoughts? |
The Clang upgrade flutter/engine#17483 (CC @dnfield ) might be the only PR in the engine roll that could have this much impact on this Android performance test? I'll try to reproduce this regression locally and check if this is an engine issue or an infra issue. |
I don't have an Android device I'm afraid :( |
@liyuqian I didn't review flutter/engine#17486 so not sure what the context was but if we are rendering to a texture now instead of a surface, the extra onscreen composition could totally cause this regression. I would try bisection from there. But yeah, the toolchain thing is a massive change too. But that would have affected absolutely all targets. |
I cannot locally reproduce this regression by running the test on 85664be (#53890) and its predecessor a8b3d1b. The worst frame time seems to be similar on those 2 commits. Also considering that a later commit 29c8808 has a fast worst frame, I think this regression is caused by infra issues. CC @godofredoc |
@godofredoc can you see if there's some issue with the device running this benchmark? |
I am looking at this issue. |
This task has been run across four agents (mac 17, 19, 20, and 21). There are no issue found on any of them. Since we are not able to capture android screen from a mac at this moment(#51802), we are not sure if any window pop up on these devices. For now, I issued a reboot for all devices and hosts. |
Thanks @keyonghan! @liyuqian if the values don't return to normal now that the hosts and devices have been rebooted, more investigation will be needed, since we've ruled out infra issues. |
This started with flutter/engine@abc72933e |
Can we revert and then re-apply with a fix? |
Thanks @jason-simmons ! With your discovery, I now figured out why I couldn't reproduce the regression early: Specifically, with
which seems to be adding the time of 2 frames into 1. Without
See color_filter_with_or_without_trace_startup.zip for more details. Hence I'm removing the TODAY label as this is not an actual performance regression, but more like a tracing issue. |
There is definitely something wrong with the tracing format when the In the attached timeline, look at the events between timestamps The two |
I think this is a problem with the way we are parsing the timeline events in the test rather than the timeline events itself. I'm working on fixing this along with taking a look at #54205 |
Parser would earlier alternate after finding the first begin event, not it looks for pairs. Fixes: flutter#54095
I'm still concerned that something is wrong with how the timeline events are being recorded. I tried adding logging to The reordered events happen when the |
Working theory is that adding async events with begin times in the past causes the timeline to skip some events. See: flutter/flutter#54095
Working theory is that adding async events with begin times in the past causes the timeline to skip some events. See: flutter/flutter#54095
I reached out to @rmacnak-google , It seems like the underlying issue is that as a client we need to sort the events on the timestamps before consuming them. Pasting my conversation here for posterity. Based on this I'm going to sort the events by their timestamp before exporting the me: When we create timeline event with ryan: The answer somewhat depends on which underlying recorder is being used. If the recorder is a VM buffer or Fuchsia tracing, then it should be fine if an event is from the past because the client will have to sort things anyway because of buffering. If the recorder is Android systrace (or iOS signpost, I think) then when we forward the event the underlying record does not take a timestamp as an argument and uses the current time instead. me: Upon further investigating the attached trace file in #54095 (comment), it seems like the missing event between the two
|
This event goes from now -> current vsync target time to avoid the limitations as seen in flutter/flutter#54095 (comment) This event also tags additional metadata to capture `vsync_transitions_missed` considering the refresh rate of the display.
Working theory is that adding async events with begin times in the past causes the timeline to skip some events. See: flutter/flutter#54095
This event goes from now -> current vsync target time to avoid the limitations as seen in flutter/flutter#54095 (comment) This event also tags additional metadata to capture `vsync_transitions_missed` considering the refresh rate of the display.
This event goes from now -> current vsync target time to avoid the limitations as seen in flutter/flutter#54095 (comment) This event also tags additional metadata to capture `vsync_transitions_missed` considering the refresh rate of the display.
Parser would earlier alternate after finding the first begin event, not it looks for pairs. Fixes: #54095
Working theory is that adding async events with begin times in the past causes the timeline to skip some events. See: flutter/flutter#54095
This event goes from now -> current vsync target time to avoid the limitations as seen in flutter/flutter#54095 (comment) This event also tags additional metadata to capture `vsync_transitions_missed` considering the refresh rate of the display.
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of |
Clear jump at this engine roll: #53890
The text was updated successfully, but these errors were encountered: