How chime can observe Compiz
By Karim Berrah on Aug 11, 2009
I wanted to know how changes in the Compiz Setting in Gnome (OpenSolaris 2009.06, Gnome 2.24.2, NVidia Drivers version 185.18.31) were affecting my systems performance, and see the impact on the system. For this purpose, I decided to test chime, the DTrace graphical tool.
Method To load the system, I used /usr/X11/demo/glxgears which is a raw application doing GL calls, showing rotating gears, and printing Frame Per Seconds rates. I used later this rate for comparison.
To modify the system, I changed the Compiz settings from "none" to "Extra" under the "Visual Effect" tab, in the "Appearences" application found in the "System/Preferences" menu.
To observe my system, I used chime, selected the "Initial Traces" category, and ran the "Interrupt Statistic" traces. I concentrated my focus on the "nvidia" device which is, in the case of my MacBook Pro system, the NVidia GeForce 9600 GT graphical card.
First of all, I had to ensure that Compiz extra features were disabled. So, I launched the following tool
Once launched, in the "Visual effects" panel, I selected "none"
I then launched /usr/X11/demo/glxgears
What is interesting with this application, is that it's commonly distributed with many Linux distributions, and give a approximation of the pref. of your graphical environment. As you can see in the terminal windows, nearly 10'000 FPS could be displayed, showing three smooth rotating gears.
Let see what happens on the "Interrupts per CPU" side, using chime. So I installed chime, launched it while glxgears running, with
selected the "Initial Traces" category, and ran the "Interrupt Statistic" traces. Here what I saw:
As you can see, nearly no interrupts are generated by the NVidia card.
Now let's go back to the Compiz settings, change the Compiz settings from "none" to "Extra" under the "Visual Effect" tab, in the "Appearences" application found in the "System/Preferences" menu.
Here are the "Graphical results":
The FPS rating has fallen down from 10'000 FPS to around 5'000 FPS, the white arrow showing when the change occured in the "Compiz Settings".
On the Chime window, we can see at the same time that the interrupts has changed from around 0 int/sec to nearly 5'500 int/sec, handled by CPU0, which explains why the FPS has fallen down.
Compiz has certainly changed the programing method of the NVIDIA graphical device, into an interrupt mode, making my CPU more busy to handle interrupts (nearly 42% of his time), and making it less available to execute code, which explain less FPS in this mode.
With a small tool like chime, using DTrace with OpenSolaris, I could observe the behaviour of an application on the system (interrupts/sec), and see how changes on a system (Compiz settings) could affect the perfomances of my application (glxgears) and see the impact on the systems (increase of the interrupts/second).
This is exactly what DTrace has been designed for.