22 Nov 2006 gpoo   » (Master)

A graph of gnome-session

Thanks to a Tatiana's coursework, we took a short time to make a graph of the init session of GNOME using Bootchart.

Bootchart is a program to collect information of the use of disc and processor of the system. It was created to be able to collect real data with which to be able to determine the necks of bottle in the init process of Linux and thus to be able to accelerate it.

It seemed to be "an invasive" process, that it requires to perhaps modify the kernel or something similar. The certain thing, is that to collect the data it is only required to install an script, which must be invoked by kernel. Don't forget that the first process executed executed in UNIX is init; instead of invoking to init it is necessary to invoke to bootchartd, which leaves running some processes in background and later it will invoke to init. It is as simple as adding the following option in the boot:

init=/sbin/bootchartd

The collected data will be stored in /var/log/bootchart.tgz (which contains 4 archives); file that will be the input for bootchart, a program written in Java that allows to generate a graph from the collected data.

Basically the program reads every 2 seconds the virtual archives/proc/diskstats,/proc/stats and/proc/*/stat (for each one of the processes in execution). Being thus, it is possible to use it to measure other programs; for example, the init session of GNOME.

Perhaps many already they have realized that the starting depends much on the time that takes gconf in reading all the preferences and schemes. Thus, Federico has been indicating it for already a month and Havoc has let know that it is a pending issue of gconf and is awaiting for some developer takes the task to solves the problem.

As an image is worth more than thousand words, I ran bootchartd to make a graph of my GNOME session in a notebook (Centrino 1.8 Ghz, 512 MB ram):

Graph of the GNOME's init session
Graph of the second session. The firts one takes more time, but it's possible to get the idea.

It shows the time that each application in initiating takes, as well as the disc use that each program does. The process really start when the gdmgreeter is replaced by x-session-manager, and it happens whe the user and password are entered and it's finish when the interface is ready to be used; in my case it happened in second 23.

The reading of gconf varies according to the amount of stored keys, which goes in direct relation with the use of applications that a user has. Thus, in the first session of a user, gconf carries out less than 1/3 of the readings that the graph of my session of today. As well as it varies if it corresponds to the first session since the computer start up.

As is possible to see in the graph, there is another process that for much reading to disc, it is Jamboree, which reads the music archives. Also, there is a python process that make a intensive use of CPU in a little period of time (which is related to the notificador of updates of Ubuntu).

The process of data collection is simple:

$ sudo bootchartd start
$ (one begins the session, via gdm, startx, etc.)
$ sudo bootchartd stop
Once the process finish is time to run bootchart to generate the graph. If Java is not available on the machine, still is possible to get the graph filling a form in the website of Bootchart.

At first sight, it seemed that the process of data collection is complex. But it is not. The main process is processing the collected data and get the graph.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!