Skip to content

Releases: navidpadid/ProcLens

Release v3.0.1

16 Apr 01:28
6751dbb

Choose a tag to compare

Changelog

Add I/O read per second, fix bug sizing of io overview

This pull request extends the process overview functionality to support and display read byte rates (RD/s) alongside existing metrics, and updates the codebase to handle size fields with units (e.g., "1 GB", "100 MB") for I/O statistics. It also adds comprehensive test coverage for these new features.

Feature enhancements

  • Added support for parsing and displaying read_bytes statistics with unit suffixes (B, KB, MB, GB, TB), similar to write_bytes, in the process overview plots. This includes a new RD/s sparkline and label in the UI.

Parsing improvements

  • Introduced the parse_size_field_bytes function to robustly handle size fields with units when parsing I/O statistics. This ensures correct interpretation of values such as "1 GB" or "512 MB".

Testing updates

  • Updated and expanded tests to cover new parsing logic and ensure the overview output includes the new RD/s metric, as well as correct handling and display of unit-suffixed values.

Version: 3.0.1 | Type: patch

Binary package includes

  • amd64/proclens_module.ko
  • amd64/proclens
  • arm64/proclens_module.ko
  • arm64/proclens
  • install.sh
  • uninstall.sh
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install or update: sudo ./install.sh
  • Run user tool: sudo proclens
  • Uninstall: sudo ./uninstall.sh

Release v3.0.0

10 Apr 07:31
33c064b

Choose a tag to compare

Changelog

New Overview Section
The Overview section (section 5) is now the default view, a condensed Overview page, recent trend plots, and switchable Memory, Network, Threads, and I/O sections. It features 32-sample trend lanes (histograms) for key metrics (CPU, RSS, RX/s, TX/s, WR/s). It also adds comprehensive tests for the new Overview functionality and updates user instructions throughout the documentation.


Version: 3.0.0 | Type: major

Binary package includes

  • amd64/proclens_module.ko
  • amd64/proclens
  • arm64/proclens_module.ko
  • arm64/proclens
  • install.sh
  • uninstall.sh
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install or update: sudo ./install.sh
  • Run user tool: sudo proclens
  • Uninstall: sudo ./uninstall.sh

Release v2.7.3

09 Apr 03:58
1605019

Choose a tag to compare

Changelog

the units are now auto for i/o

This pull request updates the way I/O statistics are displayed by formatting byte counts with human-readable units (B, KB, MB, GB) rather than raw numbers, and ensures the formatting is tested and reflected in the output. The changes improve clarity for users interpreting I/O data.

Formatting improvements for I/O statistics

  • Updated print_io_stats in proclens_module.c to use the format_size_with_unit helper for all byte-count fields, so values are shown as "KB", "MB", or "GB" where appropriate, instead of just raw numbers.
  • Enhanced the format_size_with_unit function in proclens_module.h to support gigabyte ("GB") formatting in addition to bytes, kilobytes, and megabytes.

Testing and output validation

  • Added new test cases in proclens_module_tests.c to verify correct formatting for gigabyte values.
  • Updated the expected output in proclens_tests.c to reflect the new unit-suffixed formatting, specifically for the io_intensity field.

Version: 2.7.3 | Type: patch

Binary package includes

  • amd64/proclens_module.ko
  • amd64/proclens
  • arm64/proclens_module.ko
  • arm64/proclens
  • install.sh
  • uninstall.sh
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install or update: sudo ./install.sh
  • Run user tool: sudo proclens
  • Uninstall: sudo ./uninstall.sh

Release v2.7.2

06 Apr 04:42
9aaa346

Choose a tag to compare

Changelog

minor error log improvement

This pull request makes a minor improvement to the user guidance in the ensure_module_loaded function. The hint message now includes an additional suggestion for loading the kernel module, making it clearer for users how to proceed if the module is not loaded.


Version: 2.7.2 | Type: patch

Binary package includes

  • amd64/proclens_module.ko
  • amd64/proclens
  • arm64/proclens_module.ko
  • arm64/proclens
  • install.sh
  • uninstall.sh
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install or update: sudo ./install.sh
  • Run user tool: sudo proclens
  • Uninstall: sudo ./uninstall.sh

Release v2.7.1

02 Apr 01:31
2141f47

Choose a tag to compare

Changelog

Refactor, guardrail, cleanup

This pull request introduces a comprehensive release automation system for the ProcLens project, focusing on cross-architecture packaging and improved documentation of project structure and standards. The most significant changes are the addition of robust release scripts for versioning, artifact bundling, and installation, as well as a major overhaul of the Copilot instructions to reflect the current architecture, workflows, and coding standards.

Release Automation and Packaging:

  • Modularized scripts to automate version calculation, tag creation, cross-architecture binary builds, and packaging of release artifacts:
    • .github/scripts/release/calculate-new-version.sh: Determines the next semantic version based on release type.
    • .github/scripts/release/create-and-push-tag.sh: Creates and pushes annotated tags for releases, skipping if the tag already exists.
    • .github/scripts/release/build-target-binaries.sh: Builds kernel module and userspace binaries for a specified architecture and kernel version, placing outputs in architecture-specific directories.
    • .github/scripts/release/create-bundle-package.sh: Packages cross-architecture binaries, generates install/uninstall scripts, a quickstart guide, and produces a tarball with checksum for distribution.

Documentation and Standards:

  • Major rewrite of .github/copilot-instructions.md to provide:
    • An up-to-date overview of the hybrid kernel/userspace architecture and key files.
    • Detailed coding standards, formatting, and interoperability guidance for kernel and userspace code, emphasizing checkpatch and clang-format interplay.
    • Clear build, test, and release workflows, including QEMU-based testing and manual enforcement requirements for kernel code quality.
    • Explicit do/don’t lists, common pitfalls, and references to project and kernel documentation.

Formatting Configuration:

  • Increased the ColumnLimit to 100 and set BreakStringLiterals: false in .clang-format to align with the project's kernel coding style and reduce checkpatch conflicts.

Version: 2.7.1 | Type: patch

Binary package includes

  • amd64/proclens_module.ko
  • amd64/proclens
  • arm64/proclens_module.ko
  • arm64/proclens
  • install.sh
  • uninstall.sh
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install or update: sudo ./install.sh
  • Run user tool: sudo proclens
  • Uninstall: sudo ./uninstall.sh

Release v2.7.0

28 Mar 21:17
21ff036

Choose a tag to compare

Changelog

Version support, installer script, and rebranding

This pull request performs a comprehensive project-wide rename and rebranding, transitioning from the old elf_det and proc_elf_ctrl naming to the new proclens_module (kernel module) and proclens (user tool). It updates all relevant documentation, build scripts, CI/CD workflows, and packaging logic to use the new names. Additionally, it introduces bundled installer and uninstaller scripts for easier deployment of release binaries.

Key Changes

Project-wide Renaming and Documentation Updates

  • All references to elf_det and proc_elf_ctrl have been replaced with proclens_module and proclens across documentation, instructions, and code comments, ensuring consistency and clarity throughout the project (.github/copilot-instructions.md, README.md, .cppcheck-suppressions).

Build System and Makefile Modernization

  • The Makefile now builds proclens_module.ko and proclens, passes version information to user binaries, and updates unit test targets and install/uninstall commands to use the new names.

Continuous Integration and Release Workflow Updates

  • All CI/CD workflow steps, artifact names, and packaging logic in .github/workflows/ci.yml and .github/workflows/release.yml have been updated to use the new binary/module names. Release notes and quickstart instructions now reference the new install and usage flow.

Bundled Installer and Uninstaller Scripts

  • Release packages now include install.sh and uninstall.sh scripts, which automate installation, updating, and removal of both the kernel module and user binary. These scripts handle architecture detection, module loading/unloading, and file placement for a smoother user experience.

User Experience Improvements

  • Documentation and quickstart guides have been updated to recommend the new installer scripts as the preferred installation method, while still documenting manual installation for advanced users.

Version: 2.7.0 | Type: minor

Binary package includes

  • amd64/proclens_module.ko
  • amd64/proclens
  • arm64/proclens_module.ko
  • arm64/proclens
  • install.sh
  • uninstall.sh
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install or update: sudo ./install.sh
  • Run user tool: sudo proclens
  • Uninstall: sudo ./uninstall.sh

Release v2.6.0

27 Mar 23:43
d71ddb1

Choose a tag to compare

Changelog

I/O stats added

This pull request introduces comprehensive per-process I/O statistics to the Linux kernel module and its user-facing tools, expanding both the /proc/elf_det/ output and the live dashboard interface. The changes include kernel-side data collection, user interface enhancements, new helper functions, and improved documentation and testing to support the new I/O section.

Key Changes

Kernel Module Enhancements

  • Added print_io_stats() in src/elf_det.c to output per-process I/O statistics (syscall and storage byte counters, syscall counts, averages, and intensity), with graceful fallback if CONFIG_TASK_XACCT is disabled. Integrated this into the main output handler (elfdet_show).
  • Introduced helper functions in src/elf_det.h to safely compute average bytes per syscall and aggregate I/O intensity, with corresponding unit tests in src/elf_det_tests.c.

Userland Tool and Interface Updates

  • Extended src/proc_elf_ctrl.c to support a new I/O section (VIEW_IO), update section filtering logic, and ensure the live dashboard and argument mode can display I/O statistics.
  • Updated UI controls and documentation to reflect the new [io] section and its navigation (keys 1, 2, 3, 4).

Documentation Improvements

  • Expanded README.md and .github/copilot-instructions.md to describe the new I/O statistics, section navigation, and kernel config dependencies. Added detailed field descriptions and usage notes in docs/TECHNICAL.md.
  • Added testing instructions for I/O stats, including expected output and fallback behavior, in docs/TESTING.md.

Automated Testing

  • Enhanced e2e/qemu-test.sh to validate presence and correctness of the [io] section, average read metrics, and I/O intensity for multiple PIDs, ensuring robust regression coverage.
  • Updated unit and integration tests to cover new helper logic and I/O section output.

Summary

These changes provide richer insight into process-level I/O activity, improve usability, and ensure reliability through thorough testing and documentation.


Version: 2.6.0 | Type: minor

Binary package includes

  • amd64/elf_det.ko
  • amd64/proc_elf_ctrl
  • arm64/elf_det.ko
  • arm64/proc_elf_ctrl
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install module: sudo insmod <arch>/elf_det.ko
  • Run user tool: sudo ./<arch>/proc_elf_ctrl
  • Unload module: sudo rmmod elf_det

Release v2.5.1

27 Mar 02:02
45b95bb

Choose a tag to compare

Changelog

logo and testing with the kernel module inserted tested at user side

This pull request introduces robust startup validation for the live mode in proc_elf_ctrl, ensuring the required kernel module and proc files are present before proceeding. It adds a startup logo, improves error reporting, and updates the test suite with mocks and new test cases for these behaviors.

Startup validation and error handling:

  • Added print_logo_text, ensure_module_loaded, and ensure_proc_files_present functions to proc_elf_ctrl.c to display a logo and check for the presence of the elf_det kernel module and required proc files (pid, det, threads). The program now exits immediately with an error if any are missing, with user-friendly error messages and hints.

Testing improvements:

  • Enhanced the test suite in proc_elf_ctrl_tests.c to mock module and proc file presence, including new test cases to verify that the main function exits early if the module is not loaded or if required proc files are missing.
  • Updated test mocks and assertions for improved reliability and coverage, including stricter buffer checks and improved string handling in tests.

Documentation:

  • Updated docs/TESTING.md to document the new startup validation behavior, including the logo display and immediate exit conditions for missing dependencies.

Minor code quality improvements:

  • Added the ARRAY_SIZE macro for safer array handling and improved error handling in time formatting.

Version: 2.5.1 | Type: patch

Binary package includes

  • amd64/elf_det.ko
  • amd64/proc_elf_ctrl
  • arm64/elf_det.ko
  • arm64/proc_elf_ctrl
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install module: sudo insmod <arch>/elf_det.ko
  • Run user tool: sudo ./<arch>/proc_elf_ctrl
  • Unload module: sudo rmmod elf_det

Release v2.5.0

26 Mar 22:41
2da7066

Choose a tag to compare

Changelog

Live mode

This pull request adds comprehensive documentation and unit tests for the new live dashboard mode in proc_elf_ctrl, which enables real-time, interactive monitoring with section switching and snapshot history. The most significant changes are the expanded documentation of live mode features and controls, along with new and improved unit tests that ensure correct behavior for live mode views, timestamps, and navigation.

Documentation updates for live dashboard mode

  • Added detailed descriptions in README.md and docs/TECHNICAL.md for live mode, including section switching, snapshot navigation, timestamp display, and process switching controls.
  • Updated docs/TESTING.md to cover both manual and automated testing of live mode, including expected behaviors, controls, and quick checks using a fake /proc directory.

Unit test improvements for live mode

  • Added new tests in src/proc_elf_ctrl_tests.c to verify section filtering (memory/network), timestamp formatting, live header/footer output, and snapshot history navigation.
  • Refactored and removed legacy interactive mode mocks and helpers that are no longer relevant with the new live mode.
  • Included <ctype.h> for new assertions in timestamp formatting tests.

Version: 2.5.0 | Type: minor

Binary package includes

  • amd64/elf_det.ko
  • amd64/proc_elf_ctrl
  • arm64/elf_det.ko
  • arm64/proc_elf_ctrl
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install module: sudo insmod <arch>/elf_det.ko
  • Run user tool: sudo ./<arch>/proc_elf_ctrl
  • Unload module: sudo rmmod elf_det

Release v2.4.2

21 Mar 20:09
450db21

Choose a tag to compare

Changelog

Documentation

This PR improves documentation and the release workflow to increase clarity, consistency, and reduce duplication.

  • Enhanced .github/workflows/release.yml to generate richer release notes with a changelog, binary summary, and quick-start guide for both manual and PR-triggered releases.
  • Rewrote docs/RELEASE.md to clarify automation: release notes from PR metadata, builds for amd64/arm64, and no automatic README/version updates.
  • Expanded docs/CODE_QUALITY.md with details on static analysis, cppcheck parallelism, and pre-commit hooks, emphasizing resolving issues before release.
  • Updated docs/TECHNICAL.md to clarify /proc/elf_det/pid behavior and improve kernel module documentation accuracy.
  • Improved docs/TESTING.md with QEMU-based reproducible workflow guidance and clearer environment details.
  • Removed e2e/quick-reference.sh and related references to eliminate redundant documentation.
  • Updated QEMU disk size from 10GB to 20GB.

Overall, these changes make the release process more transparent and improve developer onboarding while reducing maintenance overhead.


Version: 2.4.2 | Type: patch

Binary package includes

  • amd64/elf_det.ko
  • amd64/proc_elf_ctrl
  • arm64/elf_det.ko
  • arm64/proc_elf_ctrl
  • README-QUICKSTART.md

Quick Start summary:

  • Supports Linux kernel 6.8.0.x
  • Includes binaries for amd64 (x86_64) and arm64 (aarch64)
  • Install module: sudo insmod <arch>/elf_det.ko
  • Run user tool: sudo ./<arch>/proc_elf_ctrl
  • Unload module: sudo rmmod elf_det