mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
Merge pull request #2664 from zonque/bootchart-removal
Remove systemd-bootchart
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -53,7 +53,6 @@
|
||||
/systemd-ask-password
|
||||
/systemd-backlight
|
||||
/systemd-binfmt
|
||||
/systemd-bootchart
|
||||
/systemd-bootx64.efi
|
||||
/systemd-cat
|
||||
/systemd-cgls
|
||||
|
||||
@@ -1843,18 +1843,6 @@ man/systemd-binfmt.html: man/systemd-binfmt.service.html
|
||||
|
||||
endif
|
||||
|
||||
if ENABLE_BOOTCHART
|
||||
MANPAGES += \
|
||||
man/bootchart.conf.5 \
|
||||
man/systemd-bootchart.1
|
||||
MANPAGES_ALIAS += \
|
||||
man/bootchart.conf.d.5
|
||||
man/bootchart.conf.d.5: man/bootchart.conf.5
|
||||
man/bootchart.conf.d.html: man/bootchart.conf.html
|
||||
$(html-alias)
|
||||
|
||||
endif
|
||||
|
||||
if ENABLE_COREDUMP
|
||||
MANPAGES += \
|
||||
man/coredump.conf.5 \
|
||||
@@ -2460,7 +2448,6 @@ endif
|
||||
|
||||
EXTRA_DIST += \
|
||||
man/binfmt.d.xml \
|
||||
man/bootchart.conf.xml \
|
||||
man/bootctl.xml \
|
||||
man/bootup.xml \
|
||||
man/busctl.xml \
|
||||
@@ -2583,7 +2570,6 @@ EXTRA_DIST += \
|
||||
man/systemd-ask-password.xml \
|
||||
man/systemd-backlight@.service.xml \
|
||||
man/systemd-binfmt.service.xml \
|
||||
man/systemd-bootchart.xml \
|
||||
man/systemd-cat.xml \
|
||||
man/systemd-cgls.xml \
|
||||
man/systemd-cgtop.xml \
|
||||
|
||||
26
Makefile.am
26
Makefile.am
@@ -4415,32 +4415,6 @@ EXTRA_DIST += \
|
||||
src/vconsole/90-vconsole.rules.in \
|
||||
units/systemd-vconsole-setup.service.in
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
if ENABLE_BOOTCHART
|
||||
systemd_bootchart_SOURCES = \
|
||||
src/bootchart/bootchart.c \
|
||||
src/bootchart/bootchart.h \
|
||||
src/bootchart/store.c \
|
||||
src/bootchart/store.h \
|
||||
src/bootchart/svg.c \
|
||||
src/bootchart/svg.h
|
||||
|
||||
systemd_bootchart_LDADD = \
|
||||
libshared.la
|
||||
|
||||
rootlibexec_PROGRAMS += \
|
||||
systemd-bootchart
|
||||
|
||||
dist_pkgsysconf_DATA += \
|
||||
src/bootchart/bootchart.conf
|
||||
|
||||
nodist_systemunit_DATA += \
|
||||
units/systemd-bootchart.service
|
||||
endif
|
||||
|
||||
EXTRA_DIST += \
|
||||
units/systemd-bootchart.service.in
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
if ENABLE_QUOTACHECK
|
||||
rootlibexec_PROGRAMS += \
|
||||
|
||||
4
README
4
README
@@ -88,10 +88,6 @@ REQUIREMENTS:
|
||||
Required for CPUQuota= in resource control unit settings
|
||||
CONFIG_CFS_BANDWIDTH
|
||||
|
||||
For systemd-bootchart, several proc debug interfaces are required:
|
||||
CONFIG_SCHEDSTATS
|
||||
CONFIG_SCHED_DEBUG
|
||||
|
||||
For UEFI systems:
|
||||
CONFIG_EFIVAR_FS
|
||||
CONFIG_EFI_PARTITION
|
||||
|
||||
6
TODO
6
TODO
@@ -754,12 +754,6 @@ Features:
|
||||
works with ^C
|
||||
- add documentation to systemd.daemon
|
||||
|
||||
* bootchart:
|
||||
- plot per-process IO utilization
|
||||
- group processes based on service association (cgroups)
|
||||
- document initcall_debug
|
||||
- kernel cmdline "bootchart" option for simplicity?
|
||||
|
||||
* udev-link-config:
|
||||
- Make sure ID_PATH is always exported and complete for
|
||||
network devices where possible, so we can safely rely
|
||||
|
||||
@@ -938,14 +938,6 @@ if test "x$enable_vconsole" != "xno"; then
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_VCONSOLE, [test "$have_vconsole" = "yes"])
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
have_bootchart=no
|
||||
AC_ARG_ENABLE(bootchart, AS_HELP_STRING([--disable-bootchart], [disable bootchart tool]))
|
||||
if test "x$enable_bootchart" != "xno"; then
|
||||
have_bootchart=yes
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_BOOTCHART, [test "$have_bootchart" = "yes"])
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
have_quotacheck=no
|
||||
AC_ARG_ENABLE(quotacheck, AS_HELP_STRING([--disable-quotacheck], [disable quotacheck tools]))
|
||||
@@ -1571,7 +1563,6 @@ AC_MSG_RESULT([
|
||||
ELFUTILS: ${have_elfutils}
|
||||
binfmt: ${have_binfmt}
|
||||
vconsole: ${have_vconsole}
|
||||
bootchart: ${have_bootchart}
|
||||
quotacheck: ${have_quotacheck}
|
||||
tmpfiles: ${have_tmpfiles}
|
||||
sysusers: ${have_sysusers}
|
||||
|
||||
@@ -1,172 +0,0 @@
|
||||
<?xml version='1.0'?> <!--*-nxml-*-->
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
|
||||
<!--
|
||||
This file is part of systemd.
|
||||
|
||||
Copyright 2012 Intel Corporation
|
||||
|
||||
Authors:
|
||||
Auke Kok <auke-jan.h.kok@intel.com>
|
||||
|
||||
systemd is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
systemd is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<refentry id="bootchart.conf" conditional='ENABLE_BOOTCHART'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<refentryinfo>
|
||||
<title>bootchart.conf</title>
|
||||
<productname>systemd</productname>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<contrib>Developer</contrib>
|
||||
<firstname>Auke</firstname>
|
||||
<surname>Kok</surname>
|
||||
<email>auke-jan.h.kok@intel.com</email>
|
||||
</author>
|
||||
</authorgroup>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle>bootchart.conf</refentrytitle>
|
||||
<manvolnum>5</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>bootchart.conf</refname>
|
||||
<refname>bootchart.conf.d</refname>
|
||||
<refpurpose>Boot performance analysis graphing tool configuration files</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<para><filename>/etc/systemd/bootchart.conf</filename></para>
|
||||
<para><filename>/etc/systemd/bootchart.conf.d/*.conf</filename></para>
|
||||
<para><filename>/run/systemd/bootchart.conf.d/*.conf</filename></para>
|
||||
<para><filename>/usr/lib/systemd/bootchart.conf.d/*.conf</filename></para>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>When starting, systemd-bootchart will read the configuration
|
||||
file <filename>/etc/systemd/bootchart.conf</filename>, followed by
|
||||
the files in the <filename>bootchart.conf.d</filename>
|
||||
directories. These configuration files determine logging
|
||||
parameters and graph output.</para>
|
||||
</refsect1>
|
||||
|
||||
<xi:include href="standard-conf.xml" xpointer="main-conf" />
|
||||
|
||||
<refsect1>
|
||||
<title>Options</title>
|
||||
|
||||
<variablelist class='bootchart-directives'>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Samples=500</varname></term>
|
||||
<listitem><para>Configure the amount of samples to record in
|
||||
total before bootchart exits. Each sample will record at
|
||||
intervals defined by Frequency=.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Frequency=25</varname></term>
|
||||
<listitem><para>Configure the sample log frequency. This can
|
||||
be a fractional number, but must be larger than 0.0. Most
|
||||
systems can cope with values under 25–50 without impacting
|
||||
boot time severely.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Relative=no</varname></term>
|
||||
<listitem><para>Configures whether the left axis of the output
|
||||
graph equals time=0.0 (<constant>CLOCK_MONOTONIC</constant>
|
||||
start). This is useful for using bootchart at post-boot time
|
||||
to profile an already booted system, otherwise the graph would
|
||||
become extremely large. If set to yes, the horizontal axis
|
||||
starts at the first recorded sample instead of time=0.0.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Filter=no</varname></term>
|
||||
<listitem><para>Configures whether the resulting graph should
|
||||
omit tasks that did not contribute significantly to the boot.
|
||||
Processes that are too short-lived (only seen in one sample)
|
||||
or that do not consume any significant CPU time (less than
|
||||
0.001sec) will not be displayed in the output
|
||||
graph.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Output=[path]</varname></term>
|
||||
<listitem><para>Configures the output directory for writing
|
||||
the graphs. By default, bootchart writes the graphs to
|
||||
<filename>/run/log</filename>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Init=[path]</varname></term>
|
||||
<listitem><para>Configures bootchart to run a non-standard
|
||||
binary instead of
|
||||
<filename>/usr/lib/systemd/systemd</filename>. This option is
|
||||
only relevant if bootchart was invoked from the kernel command
|
||||
line with
|
||||
init=/usr/lib/systemd/systemd-bootchart.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>PlotMemoryUsage=no</varname></term>
|
||||
<listitem><para>If set to yes, enables logging and graphing of
|
||||
processes' PSS memory consumption.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>PlotEntropyGraph=no</varname></term>
|
||||
<listitem><para>If set to yes, enables logging and graphing of
|
||||
the kernel random entropy pool size.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>ScaleX=100</varname></term>
|
||||
<listitem><para>Horizontal scaling factor for all variable
|
||||
graph components.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>ScaleY=20</varname></term>
|
||||
<listitem><para>Vertical scaling factor for all variable graph
|
||||
components.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>ControlGroup=no</varname></term>
|
||||
<listitem><para>Display process control group.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
<para>
|
||||
<citerefentry><refentrytitle>systemd-bootchart</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
||||
<citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
@@ -1,323 +0,0 @@
|
||||
<?xml version='1.0'?> <!--*-nxml-*-->
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
|
||||
<!--
|
||||
This file is part of systemd.
|
||||
|
||||
Copyright 2012 Intel Corporation
|
||||
|
||||
Authors:
|
||||
Auke Kok <auke-jan.h.kok@intel.com>
|
||||
William Giokas <1007380@gmail.com>
|
||||
|
||||
systemd is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
systemd is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<refentry id="systemd-bootchart" conditional='ENABLE_BOOTCHART'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>systemd-bootchart</title>
|
||||
<productname>systemd</productname>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<contrib>Developer</contrib>
|
||||
<firstname>Auke</firstname>
|
||||
<surname>Kok</surname>
|
||||
<email>auke-jan.h.kok@intel.com</email>
|
||||
</author>
|
||||
</authorgroup>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle>systemd-bootchart</refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>systemd-bootchart</refname>
|
||||
<refpurpose>Boot performance graphing tool</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>
|
||||
<command>systemd-bootchart</command> is a tool, usually run at
|
||||
system startup, that collects the CPU load, disk load, memory
|
||||
usage, as well as per-process information from a running system.
|
||||
Collected results are output as an SVG graph. Normally,
|
||||
systemd-bootchart is invoked by the kernel by passing
|
||||
<option>init=<filename>/usr/lib/systemd/systemd-bootchart</filename></option>
|
||||
on the kernel command line. systemd-bootchart will then fork the
|
||||
real init off to resume normal system startup, while monitoring
|
||||
and logging startup information in the background.
|
||||
</para>
|
||||
<para>
|
||||
After collecting a certain amount of data (usually 15–30
|
||||
seconds, default 20 s) the logging stops and a graph is
|
||||
generated from the logged information. This graph contains vital
|
||||
clues as to which resources are being used, in which order, and
|
||||
where possible problems exist in the startup sequence of the
|
||||
system. It is essentially a more detailed version of the
|
||||
<command>systemd-analyze plot</command> function.
|
||||
</para>
|
||||
<para>
|
||||
Of course, bootchart can also be used at any moment in time to
|
||||
collect and graph some data for an amount of time. It is
|
||||
recommended to use the <option>--rel</option> switch in this
|
||||
case.
|
||||
</para>
|
||||
<para>
|
||||
Bootchart does not require root privileges, and will happily run
|
||||
as a normal user.
|
||||
</para>
|
||||
<para>
|
||||
Bootchart graphs are by default written time-stamped in
|
||||
<filename>/run/log</filename> and saved to the journal with
|
||||
<varname>MESSAGE_ID=9f26aa562cf440c2b16c773d0479b518</varname>.
|
||||
Journal field <varname>BOOTCHART=</varname> contains the
|
||||
bootchart in SVG format.
|
||||
</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Invocation</title>
|
||||
|
||||
<para><command>systemd-bootchart</command> can be invoked in several different ways:</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><emphasis>Kernel invocation</emphasis></term>
|
||||
<listitem><para>The kernel can invoke
|
||||
<command>systemd-bootchart</command> instead of the init
|
||||
process. In turn, <command>systemd-bootchart</command> will
|
||||
invoke <command>/usr/lib/systemd/systemd</command>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><emphasis>Started as a standalone program</emphasis></term>
|
||||
<listitem><para>One can execute
|
||||
<command>systemd-bootchart</command> as normal application
|
||||
from the command line. In this mode, it is highly recommended
|
||||
to pass the <option>-r</option> flag in order to not graph the
|
||||
time elapsed since boot and before systemd-bootchart was
|
||||
started, as it may result in extremely large graphs. The time
|
||||
elapsed since boot might also include any time that the system
|
||||
was suspended.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Options</title>
|
||||
|
||||
<para>These options can also be set in the
|
||||
<filename>/etc/systemd/bootchart.conf</filename> file. See
|
||||
<citerefentry project='man-pages'><refentrytitle>bootchart.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
<xi:include href="standard-options.xml" xpointer="help" />
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-n</option></term>
|
||||
<term><option>--sample <replaceable>N</replaceable></option></term>
|
||||
<listitem><para>Specify the number of samples,
|
||||
<replaceable>N</replaceable>, to record. Samples will be
|
||||
recorded at intervals defined with <option>--freq</option>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-f</option></term>
|
||||
<term><option>--freq <replaceable>f</replaceable></option></term>
|
||||
<listitem><para>Specify the sample log frequency, a positive
|
||||
real <replaceable>f</replaceable>, in Hz. Most systems can
|
||||
cope with values up to 25–50 without creating too much
|
||||
overhead.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-r</option></term>
|
||||
<term><option>--rel</option></term>
|
||||
<listitem><para>Use relative times instead of absolute times.
|
||||
This is useful for using bootchart at post-boot time to
|
||||
profile an already booted system. Without this option the
|
||||
graph would become extremely large. If set, the horizontal
|
||||
axis starts at the first recorded sample instead of time
|
||||
0.0.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-F</option></term>
|
||||
<term><option>--no-filter</option></term>
|
||||
<listitem><para>Disable filtering of tasks that did not
|
||||
contribute significantly to the boot. Processes that are too
|
||||
short-lived (only seen in one sample) or that do not consume
|
||||
any significant CPU time (less than 0.001 s) will not be
|
||||
displayed in the output graph. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-C</option></term>
|
||||
<term><option>--cmdline</option></term>
|
||||
<listitem><para>Display the full command line with arguments
|
||||
of processes, instead of only the process name.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-g</option></term>
|
||||
<term><option>--control-group</option></term>
|
||||
<listitem><para>Display process control group
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-o</option></term>
|
||||
<term><option>--output <replaceable>path</replaceable></option></term>
|
||||
<listitem><para>Specify the output directory for the graphs.
|
||||
By default, bootchart writes the graphs to
|
||||
<filename>/run/log</filename>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-i</option></term>
|
||||
<term><option>--init <replaceable>path</replaceable></option></term>
|
||||
<listitem><para>Use this init binary. Defaults to
|
||||
<command>/usr/lib/systemd/systemd</command>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-p</option></term>
|
||||
<term><option>--pss</option></term>
|
||||
<listitem><para>Enable logging and graphing of processes' PSS
|
||||
(Proportional Set Size) memory consumption. See
|
||||
<filename>filesystems/proc.txt</filename> in the kernel
|
||||
documentation for an explanation of this field.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-e</option></term>
|
||||
<term><option>--entropy</option></term>
|
||||
<listitem><para>Enable logging and graphing of the kernel
|
||||
random entropy pool size.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-x</option></term>
|
||||
<term><option>--scale-x <replaceable>N</replaceable></option></term>
|
||||
<listitem><para>Horizontal scaling factor for all variable
|
||||
graph components.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-y</option></term>
|
||||
<term><option>--scale-y <replaceable>N</replaceable></option></term>
|
||||
<listitem><para>Vertical scaling factor for all variable graph
|
||||
components.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Output</title>
|
||||
|
||||
<para><command>systemd-bootchart</command> generates SVG graphs.
|
||||
In order to render those on a graphical display any SVG capable
|
||||
viewer can be used. It should be noted that the SVG render engines
|
||||
in most browsers (including Chrome and Firefox) are many times
|
||||
faster than dedicated graphical applications like Gimp and
|
||||
Inkscape. Just point your browser at
|
||||
<ulink url="file:///run/log/" />!
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>History</title>
|
||||
|
||||
<para>This version of bootchart was implemented from scratch, but
|
||||
is inspired by former bootchart incantations:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><emphasis>Original bash</emphasis></term>
|
||||
<listitem><para>The original bash/shell code implemented
|
||||
bootchart. This version created a compressed tarball for
|
||||
processing with external applications. This version did not
|
||||
graph anything, only generated data.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><emphasis>Ubuntu C Implementation</emphasis></term>
|
||||
<listitem><para>This version replaced the shell version with a
|
||||
fast and efficient data logger, but also did not graph the
|
||||
data.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><emphasis>Java bootchart</emphasis></term>
|
||||
<listitem><para>This was the original graphing application for
|
||||
charting the data, written in java.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><emphasis>pybootchartgui.py</emphasis></term>
|
||||
<listitem><para>pybootchart created a graph from the data
|
||||
collected by either the bash or C version.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>The version of bootchart you are using now combines both the
|
||||
data collection and the charting into a single application, making
|
||||
it more efficient and simpler. There are no longer any timing
|
||||
issues with the data collector and the grapher, as the graphing
|
||||
cannot be run until the data has been collected. Also, the data
|
||||
kept in memory is reduced to the absolute minimum needed.</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
<para>
|
||||
<citerefentry project='man-pages'><refentrytitle>bootchart.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Bugs</title>
|
||||
|
||||
<para>systemd-bootchart does not get the model information for the
|
||||
hard drive unless the root device is specified with
|
||||
<code>root=/dev/sdxY</code>. Using UUIDs or PARTUUIDs will boot
|
||||
fine, but the hard drive model will not be added to the
|
||||
chart.</para>
|
||||
<para>For bugs, please contact the author and current maintainer:</para>
|
||||
<simplelist>
|
||||
<member>Auke Kok <email>auke-jan.h.kok@intel.com</email></member>
|
||||
</simplelist>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
@@ -77,12 +77,10 @@ int uname_architecture(void);
|
||||
#if defined(__x86_64__)
|
||||
# define native_architecture() ARCHITECTURE_X86_64
|
||||
# define LIB_ARCH_TUPLE "x86_64-linux-gnu"
|
||||
# define PROC_CPUINFO_MODEL "model name"
|
||||
# define SECONDARY_ARCHITECTURE ARCHITECTURE_X86
|
||||
#elif defined(__i386__)
|
||||
# define native_architecture() ARCHITECTURE_X86
|
||||
# define LIB_ARCH_TUPLE "i386-linux-gnu"
|
||||
# define PROC_CPUINFO_MODEL "model name"
|
||||
#elif defined(__powerpc64__)
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define native_architecture() ARCHITECTURE_PPC64
|
||||
@@ -93,7 +91,6 @@ int uname_architecture(void);
|
||||
# define LIB_ARCH_TUPLE "powerpc64le-linux-gnu"
|
||||
# define SECONDARY_ARCHITECTURE ARCHITECTURE_PPC_LE
|
||||
# endif
|
||||
# define PROC_CPUINFO_MODEL "cpu"
|
||||
#elif defined(__powerpc__)
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define native_architecture() ARCHITECTURE_PPC
|
||||
@@ -102,18 +99,15 @@ int uname_architecture(void);
|
||||
# define native_architecture() ARCHITECTURE_PPC_LE
|
||||
# error "Missing LIB_ARCH_TUPLE for PPCLE"
|
||||
# endif
|
||||
# define PROC_CPUINFO_MODEL "cpu"
|
||||
#elif defined(__ia64__)
|
||||
# define native_architecture() ARCHITECTURE_IA64
|
||||
# define LIB_ARCH_TUPLE "ia64-linux-gnu"
|
||||
#elif defined(__hppa64__)
|
||||
# define native_architecture() ARCHITECTURE_PARISC64
|
||||
# error "Missing LIB_ARCH_TUPLE for HPPA64"
|
||||
# define PROC_CPUINFO_MODEL "cpu"
|
||||
#elif defined(__hppa__)
|
||||
# define native_architecture() ARCHITECTURE_PARISC
|
||||
# define LIB_ARCH_TUPLE "hppa‑linux‑gnu"
|
||||
# define PROC_CPUINFO_MODEL "cpu"
|
||||
#elif defined(__s390x__)
|
||||
# define native_architecture() ARCHITECTURE_S390X
|
||||
# define LIB_ARCH_TUPLE "s390x-linux-gnu"
|
||||
@@ -124,11 +118,9 @@ int uname_architecture(void);
|
||||
#elif defined(__sparc64__)
|
||||
# define native_architecture() ARCHITECTURE_SPARC64
|
||||
# define LIB_ARCH_TUPLE "sparc64-linux-gnu"
|
||||
# define PROC_CPUINFO_MODEL "cpu"
|
||||
#elif defined(__sparc__)
|
||||
# define native_architecture() ARCHITECTURE_SPARC
|
||||
# define LIB_ARCH_TUPLE "sparc-linux-gnu"
|
||||
# define PROC_CPUINFO_MODEL "cpu"
|
||||
#elif defined(__mips64__)
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define native_architecture() ARCHITECTURE_MIPS64
|
||||
@@ -137,7 +129,6 @@ int uname_architecture(void);
|
||||
# define native_architecture() ARCHITECTURE_MIPS64_LE
|
||||
# error "Missing LIB_ARCH_TUPLE for MIPS64_LE"
|
||||
# endif
|
||||
# define PROC_CPUINFO_MODEL "cpu model"
|
||||
#elif defined(__mips__)
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define native_architecture() ARCHITECTURE_MIPS
|
||||
@@ -146,7 +137,6 @@ int uname_architecture(void);
|
||||
# define native_architecture() ARCHITECTURE_MIPS_LE
|
||||
# define LIB_ARCH_TUPLE "mipsel-linux-gnu"
|
||||
# endif
|
||||
# define PROC_CPUINFO_MODEL "cpu model"
|
||||
#elif defined(__alpha__)
|
||||
# define native_architecture() ARCHITECTURE_ALPHA
|
||||
# define LIB_ARCH_TUPLE "alpha-linux-gnu"
|
||||
@@ -182,7 +172,6 @@ int uname_architecture(void);
|
||||
# define LIB_ARCH_TUPLE "arm-linux-gnu"
|
||||
# endif
|
||||
# endif
|
||||
# define PROC_CPUINFO_MODEL "model name"
|
||||
#elif defined(__sh64__)
|
||||
# define native_architecture() ARCHITECTURE_SH64
|
||||
# error "Missing LIB_ARCH_TUPLE for SH64"
|
||||
@@ -202,10 +191,5 @@ int uname_architecture(void);
|
||||
# error "Please register your architecture here!"
|
||||
#endif
|
||||
|
||||
#ifndef PROC_CPUINFO_MODEL
|
||||
#warning "PROC_CPUINFO_MODEL not defined for your architecture"
|
||||
#define PROC_CPUINFO_MODEL "model name"
|
||||
#endif
|
||||
|
||||
const char *architecture_to_string(int a) _const_;
|
||||
int architecture_from_string(const char *s) _pure_;
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../Makefile
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,26 +0,0 @@
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Entries in this file show the compile time defaults.
|
||||
# You can change settings by editing this file.
|
||||
# Defaults can be restored by simply deleting this file.
|
||||
#
|
||||
# See bootchart.conf(5) for details.
|
||||
|
||||
[Bootchart]
|
||||
#Samples=500
|
||||
#Frequency=25
|
||||
#Relative=no
|
||||
#Filter=yes
|
||||
#Output=<folder name, defaults to /run/log>
|
||||
#Init=/path/to/init-binary
|
||||
#PlotMemoryUsage=no
|
||||
#PlotEntropyGraph=no
|
||||
#ScaleX=100
|
||||
#ScaleY=20
|
||||
#ControlGroup=no
|
||||
#PerCPU=no
|
||||
@@ -1,119 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
/***
|
||||
This file is part of systemd.
|
||||
|
||||
Copyright (C) 2009-2013 Intel Corporation
|
||||
|
||||
Authors:
|
||||
Auke Kok <auke-jan.h.kok@intel.com>
|
||||
|
||||
systemd is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
systemd is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "list.h"
|
||||
|
||||
#define MAXCPUS 16
|
||||
#define MAXPIDS 65535
|
||||
|
||||
struct block_stat_struct {
|
||||
/* /proc/vmstat pgpgin & pgpgout */
|
||||
int bi;
|
||||
int bo;
|
||||
};
|
||||
|
||||
struct cpu_stat_sample_struct {
|
||||
/* /proc/schedstat fields 10 & 11 (after name) */
|
||||
double runtime;
|
||||
double waittime;
|
||||
};
|
||||
|
||||
/* per process, per sample data we will log */
|
||||
struct ps_sched_struct {
|
||||
/* /proc/<n>/schedstat fields 1 & 2 */
|
||||
double runtime;
|
||||
double waittime;
|
||||
int pss;
|
||||
struct list_sample_data *sampledata;
|
||||
struct ps_sched_struct *next;
|
||||
struct ps_sched_struct *prev;
|
||||
struct ps_sched_struct *cross; /* cross pointer */
|
||||
struct ps_struct *ps_new;
|
||||
};
|
||||
|
||||
struct list_sample_data {
|
||||
double runtime[MAXCPUS];
|
||||
double waittime[MAXCPUS];
|
||||
double sampletime;
|
||||
int entropy_avail;
|
||||
struct block_stat_struct blockstat;
|
||||
LIST_FIELDS(struct list_sample_data, link); /* DLL */
|
||||
int counter;
|
||||
};
|
||||
|
||||
/* process info */
|
||||
struct ps_struct {
|
||||
struct ps_struct *next_ps; /* SLL pointer */
|
||||
struct ps_struct *parent; /* ppid ref */
|
||||
struct ps_struct *children; /* children */
|
||||
struct ps_struct *next; /* siblings */
|
||||
|
||||
/* must match - otherwise it's a new process with same PID */
|
||||
char name[256];
|
||||
int pid;
|
||||
int ppid;
|
||||
char *cgroup;
|
||||
|
||||
/* cache fd's */
|
||||
int sched;
|
||||
int schedstat;
|
||||
FILE *smaps;
|
||||
|
||||
/* pointers to first/last seen timestamps */
|
||||
struct ps_sched_struct *first;
|
||||
struct ps_sched_struct *last;
|
||||
|
||||
/* records actual start time, may be way before bootchart runs */
|
||||
double starttime;
|
||||
|
||||
/* record human readable total cpu time */
|
||||
double total;
|
||||
|
||||
/* largest PSS size found */
|
||||
int pss_max;
|
||||
|
||||
/* for drawing connection lines later */
|
||||
double pos_x;
|
||||
double pos_y;
|
||||
|
||||
struct ps_sched_struct *sample;
|
||||
};
|
||||
|
||||
extern bool arg_relative;
|
||||
extern bool arg_filter;
|
||||
extern bool arg_show_cmdline;
|
||||
extern bool arg_show_cgroup;
|
||||
extern bool arg_pss;
|
||||
extern bool arg_entropy;
|
||||
extern bool arg_percpu;
|
||||
extern bool arg_initcall;
|
||||
extern int arg_samples_len;
|
||||
extern double arg_hz;
|
||||
extern double arg_scale_x;
|
||||
extern double arg_scale_y;
|
||||
|
||||
extern char arg_output_path[PATH_MAX];
|
||||
extern char arg_init_path[PATH_MAX];
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,36 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
/***
|
||||
This file is part of systemd.
|
||||
|
||||
Copyright (C) 2009-2013 Intel Corporation
|
||||
|
||||
Authors:
|
||||
Auke Kok <auke-jan.h.kok@intel.com>
|
||||
|
||||
systemd is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
systemd is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
#include "bootchart.h"
|
||||
|
||||
double gettime_ns(void);
|
||||
void log_uptime(void);
|
||||
int log_sample(DIR *proc,
|
||||
int sample,
|
||||
struct ps_struct *ps_first,
|
||||
struct list_sample_data **ptr,
|
||||
int *pscount,
|
||||
int *cpus);
|
||||
1375
src/bootchart/svg.c
1375
src/bootchart/svg.c
File diff suppressed because it is too large
Load Diff
@@ -1,35 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
/***
|
||||
This file is part of systemd.
|
||||
|
||||
Copyright (C) 2009-2013 Intel Corporation
|
||||
|
||||
Authors:
|
||||
Auke Kok <auke-jan.h.kok@intel.com>
|
||||
|
||||
systemd is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
systemd is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
int svg_do(FILE *of,
|
||||
const char *build,
|
||||
struct list_sample_data *head,
|
||||
struct ps_struct *ps_first,
|
||||
int n_samples,
|
||||
int pscount,
|
||||
int n_cpus,
|
||||
double graph_start,
|
||||
double log_start,
|
||||
double interval,
|
||||
int overrun);
|
||||
@@ -82,8 +82,6 @@ _SD_BEGIN_DECLARATIONS;
|
||||
|
||||
#define SD_MESSAGE_INVALID_CONFIGURATION SD_ID128_MAKE(c7,72,d2,4e,9a,88,4c,be,b9,ea,12,62,5c,30,6c,01)
|
||||
|
||||
#define SD_MESSAGE_BOOTCHART SD_ID128_MAKE(9f,26,aa,56,2c,f4,40,c2,b1,6c,77,3d,04,79,b5,18)
|
||||
|
||||
#define SD_MESSAGE_DNSSEC_FAILURE SD_ID128_MAKE(16,75,d7,f1,72,17,40,98,b1,10,8b,f8,c7,dc,8f,5d)
|
||||
#define SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED SD_ID128_MAKE(4d,44,08,cf,d0,d1,44,85,91,84,d1,e6,5d,7c,8a,65)
|
||||
#define SD_MESSAGE_DNSSEC_DOWNGRADE SD_ID128_MAKE(36,db,2d,fa,5a,90,45,e1,bd,4a,f5,f9,3e,1c,f0,57)
|
||||
|
||||
@@ -131,15 +131,6 @@ TEMPLATE = '''\
|
||||
<variablelist id='systemd-directives' />
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>bootchart.conf directives</title>
|
||||
|
||||
<para>Directives for configuring the behaviour of the
|
||||
systemd-bootchart process.</para>
|
||||
|
||||
<variablelist id='bootchart-directives' />
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>command line options</title>
|
||||
|
||||
|
||||
1
units/.gitignore
vendored
1
units/.gitignore
vendored
@@ -22,7 +22,6 @@
|
||||
/systemd-ask-password-wall.service
|
||||
/systemd-backlight@.service
|
||||
/systemd-binfmt.service
|
||||
/systemd-bootchart.service
|
||||
/systemd-coredump@.service
|
||||
/systemd-firstboot.service
|
||||
/systemd-fsck-root.service
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user