1. 02 Sep, 2018 1 commit
    • Ell's avatar
      app, icons, menus: add performance-log recording to the dashboard · 36477bb2
      Ell authored
      Add an option to record a performance log through the dashboard.
      The log contains a series of samples of the dashboard variables, as
      well as the full program backtrace, when available.  As such, it
      essentially acts as a built-in profiler, which allows us to
      correlate program execution with the information available through
      the dashboard.  It is meant to be used for creating logs to
      accompany perofrmance-related bug reports, as well as for profiling
      GIMP during development.
      
      The sample frequency defaults to 10 samples per second, but can be
      overridden using the GIMP_PERFORMANCE_LOG_SAMPLE_FREQUENCY
      environment variable.  Backtraces are included by default when
      available, but can be suppressed using the
      GIMP_PERFORMANCE_LOG_NO_BACKTRACE environment variable.
      
      Logs are created through the new "record" button at the bottom of
      the dashboard dialog.  When pressed, a file dialog is opened to
      select the log file, and, once confirmed, data is being recorded to
      the selected file.  Recording is stopped by pressing the "record"
      button again (we use a highlight to indicate that recording is
      active.)
      
      While recording, the "reset" button is replaced with an "add marker"
      button, which can be used to add event markers to the log.  These
      can be used to mark events of interest, such as "started painting"
      and "stopped painting", which then appear in the log as part of the
      sample stream.  Markers are numbered sequentually, and the number
      of the next (to-be-added) marker appears on the button.  Shift-
      clicking the button adds an empty (description-less) marker, which
      is only identified by its number; this can be used when markers
      need to be added quickly.
      
      The log is an XML file, containing some extra information (such as
      the output of "$ gimp -v", and symbol information) in addition to
      the samples.  The data in the file is delta-encoded to reduce the
      file size, meaning that samples (as well as some other elements)
      only specify the changes since the previous sample.  This adds a
      necessary decoding step before data can be processed; the next
      commit adds a tool that does that.
      
      There are currently no tools to actually analyze the data -- that's
      still TBD -- but at least we can start gathering it.
      36477bb2
  2. 02 Apr, 2018 1 commit
  3. 30 Dec, 2017 1 commit
    • Ell's avatar
      app: various GimpDashboard improvements · ee418191
      Ell authored
      Refactor GimpDashboard to autogenerate the UI based on a
      description of the different variables, fields, and groups.
      
      Allow individual groups to be expanded/collapsed, and individual
      fields to be enabled/disabled.  Save the relevant state in the
      dashboard's aux-info.
      
      Add fields for the new GeglStats properties, as per GEGL commit
      25c39ce6c9bb618f06ac96d118e624be66464d74.  The new fields are not
      enabled by default.
      
      Add "reset" action, to clear the history, and reset cumulative
      data.
      ee418191
  4. 19 Dec, 2017 1 commit
    • Ell's avatar
      app, menus, icons: add dashboard dockable · 981e8dcd
      Ell authored
      The dashboard dockable shows the current GEGL cache and swap sizes,
      and their recent history.  It has options to control the update
      rate and history duration of the data, and an option to warn (by
      raising/blinking the dialog) when the swap size approaches its
      limit.
      981e8dcd