=====================
System-wide debugging
=====================

A lot can go wrong during a devstack run, and there are a few inbuilt
tools to help you.

dstat
-----

Enable the ``dstat`` service to produce performance logs during the
devstack run.  These will be logged to the journal and also as a CSV
file.

memory_tracker
--------------

The ``memory_tracker`` service periodically monitors RAM usage and
provides consumption output when available memory is seen to be
falling (i.e. processes are consuming memory).  It also provides
output showing locked (unswappable) memory.

tcpdump
-------

Enable the ``tcpdump`` service to run a background tcpdump.  You must
set the ``TCPDUMP_ARGS`` variable to something suitable (there is no
default).  For example, to trace iSCSI communication during a job in
the OpenStack gate and copy the result into the log output, you might
use:

.. code-block:: yaml

   job:
     name: devstack-job
     parent: devstack
     vars:
       devstack_services:
         tcpdump: true
       devstack_localrc:
         TCPDUMP_ARGS: "-i any tcp port 3260"
       zuul_copy_output:
         '{{ devstack_log_dir }}/tcpdump.pcap': logs