History¶
1.14.1 - unreleased¶
TBD
1.14.0 - 2025-09-03¶
procpath exploreto export new Total CPU Usage, % Sqliteviz inquiryprocpath exploreto export new Total Disk IO, B/s and % IO wait Sqliteviz inquiryAdd downsampling and moving average-calculating CTEs to total Sqliteviz inquiries (see comments in the queries to configure downsampling and moving average windows)
Document downsampling of a too-big recording database with an SQLite script
1.13.0 - 2025-03-09¶
Support reading thread (“task”) files (
/proc/{pid}/task/{tid}/*) from Procfs, see documentation. Add--procfs-targetargument toprocpath query,procpath recordandprocpath watchto specify the target files,processorthreadMake a memory usage optimisation for
procpath recordAdd a warning when a record loop takes longer than the record interval
1.12.1 - 2025-02-01¶
Set point border width to 0 in the CPU process timeline Sqliteviz inquiry
1.12.0 - 2025-01-11¶
Drop redundant
AUTOINCREMENT(whose purpose is “to prevent the reuse of ROWIDs from previously deleted rows”) from the definition of PK of therecordtableMake Process Tree Sqliteviz inquiry produce a tree (first parent is chosen)
Support Python 3.13, drop support for Python 3.8 (end-of-life)
Support PyPy 3.10 (PPA rolling from 3.9)
Create an Sqliteviz inquiry, Process Timeline, CPU, to analyse process CPU usage and priority over time (
--reinstallis needed ifprocpath explorehas been used before)Restrict browser caching of the files from
procpath explore
1.11.1 - 2024-06-30¶
Do not re-evaluate process environment in the
procpath watchloop when--no-restartis passed
1.11.0 - 2024-06-23¶
Do variable substitution for
--database-fileofprocpath recordto simplify repeated runs from a playbook into separate databases e.g. withDT="date +%Y%m%dT%H%M%S"inenvironmentof the sectionMinor improvement of the documentation
Use Heptapod Pages to host documentation (readthedocs.org is obsolete)
1.10.0 - 2024-05-09¶
Improve the termination routine of
procpath watch. Run each watch shell in a process group. Terminate in two-phases: send the stop signal (SIGINTby default) to each shell process group, give it 10 seconds (by default, controlled by new--kill-afterargument) to terminate its subtree gracefully. If any descendant process (collected at the beginning of the termination routine) is still alive, thenSIGKILLitAdd
--procfsargument toprocpath query,procpath recordandprocpath watchto specify an alternative Procfs mount path
1.9.1 - 2024-02-15¶
Upgrade Pygal, which stopped using
pkg_resourcesin 3.0.1; dropsetuptoolsdependency
1.9.0 - 2023-10-26¶
Ensure
procpath explore --database-fileis an absolute path before symlinking it to~/.cache/procpath/sqliteviz/db.sqliteCalculate 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 exploreto export Process Tree Sqliteviz inquirySupport 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 usespkg_resourcesDescribe Total Resident Set Size, MiB, Process Timeline and Process Tree Sqliteviz-only charts in documentation
1.8.1 - 2023-09-22¶
Add missing
procpath plotflags in playbook file reading
1.8.0 - 2023-09-03¶
Add
--database-filetoprocpath exploreto pre-load an SQLite database into Sqliteviz 0.23 or higher.Add named queries for disk read and write rates,
rbsandwbsDrop support for Python 3.7
Drop support for
queries.jsonfile used by Sqliteviz < 0.15 (onlyinquiries.jsonis 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_tickscalledwaitExport two additional Sqliteviz inquiries from
procpath explore: Process Timeline and Total Resident Set Size, MiB (--reinstallis needed ifprocpath explorehas 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 recordwithfeedgnuplotAdd
procpath_versionkey tometatableAdd
--relative-timeargument forprocpath plotto 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 plotCentre a moving average window to avoid the peak lag in
procpath plotAdd 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
tsformat in queries in Sqliteviz bundle – Sqliteviz/Plotly expects millisecondsDescribe process metrics collection in more detail in documentation
1.5.1 - 2021-12-26¶
procpath queryto write no new line instdouton 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 plotsGenerate
procpath exploreSqliteviz bundle from the registered queriesAdd open file descriptors query and swap usage as
fdandswapnamed queriesUse Pygal’s
HumanReadablevalue formatter by defaultWrap forest roots in
{'children': roots}for JSONPath querying to make queries like$..children[?(@.stat.pid == 1)]yield expected resultsExtend
/proc/{pid}/statsupported fields withdelayacct_blkio_ticks,guest_timeandcguest_time
1.4.0 - 2021-10-26¶
Add
/proc/{pid}/fdfile descriptor type countsAdd
/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 aspssandussrespectively.Add
cpu_count,physical_pagesandprocfile_listkeys tometatableAdd optional
procfile_requiredset attribute toprocret.QueryAdd
--share-y-axisargument forprocpath plotto be able to plot different queries on the same axis (e.g. RSS vs PSS)Embed
pygal-tooltips.min.jsin SVGs to make interactive features work offlineChange 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 exporecompatible with Sqliteviz < 0.15 that expects v1 format inqueries.jsonand Sqliteviz >= 0.15 that’s expects v1 or v2 format ininquiries.jsonImprovement of the termination routine of
procpath watchExpose the extent of procfs support in documentation
1.2.0 - 2021-04-11¶
Run the
asvbenchmark in the test stage on CIBreak down
README.rstinto multi-page Sphinx documentationPublish
coverageandasvHTML reports on RTFDFix PID filter for
procpath plotyielding extra resultsBind
None/NULLtobefore,afterandpid_listprocret.Queryparameters 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 watchSupport PyPy 3.7
1.0.0 - 2021-02-21¶
procpath exploreImprove CLI responsiveness
Expose process PIDs under
procpath watchas environment variables,WPS1,WPS2and so onAdd branch PID filter,
--pid-list, toprocpath recordto improve performance of recording at short intervalsRe-model
/procas a forest, a disjoint union of trees, to be able to representkthreaddtree,/procmounted withhidepid != 0, etcAdd
--stop-without-resulttoprocpath recordto be able to stop recording with stop of the target processAdd
--no-restarttoprocpath watchso it can start a target command, accompany it withprocpath recordand all stop with the target commandSupport Python 3.9
0.5.0 - 2020-11-21¶
procpath playAdd SQL query positional argument in
procpath queryfor easier aggregate calculation which previously neededprocpath record -r 1against a temporary databaseAdd
--environmenttoprocpath queryto allow templated queries in playbooksAdd
--logging-levelargument to control logging verbosity including forwarded process standard streams’ outputImprove
procpath watchtermination
0.4.0 - 2020-10-11¶
procpath watchProcess return code in case of
CommandErroris1CLI
--helpimprovement
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-exprto plot value SELECT expressionAdd 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}/statusfileIntegrate
asvfor performance testing
0.2.0 - 2020-09-03¶
procpath plot
0.1.0 - 2020-08-16¶
Move to Heptapod
Rename
--file-listto--procfile-listImprove recording performance. Wrap
executemanyINSERTqueries into a transaction.sqlite3doesn’t rewrite them into a multi-valueINSERTMake
jsonpytha required dependencyAdd
metatable with machine info, page size and clock ticksProvide basic documentation
0.0.2 - 2020-04-13¶
Store timestamps as
float,REALon SQLite’s sideCompensate for measurement latency
0.0.1 - 2020-04-13¶
Initial release