diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-05-20 16:26:38 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-05-20 16:26:38 +0200 |
commit | 2c4be47e13e52d98cddbe82135d6f4afa8f90c75 (patch) | |
tree | 84389135acfb9e59396877179ee58a9ffbf48b70 /docs/contributing | |
parent | 400422580377a64c306d80779a937807f1fae20d (diff) | |
download | vyos-documentation-2c4be47e13e52d98cddbe82135d6f4afa8f90c75.tar.gz vyos-documentation-2c4be47e13e52d98cddbe82135d6f4afa8f90c75.zip |
development: add boottime graph howto
Diffstat (limited to 'docs/contributing')
-rw-r--r-- | docs/contributing/development.rst | 89 |
1 files changed, 43 insertions, 46 deletions
diff --git a/docs/contributing/development.rst b/docs/contributing/development.rst index 560f2b67..93168366 100644 --- a/docs/contributing/development.rst +++ b/docs/contributing/development.rst @@ -683,31 +683,23 @@ passed as kernel boot parameters. Kernel boot parameters ---------------------- -``vyos-debug`` -^^^^^^^^^^^^^^ - -Adding the parameter ``vyos-debug`` to the linux boot line will produce -timing results for the execution of scripts during commit. If one is seeing -an unexpected delay during manual or boot commit, this may be useful in -identifying bottlenecks. The internal flag is ``VYOS_DEBUG``, and is found in -vyatta-cfg_. Output is directed to ``/var/log/vyatta/cfg-stdout.log``. - -``vyos-config-debug`` -^^^^^^^^^^^^^^^^^^^^^ - -During development, coding errors can lead to a commit failure on boot, -possibly resulting in a failed initialization of the CLI. In this -circumstance, the kernel boot parameter ``vyos-config-debug`` will ensure -access to the system as user ``vyos``, and will log a Python stack trace to -``/tmp/boot-config-trace``. - +* ``vyos-debug`` - Adding the parameter to the linux boot line will produce + timing results for the execution of scripts during commit. If one is seeing + an unexpected delay during manual or boot commit, this may be useful in + identifying bottlenecks. The internal flag is ``VYOS_DEBUG``, and is found + in vyatta-cfg_. Output is directed to ``/var/log/vyatta/cfg-stdout.log``. + +* ``vyos-config-debug`` - During development, coding errors can lead to a + commit failure on boot, possibly resulting in a failed initialization of the + CLI. In this circumstance, the kernel boot parameter ``vyos-config-debug`` + will ensure access to the system as user ``vyos``, and will log a Python + stack trace to the file ``/tmp/boot-config-trace``. Debugging features ------------------ A number of flags can be set up to change the behaviour of VyOS at runtime. -These flags can be toggled using either environment variables or creating -files. +These flags can be toggled using either environment variables or creating files. For each feature, a file called ``vyos.feature.debug`` can be created to toggle the feature on. If a parameter is required it can be placed inside the file as @@ -725,35 +717,22 @@ In that case, the name will be (in uppercase) VYOS_FEATURE_DEBUG. for example running, ``export VYOS_IFCONFIG_DEBUG=""`` on your vash, will have the same effect as ``touch /tmp/vyos.ifconfig.debug``. -``ifconfig`` -^^^^^^^^^^^^ - -Once set, all commands used, and their responses received from the OS, will be -presented on the screen for inspection. - -``command`` -^^^^^^^^^^^ - -Once set, all commands used, and their responses received from the OS, will be -presented on the screen for inspection. - -``developer`` -^^^^^^^^^^^^^ +* ``ifconfig`` - Once set, all commands used, and their responses received from + the OS, will be presented on the screen for inspection. -Should a command fail, instead of printing a message to the user explaining how -to report issues, the python interpreter will start a PBD post-mortem session -to allow the developer to debug the issue. +* ``command`` - Once set, all commands used, and their responses received from + the OS, will be presented on the screen for inspection. -As the debugger will wait from input from the developer, it has the capacity to -prevent a router to boot and therefore should only be permanently set up on -production if you are ready to see the OS fail to boot. +* ``developer`` - Should a command fail, instead of printing a message to the + user explaining how to report issues, the python interpreter will start a PBD + post-mortem session to allow the developer to debug the issue. As the debugger + will wait from input from the developer, it has the capacity to prevent a + router to boot and therefore should only be permanently set up on production + if you are ready to see the OS fail to boot. -``log`` -^^^^^^^ - -In some rare cases, it may be useful to see what the OS is doing, including -during boot. This option sends all commands used by VyOS to a file. -The default file is ``/tmp/full-log`` but it can be changed. +* ``log`` - In some rare cases, it may be useful to see what the OS is doing, + including during boot. This option sends all commands used by VyOS to a file. + The default file is ``/tmp/full-log`` but it can be changed. Config Migration ---------------- @@ -780,6 +759,23 @@ own by: vyos@vyos:~$ /usr/libexec/vyos/run-config-migration.py --virtual --set-vintage vyos /tmp/config.boot +Boot Timing +----------- + +During the migration and extensive rewrite of functionality from Perl into +Python a significant increase in the overall system boottime was noticed. The +system boot time can be analysed and a graph can be generated in the end which +shows in detail who called whom during the system startup phase. + +This is done by utilizing the ``systemd-bootchart`` package which is now +installed by default on the VyOS 1.3 (equuleus) branch. The configuration is +also versioned so we get comparable results. ``systemd-bootchart`` is configured +using this file: bootchart.conf_ + +To enable boot time graphing change the Kernel commandline and add the folowing +string: ``init=/usr/lib/systemd/systemd-bootchart`` + +This can also be done permanently by changing ``/boot/grub/grub.cfg``. Priorities ========== @@ -823,5 +819,6 @@ http://dev.packages.vyos.net/repositories/. .. _`VLAN (VIF)`: https://github.com/vyos/vyos-1x/tree/current/interface-definitions/include/vif.xml.i .. _`MAC address`: https://github.com/vyos/vyos-1x/tree/current/interface-definitions/include/interface-mac.xml.i .. _vyatta-cfg: https://github.com/vyos/vyatta-cfg +.. _bootchart.conf: https://github.com/vyos/vyos-build/blob/current/data/live-build-config/includes.chroot/etc/systemd/bootchart.conf .. include:: ../common-references.rst |