Skip to content

Latest commit

 

History

History
323 lines (284 loc) · 11.3 KB

NEWS.md

File metadata and controls

323 lines (284 loc) · 11.3 KB

2026-06-28: PerfMonger 1.0.1

  • Bugfix
    • [record] subcommand:
      • Honor the -d/--disk filter in the direct-API path (#0026).
      • Handle SIGTERM gracefully instead of leaving partial output (#0037).
      • Propagate buffer flush errors during the recording loop, and flush before closing gzip on panic paths (#0015, #0039).
      • Surface session lock errors when writing the session file, and close the player stdin pipe when StdoutPipe fails (#0013, #0040).
      • Stop the signal handler and join the player stdout drain goroutine on return (#0014, #0027).
    • [play] subcommand:
      • Surface WriteString errors in the output path (#0017).
    • [summary] subcommand:
      • Return JSON serialization errors instead of silently writing 'skip by err', and reuse the real record for single-record logs (#0021, #0022).
    • [plot] subcommand:
      • Escape output paths embedded in gnuplot scripts and avoid shell injection via the gnuplot binary path (#0023, #0025).
      • Propagate errors when saving gnuplot files and flushing buffers, guard against a nil CPU record, and close temp files exactly once (#0024, #0051, #0052, #0053).
    • [fingerprint] subcommand:
      • Surface command failures and tar/gzip Close errors when building the tarball (#0031, #0032).
    • [init-shell] subcommand:
      • Recognize versioned shell binary names and report detection failure clearly instead of 'unsupported shell: .' (#0034, #0035).
    • Core robustness:
      • Accept io.EOF from short-format diskstats lines, guard GetInterruptUsage against zero interval and empty/short entries, guard ReadNetStat against short /proc/net/dev lines, and close the directory handle in getPartitions (#0041, #0045, #0046, #0047, #0055, #0056).

2026-05-29: PerfMonger 1.0.0

  • Changes
    • Reimplemented entirely in Go and distributed as a single perfmonger binary.
    • Removed the Ruby implementation and gem packaging (#0004).
    • Dropped support of Darwin (Mac OS X) which was already deprecated.
    • Started distributing prebuilt Linux (amd64/arm64) binaries via GitHub Releases (#0007).

2023-05-13: PerfMonger 0.14.4

  • Yanked release 0.14.3 and repushed release binary.

2023-03-30: PerfMonger 0.14.3

  • Bugfix
    • [plot] subcommand:
      • Plot memory usage info correctly when available.

2021-12-01: PerfMonger 0.14.2

  • Bugfix
    • [player] subcommand:
      • Read stdin if no argument is given (required behaviour for live subcommand)

2021-12-01: PerfMonger 0.14.1

  • Changes
    • [plot] subcommand:
      • Skip plotting memory usage if it is not recorded

2021-07-27: PerfMonger 0.14.0

  • New features
    • [plot] subcommand:
      • Added memory usage plot
  • Changes
    • [record] subcommand:
      • Additionaly record 'Hugepagesize' in memory usage

2021-07-26: PerfMonger 0.13.1

  • New features
    • [play] subcommand:
      • Added --disk-only option to filter results of not interesting disks
  • Note: v0.13.0 is yanked from rubygems.org

2021-07-08: PerfMonger 0.12.1

  • Bug fixes
    • [record] subcommand:
      • --kill waits until a recorder process surely exits

2021-05-10: PerfMonger 0.12.0

  • New features
    • [record] subcommand:
      • Add memory usage collection

2021-02-10: PerfMonger 0.11.3

  • Bug fixes
    • [plot] subcommand:
      • Fall back to available gnuplot terminal
  • Changes
    • [plot] subcommand:
      • Added --with-gnuplot option for specifying gnuplot binary

2020-03-31: PerfMonger 0.11.2

  • Bug fixes
    • [plot] subcommand:
      • Remove temporary directory correctly
  • Changes
    • CI environment
      • Changed golang version to 1.14
      • Dropped support of ruby older than 2.4
      • Added ruby 2.6 and 2.7

2018-05-15: PerfMonger 0.11.1

  • Bug fixes
    • [record] subcommand:
      • Fixed session detection mechanism (did not worked for execution under sudo)

2018-05-15: PerfMonger 0.11.0

  • New features
    • [play] subcommand:
      • Add --color, --pretty option for pretty JSON output
    • [live] subcommand:
      • Add --color, --pretty option for pretty JSON output
    • [fingerprint] subcommand:
      • Collect additional info: numactl, ec2-metadata
  • Bug fixes
    • [plot] subcommand:
      • Correctly filter out disk usages by --disk-only option
  • Changes
    • Dropped support of i386
    • Use go-projson for JSON output
    • [plot] subcommand:
      • Stacked graphs layout in allcpu.pdf

2017-06-19: PerfMonger 0.10.0

  • New features
    • [record] subcommand:
      • Record /proc/interrupts information (experimental)
      • Support gzipped output format
        • Enabled by default
        • Disabled with --no-gzip option
    • [play] subcommand:
      • Play /proc/interrupts information by cpu cores (experimental)
      • Support gzipped input
    • [summary] subcommand:
      • Summarize /proc/interrupts information (experimental, currently outputs only in JSON mode)
      • Support gzipped input
    • [fingerprint] subcommand:
      • Additionally log biosdecode and nvme info
    • Improved shell completion
  • Bug fixes
    • [record] subcommand:
      • Get CPU count by nproc(1) in linux subsystem
      • Create a session only in background mode, and an existing session do not prevent launching perfmonger-record in foreground mode
    • [fingerprint] subcommand:
      • Surpress accessing non-readable sysfs files

2016-12-12: PerfMonger 0.9.0

  • New features
    • [init-shell] subcommand: Added for loading shell completion function from rcfile
      • zsh support
      • bash support
    • [fingerprint]
      • log LVM, fdisk, and lsblk info
    • [plot]
      • Fast plot data formatting with new core implementation
      • Add --disk-only, --disk-read-only, --disk-write-only to filter disks for plot
      • Add --plot-iops-max to limit Y-axis range

2016-11-22: PerfMonger 0.8.2

  • Bug fixes
    • [record] subcommand:
      • Fix null checking

2016-11-22: PerfMonger 0.8.1

  • New features
    • [record] subcommand:
      • Add --status to check currently running session
  • Bug fixes
    • [record] subcommand:
      • Open correct lock file for session management
      • Error handling in --kill processing (no session, already dead session PID)

2016-11-22: PerfMonger 0.8.0

  • New features
    • [record] subcommand:
      • Implemented "session" for preventing double start
      • Add --background and --kill option for running perfmonger in background (useful for scripting)
    • [summary] subcommand:
      • Add --disk-only option to filter results of not interesting disks

2016-10-02: PerfMonger 0.7.1 released

  • Bug fix
    • [record] subcommand:
      • Parse /proc/stat with 10 columns (9 values) correctly

2015-03-08: PerfMonger 0.7.0 released

  • New features
    • Bash completion support
    • Zsh completion support
    • [live] subcommand:
      • Record and play perfmonger log in JSON
    • [record] subcommand:
      • Add Network device usage
    • [play] subcommand:
      • Play a perfmonger log and print in JSON
  • Changes
    • [record] subcommand:
      • Its core was completely rewritten in Go and records data in encoding/gob format
      • Carve out JSON output function to [play] subcommand
  • Bug fixes
    • [plot] subcommand:
      • Correctly find supported terminal
    • [server] subcommand:
      • Disambiguate command line options

2015-01-18: PerfMonger 0.6.0 released

  • New features
    • Add gem packaging support
    • Add subcommand alias mechanism
    • [record] subcommand:
      • Exponential interval backoff.
        • Recording interval gets longer every after 2000 records.
        • Enable by default (disabled by --no-interval-backoff option)
    • [fingerprint] subcommand:
      • Record output of dmidecode(1) if available
  • Changes
    • [record] subcommand:
      • Record information about xvd* devices (Xen virtual blockdev)
      • Support start delay and timeout of measurement
      • Output JSON format change:
        • "r/s" => "riops"
        • "rsec/s" => "rsecps"
        • "w/s" => "wiops"
        • "wsec/s" => "wsecps"
        • "%idle" => "idle"
        • "%usr" => "usr"
        • (...)
    • [fingerprint] subcommand:
      • Rename former 'bukko' to 'fingerprint'
      • Create a tarball instead of creating files under output directory
    • [summary] subcommand:
      • Pager support for summary output
    • [plot] subcommand:
      • Reduced memory usage
  • Bug fixes
    • plot subcommand
      • In all-CPU graph, correctly calculate # of columns with small(2-3) # of CPUs
    • summary subcommand
      • Correctly calculate I/O information of all devices

2013-12-03: PerfMonger 0.5.1 released

This is a bug fix release.

  • Bug fixes
    • record subcommand
      • Fix corrupted device name output in case of realloc-ing an output buffer

2012-11-29: PerfMonger 0.5.0 released

This release focuses on improvement of usability. Newly added 'summary' subcommand is very useful for summarizing recorded perfmonger log files. The release also has many other improvements and bug fixes, including support of Ruby 1.8.7 (only Ruby 1.9/2.0 were supported before).

PerfMonger is available on yum repository from this release.

  • New features
    • Add new subcommands
      • 'perfmonger summary LOG_FILE' ... summarization of perfmonger log file
  • Changes
    • [record] subcommand
      • Show all devices and CPU usage by default
      • add -D option to show all devices
    • [bukko] subcommand
      • Save Linux distro info
      • Save kernel module info
      • Save sysctl info
      • Detailed PCIe config collection
      • Detailed IO queue config collection
    • Remove dependency on glib2
  • Bug fixes
    • Refactor configure.ac / Makefile.am
    • bukko subcommand
      • Find lspci(1) binary manually
    • stat subcommand
      • Avoid using Process.spawn in Ruby 1.8.7
    • summary subcommand
      • Corrected invalid %other in 'stat' summary

2013-07-29: PerfMonger 0.4.0 released

  • New features
    • Show version number with -v option
    • Add new subcommands
      • 'perfmonger stat ' ... monitoring during command execution. It works like 'perf stat '
      • 'perfmonger server' ... self-contained realtime HTML5-based monitor
      • 'perfmonger bukko' ... gathering system information as much as possible
    • 'perfmonger record' records # of sectors per second, I/O latency, I/O block size, I/O queue length
    • add RSpec specs for testing ruby library part
    • 'perfmonger plot' generates a graph of CPU usage for each core
  • Changes
    • Default output format of 'perfmonger plot' is changed from EPS to PDF
      • It requires pdfcairo supported gnuplot 4.6 or later
  • Fixed bugs
    • Avoid broken JSON by interrupted with SIGINT/SIGTERM by handling signals correctly

2013-05-26: PerfMonger 0.3.0 released

  • New features
    • Context switch frequency monitoring
    • 'perfmonger COMMAD' style invocation
      • perfmonger record ... record monitoring data
      • perfmonger plot ... plot recorded data
  • Fixed bugs
    • Broken JSON data by partial flush
    • Do not say 'panic' if interval is too short
    • Do not try to build tests without Cutter

2013-02-04: PerfMonger 0.2.0 released

  • New features
    • CPU usage monitoring

2011-12-09: PerfMonger 0.1.0 released

  • New features
    • I/O performance monitoring