More progress on IPC profiling tools, this time a visualization generator. Here is what happens during loading of cnn.com:
On the left you see Fennec before dougt's prefs optimizing patch, and on the right after it. On both sides, the data is as follows:
- Each line is a single IPC message. Messages are ordered by send time. The width of the line is how long it took until the message was received. The X axis is linear in time.
- The Y axis also progresses forward in time (since each line is one message, and they are ordered). But it isn't linear (a lot of short messages will take a lot of vertical space, even though little time passed). The numbers show how much time actually passed. So the Y axis really indicates how many messages have been sent.
- Colors indicate the type of message: green = http, red = prefs, blue = cookies, black = other.
The visualization tool can also show messages for the child and parent process separately (in the image above, they are all shown together).
Instructions for using it:
- Apply the patch.
- Run Fennec with something like this (from $objdir/dist/bin):
- MOZ_IPC_MESSAGE_LOG=1 MOZ_REDIRECT_CHILD_STDOUT=co MOZ_REDIRECT_CHILD_STDERR=ce ./fennec www.cnn.com &> o
- Run the visualizer with something like this (you need the Python Imaging Library installed):
- python ../../../mozilla-central/tools/ipcprof/profiler.py o ce
- Images should have been created, parent.png, child.png, both.png.