| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| description "Collects boot data and optionally creates a chart" |
| author "chromium-os-dev@chromium.org" |
| |
| # Job bootchart is started before job pre-startup for covering as much as |
| # possible of the boot. |
| start on starting pre-startup |
| # A lot of services start via "start on started system-services" which is |
| # why we use a pre-stop sleep below. That should gather some data even on |
| # non-critical (UI/login blocking) services. |
| stop on started system-services |
| |
| # Use /dev/ file system for temporary files because /tmp/ and /run/ are not yet |
| # mounted in job pre-startup. |
| env BC_RUN=/dev/.bootchart |
| env BC_LOG=/var/log/bootchart |
| |
| pre-start script |
| # Bootchart is disabled by default and is enabled only in the boot perf test. |
| # To enable bootchart, add "cros_bootchart" to kernel args. |
| if grep -qs 'cros_bootchart' /proc/cmdline; then |
| mkdir -p "${BC_RUN}" |
| else |
| stop |
| fi |
| end script |
| |
| exec /lib/bootchart/collector 25 "${BC_RUN}" |
| |
| # See "stop on" comment above. |
| pre-stop exec sleep 10 |
| |
| post-stop script |
| if [ -d "${BC_RUN}" ]; then |
| BC_DATA="${BC_LOG}/boot-$(date +%Y%m%d-%H%M%S).tgz" |
| |
| mkdir -p "${BC_LOG}" |
| /lib/bootchart/gather "${BC_DATA}" "${BC_RUN}" |
| |
| rm -rf "${BC_RUN}" |
| fi |
| end script |