[systemd-devel] [PATCH][V3] systemd-analyze: rewrite in C.
William Giokas
1007380 at gmail.com
Mon Feb 4 15:52:16 PST 2013
On Mon, Feb 04, 2013 at 09:32:33PM +0100, Simon Peeters wrote:
> Written by Peeters Simon <peeters.simon at gmail.com>. Makefile stuff
> and cleaned up a bit by Auke Kok <auke-jan.h.kok at intel.com>.
> ---
>
> Fixed some stuff and dit some more cleanup.
>
> This should just cover the same usage as the old systemd-analyze, but we can
> add more functionality afterwards (systemctl dot, other output formats,...)
>
> This is the rebased version as asked by William.
Thanks! It applied cleanly. Just a comment in the analyze_plot fucntion.
Previously I mentioned that really short boot times make plots that are
too small to really read anything, and I kept getting graphs that were
trunctated and short, basically telling me how long the kernel took to
get ready and maybe the initrd. I thought this was fixed seeing this
patch[1], but then I realized that width is not even used in the svg, it
re-calculates the width for some reason here[2]. Just changing that line
to `width,` and everything works as expected. (Otherwise the 800.0 width
or 1000.0 width isn't actually used in the svg)
<-SNIP->
> +static int analyze_plot(DBusConnection *bus)
> +{
> + struct unit_times *times;
> + struct boot_times boot;
> + int n, m = 1;
> + double width;
> +
> + n = get_boot_times(bus, &boot);
> + if (n)
> + return n;
> +
> + n = acquire_time_data(bus, ×);
> + if (n<=0)
> + return n;
> +
> + qsort(times, n, sizeof(struct unit_times), compare_unit_start);
> +
> + width = 80 + (scale_x * (boot.firmware_time + boot.finish_time) * 0.000001);
[1]
> + if (width < 800.0)
> + width = 800.0;
> +
> + if (boot.firmware_time > boot.loader_time)
> + m++;
> + if (boot.loader_time) {
> + m++;
> + if (width < 1000.0)
> + width = 1000.0;
> + }
> + if (boot.initrd_time)
> + m++;
> + if (boot.kernel_time)
> + m++;
> +
> + for (int i=0; i < n; i++)
> + if (times[i].ixt >= boot.userspace_time && times[i].ixt <= boot.finish_time)
> + m++;
> +
> + svg("<?xml version=\"1.0\" standalone=\"no\"?>\n");
> + svg("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" ");
> + svg("\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
> +
> + svg("<svg width=\"%.0fpx\" height=\"%.0fpx\" version=\"1.1\" ",
[2]
> + 80.0 + (scale_x * (boot.firmware_time + boot.finish_time) * 0.000001),
> + 150.0 + (m *scale_y));
> + svg("xmlns=\"http://www.w3.org/2000/svg\">\n\n");
> +
> + /* write some basic info as a comment, including some help */
> + svg("<!-- This file is a systemd-analyze SVG file. It is best rendered in a -->\n"
> + "<!-- browser such as Chrome/Chromium, firefox. Other applications that -->\n"
> + "<!-- render these files properly but much more slow are ImageMagick, -->\n"
> + "<!-- gimp, inkscape, etc.. To display the files on your system, just -->\n"
> + "<!-- point your browser to file:///var/log/ and click. -->\n\n"
> + "<!-- this plot was generated by systemd-analyze version %-16.16s -->\n\n", VERSION);
Also, this could use a few fixes:
* Chrome/Chromium, firefox -> Chrome, Chromium or Firefox
* much more slow -> much slower
* this plot was generated -> This plot was generated
* etc.. -> etc.
<-SNIP->
Thanks,
--
William Giokas | KaiSforza
GnuPG Key: 0xE99A7F0F
Fingerprint: F078 CFF2 45E8 1E72 6D5A 8653 CDF5 E7A5 E99A 7F0F
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20130204/7caf4175/attachment.pgp>
More information about the systemd-devel
mailing list