]> git.ipfire.org Git - thirdparty/systemd.git/commit
bootchart: don't parse /proc/uptime, use CLOCK_BOOTTIME
authorKarel Zak <kzak@redhat.com>
Thu, 31 Jul 2014 08:15:39 +0000 (10:15 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 3 Aug 2014 05:12:53 +0000 (01:12 -0400)
commitc358d728e7d6bf38a0176a9d5d013c6e972cddbf
tree8a27c6735605fb635811690b2d474a40a1be983e
parent799a8f39d8eb9ea725e85a598c0f5dbd658c8ba7
bootchart: don't parse /proc/uptime, use CLOCK_BOOTTIME

* systemd-bootchart always parses /proc/uptime, although the
  information is unnecessary when --rel specified

* use /proc/uptime is overkill, since Linux 2.6.39 we have
  clock_gettime(CLOCK_BOOTTIME, ...). The backend on kernel side is
  get_monotonic_boottime() in both cases.

* main() uses "if (graph_start <= 0.0)" to detect that /proc is
  available.

  This is fragile solution as graph_start is always smaller than zero
  on all systems after suspend/resume (e.g. laptops), because in this
  case the system uptime includes suspend time and uptime is always
  greater number than monotonic time. For example right now difference
  between uptime and monotonic time is 37 hours on my laptop.

  Note that main() calls log_uptime() (to parse /proc/uptime) for each
  sample when it believes that /proc is not available. So on my laptop
  systemd-boochars spends all live with /proc/uptime parsing +
  nanosleep(), try

    strace  /usr/lib/systemd/systemd-bootchart

  to see the never ending loop.

  This patch uses access("/proc/vmstat", F_OK) to detect procfs.
man/systemd-bootchart.xml
src/bootchart/bootchart.c
src/bootchart/store.c