History

1.10.0 - unreleased

  • Improvement of the termination routine of procpath watch. Run each watch shell in process group. Terminating in two-phase: send the stop signal (SIGINT by default) to each shell process group, give it 10 seconds (by default, controlled by new --kill-after argument) to terminate its subtree gracefully. If any descendant process (collected at the beginning of the termination routine) is still alive, then SIGKILL it.

1.9.1 - 2024-02-15

  • Upgrade Pygal, which stopped using pkg_resources in 3.0.1; drop setuptools dependency

1.9.0 - 2023-10-26

  • Ensure procpath explore --database-file is an absolute path before symlinking it to ~/.cache/procpath/sqliteviz/db.sqlite

  • Calculate path to root process (usually PID 1) for hover text in Sqliteviz Process Timeline inquiry

  • Calculate total for hover text for Sqliteviz Total Resident Set Size, MiB inquiry

  • procpath explore to export Process Tree Sqliteviz inquiry

  • Support Python 3.12; add setuptools (which may not be available on 3.12 out of the box) as a conditional dependency for 3.12 and higher because Pygal uses pkg_resources

  • Describe Total Resident Set Size, MiB, Process Timeline and Process Tree Sqliteviz-only charts in documentation

1.8.1 - 2023-09-22

  • Add missing procpath plot flags in playbook file reading

1.8.0 - 2023-09-03

  • Add --database-file to procpath explore to pre-load an SQLite database into Sqliteviz 0.23 or higher.

  • Add named queries for disk read and write rates, rbs and wbs

  • Drop support for Python 3.7

  • Drop support for queries.json file used by Sqliteviz < 0.15 (only inquiries.json is created)

  • Store empty values for partially read procfiles supposedly caused by a race condition (instead of stopping the recording with an exception)

  • Add named query for process block I/O delays via delayacct_blkio_ticks called wait

  • Export two additional Sqliteviz inquiries from procpath explore: Process Timeline and Total Resident Set Size, MiB (--reinstall is needed if procpath explore has been used before)

1.7.0 - 2023-07-18

  • Support Python 3.11

  • Support PyPy 3.9 (PPA rolling from 3.8)

  • Strip non-significant 0 microseconds from labels of X axis

  • Document real-time plotting of CPU usage and RSS footprint of a number of processes being recorded by procpath record with feedgnuplot

  • Add procpath_version key to meta table

  • Add --relative-time argument for procpath plot to be able to compare timelines of multiple short measurements

1.6.1 - 2022-09-18

  • Fix missing legend in the hover tooltip of the first series in SVG

1.6.0 - 2022-09-03

  • Support PyPy 3.8 (PPA rolling from 3.7)

  • Apply decimation after moving average in procpath plot

  • Centre a moving average window to avoid the peak lag in procpath plot

  • Add dots with hover to SVGs by default produced by procpath plot (disable with --no-dots)

  • Rewrite Pygal’s SVG interactive code

  • Switch to compact X date-time labels without the repeating date part

  • Show only the series on double click on its legend in SVG, and reverse on another double click

  • Fix regression in ts format in queries in Sqliteviz bundle – Sqliteviz/Plotly expects milliseconds

  • Describe process metrics collection in more detail in documentation

1.5.1 - 2021-12-26

  • procpath query to write no new line in stdout on empty result

1.5.0 - 2021-12-04

  • Procpath has got a logo, thank you lana-k!

  • Expose query CLI names (e.g. rss, cpu, etc) on plots

  • Generate procpath explore Sqliteviz bundle from the registered queries

  • Add open file descriptors query and swap usage as fd and swap named queries

  • Use Pygal’s HumanReadable value formatter by default

  • Wrap forest roots in {'children': roots} for JSONPath querying to make queries like $..children[?(@.stat.pid == 1)] yield expected results

  • Extend /proc/{pid}/stat supported fields with delayacct_blkio_ticks, guest_time and cguest_time

1.4.0 - 2021-10-26

  • Add /proc/{pid}/fd file descriptor type counts

  • Add /proc/{pid}/smaps_rollup, supported in Kernel 4.14+. It brings out-of-the-box support of important Linux memory metrics like Proportional Set Size (smaps_rollup_pss) and Unique Set Size (smaps_rollup_private_clean + smaps_rollup_private_dirty). Both are available as named queries for visualisation as pss and uss respectively.

  • Add cpu_count, physical_pages and procfile_list keys to meta table

  • Add optional procfile_required set attribute to procret.Query

  • Add --share-y-axis argument for procpath plot to be able to plot different queries on the same axis (e.g. RSS vs PSS)

  • Embed pygal-tooltips.min.js in SVGs to make interactive features work offline

  • Change internal Pygal SVG size from 800x600 to 912x684

  • Support Python 3.10

  • Drop support for Python 3.6 implementations

1.3.0 - 2021-08-08

  • Make procpath expore compatible with Sqliteviz < 0.15 that expects v1 format in queries.json and Sqliteviz >= 0.15 that’s expects v1 or v2 format in inquiries.json

  • Improvement of the termination routine of procpath watch

  • Expose the extent of procfs support in documentation

1.2.0 - 2021-04-11

  • Run the asv benchmark in the test stage on CI

  • Break down README.rst into multi-page Sphinx documentation

  • Publish coverage and asv HTML reports on RTFD

  • Fix PID filter for procpath plot yielding extra results

  • Bind None/NULL to before, after and pid_list procret.Query parameters when the user input is empty

1.1.0 - 2021-03-28

  • Add Heptapod/Gitlab CI/CD pipeline, stabilise the test suite

  • Improvement of the termination routine of procpath watch

  • Support PyPy 3.7

1.0.0 - 2021-02-21

  • procpath explore

  • Improve CLI responsiveness

  • Expose process PIDs under procpath watch as environment variables, WPS1, WPS2 and so on

  • Add branch PID filter, --pid-list, to procpath record to improve performance of recording at short intervals

  • Re-model /proc as a forest, a disjoint union of trees, to be able to represent kthreadd tree, /proc mounted with hidepid != 0, etc

  • Add --stop-without-result to procpath record to be able to stop recording with stop of the target process

  • Add --no-restart to procpath watch so it can start a target command, accompany it with procpath record and all stop with the target command

  • Support Python 3.9

0.5.0 - 2020-11-21

  • procpath play

  • Add SQL query positional argument in procpath query for easier aggregate calculation which previously needed procpath record -r 1 against a temporary database

  • Add --environment to procpath query to allow templated queries in playbooks

  • Add --logging-level argument to control logging verbosity including forwarded process standard streams’ output

  • Improve procpath watch termination

0.4.0 - 2020-10-11

  • procpath watch

  • Process return code in case of CommandError is 1

  • CLI --help improvement

0.3.1 - 2020-09-25

  • Fix recording of bigint values > 2⁶³-1. SQLite only supports signed bigint. Convert Python integers to a hex string when the value is bigger than 2⁶³-1.

0.3.0 - 2020-09-20

  • Add --custom-value-expr to plot value SELECT expression

  • Add secondary Y axis plot

  • Add logarithmic scale plot

  • Add choice of Pygal value formatter

  • PyPy support with newer SQLite (APSW doesn’t build on PyPy)

  • Add /proc/{pid}/status file

  • Integrate asv for performance testing

0.2.0 - 2020-09-03

  • procpath plot

0.1.0 - 2020-08-16

  • Move to Heptapod

  • Rename --file-list to --procfile-list

  • Improve recording performance. Wrap executemany INSERT queries into a transaction. sqlite3 doesn’t rewrite them into a multi-value INSERT

  • Make jsonpyth a required dependency

  • Add meta table with machine info, page size and clock ticks

  • Provide basic documentation

0.0.2 - 2020-04-13

  • Store timestamps as float, REAL on SQLite’s side

  • Compensate for measurement latency

0.0.1 - 2020-04-13

  • Initial release