Rendering chrome://system takes >30s on Chrome OS |
||||||
Issue descriptionChrome OS: 8869.0.0 cyan Steps To Reproduce: (1) visit chrome://system Actual Result: It takes more than 30 seconds to render the page.
,
Apr 27 2017
,
May 17 2017
,
May 17 2017
Definitely interested in fixing this. Thanks for adding me. I agree with c#1's sentiment of splitting what goes into chrome:system and what goes into feedback reports.
,
Aug 29
+khegde who might have some time to peek at this. Current times seem to be ~15sec on Octopus, so I don't know if we're collecting fewer files there.
,
Aug 30
Here is the approximate breakdown on times (in sequential order): 1. Time taken for chrome to send a request to debugd: < 1 second (I believe that this is the case because chrome is not sending a lot of data to debugd so there is no reason for a high latency) 2. Time taken to collect all attributes and their respective times (in the GetLogsFrom() function inside debugd's src/log_tool.cc file): 4 seconds 3. Time taken for debugd to serialize the data with the attributes and send it to chrome over D-bus: 5 seconds NOTE: I used the D-bus monitor to find that the total time taken for debugd to collect the attributes (using the GetFromLogs() function) and serialize it is 9 seconds. See below for further info. 4. Time taken for chrome to deserialize data and display as output: 5 seconds NOTE: The time for this step is inferred from step 3 above. I believe the serialization and deserialization times would be nearly identical. For future use, here is the dubugging process I followed: 1. Add log statements to GetLogsFrom() function to find the total time debugd's src/log_tool.cc takes to collect all the attributes and the time taken by each of them. 2. On your machine, run: dbus-monitor --system > /tmp/dbus_mon 3. Next, run: grep GetAllLogs dbus-mon You should see in the output a line which contains "serial=$SOME_NUMBER". 4. Use $SOME_NUMBER to run: grep serial=$SOME_NUMBER dbus-mon In the output, you should see two lines, each that contain "time=$SOME_TIME" in them. The first line contains details regarding the request made by chrome to GetAllLogs() and the second line contains details regarding the reply back. The time difference represents the total time taken for debugd to collect all the attributes, serialize it, and send it over D-bus to chrome. Next Steps: -Since the marshalling and unmarshalling steps yield high latencies, I believe it may be best to only output a clipped version of extremely large messages. I am currently working on finding out which attributes are the largest, and whether they can be trimmed down.
,
Aug 30
,
Aug 31
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by derat@chromium.org
, Oct 18 2016