OS4 DepotLogo by Kicko 
(anonymous IP: 216.73.216.191,2465) 
 HomeRecentStatsSearchSubmitUploadsMirrorsContactInfoDisclaimerConfigAdmin
 Menu

 Features
   Crashlogs
   Bug tracker
   Locale browser
 

 Categories

   o Audio (348)
   o Datatype (51)
   o Demo (205)
   o Development (618)
   o Document (24)
   o Driver (101)
   o Emulation (154)
   o Game (1033)
   o Graphics (514)
   o Library (120)
   o Network (238)
   o Office (67)
   o Utility (948)
   o Video (73)

Total files: 4494

Full index file
Recent index file

 Links

  Amigans.net
  Aminet
  IntuitionBase
  Hyperion Entertainment
  A-Eon
  Amiga Future


Support the site


 Readme for:  Utility » Benchmark » amigadiskbench.lha

AmigaDiskBench

Description: a Reaction based disk benchmarking utility
Download: amigadiskbench.lha       (TIPS: Use the right click menu if your browser takes you back here all the time)
Size: 231kb
Version: 2.8
Date: 22 Mar 2026
Author: derfs
Submitter: derfs
Homepage: https://github.com/derfsss/AmigaDiskBench
Category: utility/benchmark
Replaces: utility/benchmark/amigadiskbench.lha
License: Other
Distribute: yes
Min OS Version: 4.1
FileID: 13747
 
Comments: 6
Snapshots: 0
Videos: 0
Downloads: 263  (Current version)
508  (Accumulated)
Votes: 4 (1/0)  (30 days/7 days)

Show comments Show snapshots Show videos Show content Show crashlogs Replace file 
AmigaDiskBench v2.8
===================

AmigaDiskBench is a modern, high-performance disk benchmarking utility
specifically designed for AmigaOS 4.1 Final Edition. It provides a robust,
ReAction-based GUI to measure, analyze, and visualize the performance of
various storage devices, filesystems, and hardware configurations.


Key Features
------------

1. Benchmark Profiles
Choose from a variety of tailored test scenarios:
- Sprinter: Fast, small file I/O and metadata performance test.
- Legacy: Small-block (512B) sequential write to stress worst-case throughput.
- Heavy Lifter: Large file sequential throughput with varying chunk sizes.
- Daily Grind: A pseudo-random mix of operations simulating real-world OS usage.
- Profiler: Detailed filesystem metadata performance analysis.
- Standard Tests: Sequential Read/Write, Random 4K Read/Write, and Mixed 70/30.

Right-click the Test Type chooser and select "Describe Test..." for a detailed
explanation of what the selected test measures, including file sizes, block
sizes, operation counts, and real-world equivalents.

2. Flexible Pass Averaging
Choose how multi-pass results are combined, via Preferences:
- All Passes: Simple arithmetic mean across every pass.
- Trimmed Mean: Excludes the single best and worst pass, averages the rest
  (requires 3+ passes).
- Median: Sorts all passes and picks the single middle value -- eliminates
  outliers without distorting the average.
The currently active method is always shown on the Benchmark tab next to the
Passes count.

3. Pluggable Visualization Profiles
Analyze your data with a powerful, profile-driven graphing engine. Chart
definitions are loaded from .viz files in the Visualizations/ folder -- no
recompilation needed to add or customize charts.

Nine Built-in Profiles:
  - Scaling: Performance vs. block size -- see how chunk size affects
throughput.
  - Trend: Track performance stability over time with linear trend lines.
  - Battle: Head-to-head comparison of multiple drives (collapsed to mean per
    block size).
  - Workload: Compare different test types (Read vs Write, Seq vs Random).
  - Hybrid: Professional diagnostic view overlaying Throughput (MB/s) bars with
    IOPS lines.
  - Peak Performance: Maximum throughput per drive with SATA III and USB 2.0
    reference lines.
  - IOPS Smoothed: Random I/O operations per second with moving average trend.
  - Scaling Curve: Polynomial curve fit showing how throughput scales with block
    size.
  - Filesystem: Compare filesystem performance across all drives (grouped by
    filesystem type).

Profile Features:
  - Chart type selection (line, bar, hybrid).
  - Configurable X/Y axes with custom labels and auto-scaling or fixed ranges.
  - Series grouping by drive, test type, block size, filesystem, hardware,
    vendor, app version, or averaging method.
  - Data collapse aggregation (mean, median, min, max) to reduce multiple runs
    to one data point.
  - Trend lines: linear regression, moving average, or polynomial curve fit.
  - Reference line annotations with labels.
  - Custom color palettes (up to 16 colors per profile).
  - Per-profile filters: include/exclude by test type, block size, volume,
    filesystem, hardware, vendor, product, averaging method, and app version.
  - Minimum pass count, MB/s range, and duration range filters.

- Filtering: On-screen filters for Volume, Test Type, Date Range, and App
  Version remain active on top of profile filters.
- Reload Profiles: Button to rescan the Visualizations/ folder without
  restarting the application.
- VALIDATE Mode: Run with VALIDATE as a Shell argument or icon tooltype to
  check all .viz files for errors without launching the benchmark GUI. Reports
  line numbers and severity.
- Interactive: Hover over data points for precise values.

4. Drive Health Monitoring
Keep an eye on your hardware's physical status:
- S.M.A.R.T. Analysis: Three-tier query strategy for maximum hardware
  compatibility:
  1. Direct ATA via CMD_IDE (works on a1ide, sb600sata, sii3114 drivers).
  2. ATA PASS-THROUGH via HD_SCSICMD (SAT-compliant drivers).
  3. External smartctl fallback (bundled with AmigaOS 4.1 FE).
- Health Indicators: Real-time display of Temperature, Power-On Hours, and
  overall Health Status. Query method shown in status display.
- Assessment: Automatic interpretation of critical attributes (Reallocated
  Sectors, Spin Retry Count, etc.) with threshold comparison.
- Threshold Data: Reads both SMART attribute values and failure thresholds
  from the drive for accurate health assessment.

5. Bulk Testing
Automate your benchmarking workflow:
- Queue Jobs: Select multiple drives and add them to a batch queue.
- Automation: Options to "Run All Test Types" and "Run All Block Sizes"
  (4K to 1M) automatically.
- Progress Tracking: Dedicated Fuel Gauge to track overall batch progress.
- Queue summary shows test name, pass count, averaging method, and block size.

6. History & Data Management
- Persistent Storage: All results are automatically saved to
  AmigaDiskBench_History.csv.
- Comparison: Select any two results to generate a delta report
  (Speedup/Slowdown %).
- Export: Export specific datasets to CSV for external analysis.
- Reports: Generate global summary reports of all test activity.

7. Session Log
Track exactly what AmigaDiskBench is doing in real time:
- Timestamped Entries: Every event (benchmark start, per-pass result,
completion,
  failure) is logged with an [HH:MM:SS] timestamp.
- Live Updates: New log lines appear automatically as benchmarks run -- no
  manual refresh needed.
- Context Menu: Right-click the log to access Select All and Copy.
- Clear Log: Wipes the session transcript and starts a fresh log.
- Copy to Clipboard: Copies the full log text to the system clipboard for
  pasting into a text editor or email.

8. Detailed Disk Information
Inspect the physical and logical structure of your storage:
- Tree View: Hierarchical display organized as Fixed Drives, USB Drives, and
  Optical Drives. Each physical controller appears once (e.g., a1ide.device);
  partitions show their volume/device name and unit number.
- Disk Details: Click a drive node to see the disk name (vendor/product/
  revision), bus type, capacity, geometry, and RDB presence.
- Partition Details (mounted): Volume Name, Size, Used/Free space, Filesystem
  type, and Block count.
- Partition Details (unmounted): DOS device name, size from RDB geometry, and
  filesystem type -- no mounting required.
- Real-Time Updates: Refresh button to rescan when devices are added or removed.


Requirements
------------
* AmigaOS 4.1 Final Edition (or newer).
* Reasonably fast storage device for meaningful results (SSD/NVMe recommended).


Installation
------------
1. Extract AmigaDiskBench.lha to a location of your choice (e.g., Work:).
   This creates an AmigaDiskBench drawer containing the executable, icons,
   readme, visualization profiles, and an AutoInstall script.
2. AutoInstall (optional): Double-click or "Execute AutoInstall" from a Shell
   to copy the application and visualization profiles to SYS:Utilities/.
3. The application requires at least one valid .viz file in the Visualizations/
   folder to start.
4. Launch AmigaDiskBench from the icon.


Visualization Profile Format
-----------------------------
Each .viz file is an INI-style text file placed in the Visualizations/ folder.
Files are loaded alphabetically on startup. Lines starting with # are comments.
All key names and enum values are case-insensitive. String values may be quoted
("like this") or unquoted. Filters use case-insensitive substring matching.

Quick Example:

  [Profile]
  Name        = "Scaling"
  Description = "Performance vs. block size"
  ChartType   = line

  [XAxis]
  Source      = block_size
  Label       = "Block Size"

  [YAxis]
  Source      = mb_per_sec
  Label       = "MB/s"
  AutoScale   = yes

  [Series]
  GroupBy     = drive
  MaxSeries   = 16
  SortX       = yes
  Collapse    = none

  [Filters]
  ExcludeTest = profiler
  MinPasses   = 1

  [TrendLine]
  Style       = linear
  PerSeries   = yes

  [Annotations]
  ReferenceLine = 600, "SATA III"

  [Colors]
  Color = 0x00FF00
  Color = 0xFF6600


Complete Section Reference
..........................

[Profile] (required)
  Name         = string (required)  Display name in profile chooser.
                                    Profile is skipped if missing.
  Description  = string             Tooltip / description text.
  ChartType    = line | bar | hybrid
                 Default: line. "hybrid" auto-enables the secondary Y-axis.

[XAxis]
  Source       = block_size | timestamp | test_index
                 Default: test_index. "block_size" sorts numerically;
                 "timestamp" and "test_index" plot chronologically.
  Label        = string             Default: "X". X-axis title below the chart.

[YAxis]
  Source       = mb_per_sec | iops | min_mbps | max_mbps |
                 duration_secs | total_bytes
                 Default: mb_per_sec. Which result field to plot.
  Label        = string             Default: "MB/s". Y-axis title on the left.
  AutoScale    = yes | no           Default: yes. When "no", uses Min/Max
                                    for a fixed Y range.
  Min          = decimal            Fixed Y minimum (only when AutoScale = no).
  Max          = decimal            Fixed Y maximum (only when AutoScale = no).

[Series]
  GroupBy      = drive | test_type | block_size | filesystem | hardware |
                 vendor | app_version | averaging_method
                 Default: drive. How data points are grouped into colored
                 series.
  SortX        = yes | no           Default: yes for block_size, no otherwise.
                                    Sort data points by X value within each
                                    series.
  MaxSeries    = integer            Default: 0 (unlimited). Cap the number of
                                    series shown.
  Collapse     = none | mean | median | min | max
                 Default: none. When multiple data points share the same X
                 value, reduce them to a single point using the chosen method.

[Filters]
  Filters control which benchmark results are included in the chart. Each
  Exclude*/Include* key can appear multiple times. Matching is case-insensitive
  substring.

  Test type filters (matched against canonical CSV names):
    ExcludeTest = name              Exclude results matching this test type.
    IncludeTest = name              Include only results matching these types.

    Valid test type names:
      Sprinter, HeavyLifter, Legacy, DailyGrind, Sequential, Random4K,
      Profiler, SequentialRead, Random4KRead, MixedRW70/30

  Block size filters (matched against display strings):
    ExcludeBlockSize = name         Exclude results with this block size.
    IncludeBlockSize = name         Include only these block sizes.

    Valid block size names:
      4K, 16K, 32K, 64K, 256K, 1M, Mixed

  Other data filters:
    ExcludeVolume / IncludeVolume
      Matched against volume name (e.g., System, DH0).
    ExcludeFilesystem / IncludeFilesystem
      Matched against filesystem type (e.g., SFS/00, NGF/00).
    ExcludeHardware / IncludeHardware
      Matched against device name (e.g., ahci.device).
    ExcludeVendor / IncludeVendor
      Matched against drive vendor string.
    ExcludeProduct / IncludeProduct
      Matched against drive product string.
    ExcludeAveraging / IncludeAveraging
      Matched against averaging method.
    ExcludeVersion / MinVersion
      Matched against app version string.

    Valid averaging method names:
      AllPasses, TrimmedMean, Median

  Numeric threshold filters:
    MinPasses        = integer      Minimum passes a result must have.
    MinMBs           = decimal      Minimum MB/s to include.
    MaxMBs           = decimal      Maximum MB/s to include.
    MinDurationSecs  = decimal      Minimum test duration in seconds.
    MaxDurationSecs  = decimal      Maximum test duration in seconds.
    DefaultDateRange = today | week | month | year | all
                       Default: all. Initial date range when profile selected.

[Overlay]
  SecondarySource  = any value      Enables the secondary Y-axis (right side).
                                    Used by hybrid charts for IOPS overlay.
  SecondaryLabel   = string         Default: "IOPS". Right Y-axis label.

[TrendLine]
  Style        = none | linear | moving_average | polynomial
                 Default: none. Trend line algorithm.
  Window       = integer            Default: 3. Window size for moving average
                                    (points on each side).
  Degree       = 2 | 3              Default: 2. Polynomial degree (clamped to
                                    2-3). Uses Gaussian elimination.
  PerSeries    = yes | no           Default: no. Draw a separate trend line for
                                    each series, or one global trend.

[Annotations]
  ReferenceLine = value, "Label"    Draws a horizontal dashed line at the given
                                    Y value with a text label. Up to 8 per
                                    profile.
                                    Example: ReferenceLine = 600, "SATA III Max"

[Colors]
  Color        = 0xRRGGBB           Hex color for series (in order). Up to 16
                                    per profile. When omitted, the built-in
                                    8-color palette is used.

Notes:
- A profile must have a [Profile] section with a Name key to be loaded.
- Boolean values accept yes/true/1 for true; anything else is false.
- Exclude*/Include* modes are mutually exclusive per category. If you use
  IncludeTest, only those tests are shown. If you use ExcludeTest, everything
  except those tests is shown. Do not mix both for the same category.
- On-screen GUI filters (Volume, Test Type, Date Range, App Version) are
  applied on top of profile filters.
- Use VALIDATE mode (Shell argument or icon tooltype) to check your .viz files
  for errors before launching.
- See the 9 included .viz files in Visualizations/ for working examples
  covering all features.


Comprehensive Guide
-------------------

1. Running Benchmarks
The Benchmark tab is where performance testing happens.
- Target Drive: Select the volume or partition you wish to test. Note that
  depending on the filesystem, some tests require write access.
- Test Type:
  - Standard Tests: Choose Sequential Read/Write, Random 4K Read/Write, or a
    Mixed 70/30 (Read/Write) workload.
  - Profiles: Use preset profiles like "Sprinter" for quick I/O checks,
    "Heavy Lifter" for sustained throughput testing, or "Daily Grind" for
    everyday usage simulation.
- Parameters: Adjust the Block Size (e.g., 4K, 32K, 1M) and the number of
  Passes. Higher passes yield more reliable averages.
- Average Method: Shown next to Passes. Change it in Preferences.
- Execution: Click Run Benchmark. Monitor the Traffic Light (green/yellow/red)
  for current status, and the Fuel Gauge for overall progress.
- Quit Safety: If you attempt to close the application while a benchmark is
  running, a confirmation dialog will ask whether you really want to quit.

2. Bulk Testing / Queue
For extensive testing sessions, use the Batch Queue.
- Click Add to Queue to stockpile tests.
- Alternatively, use Add All Tests or Add All Block Sizes to quickly generate
  a matrix of workloads for the selected drive.
- Click Start Queue to let AmigaDiskBench run them sequentially.

3. Visualizing Results
The Visualization tab brings your data to life.
- Profile Chooser: Select a visualization profile from the dropdown. Each
  profile defines its own chart type, axes, grouping, filters, trend lines,
  and colors.
- Filters: On-screen filters for Volume, Test Type, and Date Range further
  narrow the displayed data.
- Color By: Automatically set by the selected profile's GroupBy setting
  (e.g., Drive, Filesystem, Test Type). Shown as a read-only label.
- Reload Profiles: Click to rescan the Visualizations/ folder for new or
  modified .viz files.
- Hover: Move your mouse over any data point on the graph to reveal precise
  MB/s and IOPS metrics.

4. Preferences
Open Preferences from the menu to configure defaults applied to all new
benchmarks:
- Default Drive: The volume pre-selected when the application starts.
- Default Test / Block Size / Passes: Starting values for the benchmark
  controls.
- Average Method: How pass results are combined:
  - All Passes -- Simple mean.
  - Trimmed Mean -- Excludes the fastest and slowest pass before averaging.
  - Median -- Uses only the middle pass value from a sorted set.
- CSV Path: Location of the persistent history file.

5. Session Log
The Log tab provides a live, timestamped record of everything that happens
during a session.
- Viewing: Switch to the Log tab at any time. New entries appear automatically
  as benchmarks run -- no need to manually refresh.
- Each line is prefixed with an [HH:MM:SS] timestamp.
- Logged events include: benchmark start (test type, block size, target path),
  per-pass progress updates, final result (MB/s, pass count), failures, and
  bulk queue start/complete summaries.
- Select All: Right-click the log area and choose "Select All" from the context
  menu (or use the keyboard shortcut) to highlight all text.
- Copy: Right-click and choose "Copy" to copy selected text to the clipboard,
  or use the Copy to Clipboard button to copy the entire log regardless of
  selection.
- Clear Log: Click the "Clear Log" button to wipe the transcript and start
  fresh. The session header is automatically re-inserted so the log is never
  left completely blank.

6. Disk Information
The Disk Info tab provides deep hardware enumeration.
- Navigation: Use the left-side tree view. Drives are categorized logically
  into Fixed Drives, USB Drives, and Optical Drives.
- Disk Details: Click a drive node to see the disk name (vendor, product,
  revision from SCSI inquiry), Bus Type, Geometry, Capacity, and RDB status.
- Mounted Partitions: Click a mounted partition to see Volume Name, Used/Free
  space, total Size, and DOS Type Identifier (e.g., SFS/00 (0x53465300)).
- Unmounted Partitions: Click an unmounted partition to see its DOS device
  name, size from RDB geometry, and filesystem type -- no mount required.

7. Drive Health
The Drive Health tab communicates directly with S.M.A.R.T.-enabled drives.
- Status Check: Click Refresh Health Data to retrieve the latest vital
  statistics. The query method used (Direct ATA, ATA Pass-Through, or
  smartctl) is shown in the status display.
- Interpretation: The tool automatically interprets raw attribute data
  (Reallocated Sectors, Power-On Hours, etc.) and provides a human-readable
  health assessment with threshold comparison.

8. History and Exporting
- History View: Review all past benchmarks in a tabular format.
- Comparison: Select any two rows and click Compare Selected to generate a
  delta report showing percentage improvements or regressions.
- Exporting: Use Export to CSV to save the raw data for analysis in external
  spreadsheet software.

9. VALIDATE Mode
Run AmigaDiskBench with the VALIDATE argument (from Shell) or add VALIDATE as
an icon tooltype to check all .viz profile files for syntax errors, unknown
keys, invalid values, and missing required fields. The benchmark GUI does not
open -- only a validation report is shown.
- Shell: Outputs a formatted report with line numbers and severity to stdout.
- Workbench: Opens a standalone window with a scrollable list of findings.


Authors
-------
* derfs


Version History
---------------

v2.8 (Current)
- Fixed: Hard freeze on startup caused by shared Chooser label list between
  Benchmark and Drive Health tabs. The health chooser was not detached before
  the drive list was rebuilt, causing input.device to walk freed nodes during
  window rendering -- triggering a DSI exception in chooser.gadget.
- Fixed: Partition list corruption from double-add bug. Mounted partitions
  were added to their parent drive's linked list twice (once in the mounted
  path, once unconditionally), corrupting Exec list pointers and causing
  stale node references.
- Disk Info scan no longer opens non-storage devices (serial.device,
  a1parallel.device, printer.device, etc.) that were bound to DosEntries,
  avoiding interference with programs using those ports.
- Disk Info scan now pre-checks media availability before performing expensive
  device I/O. Empty virtual drive slots (diskimage.device with no image
  loaded) are skipped entirely, eliminating unnecessary OpenDevice, RDB scan,
  geometry query, and SCSI inquiry cycles.
- Reduced scan noise: non-filesystem DosEntries (CON, RAW, RAM, ENV, URL,
  TEXTCLIP, PIPE, etc.) are no longer logged during drive enumeration.

v2.7
- S.M.A.R.T. rewrite: Three-tier query strategy for broad hardware support:
  1. CMD_IDE/CMDIDE_DIRECTATA: Direct ATA register passthrough (reverse-
     engineered from AmigaOS smartctl binary). Works on a1ide.device,
     sb600sata.device, sii3112ide.device, sii3114ide.device, and other
     drivers implementing the CMD_IDE interface.
  2. HD_SCSICMD with ATA PASS-THROUGH: SAT-compliant CDBs (16-byte with
     12-byte fallback) for drivers supporting SCSI-ATA Translation.
  3. External smartctl: Falls back to the system smartctl command bundled
     with AmigaOS 4.1 Final Edition, parsing its text output.
- S.M.A.R.T. now reads threshold data (ATA Feature 0xD1) in addition to
  attribute values, enabling accurate failure threshold comparison.
- S.M.A.R.T. status display shows which query method succeeded (Direct ATA,
  ATA Pass-Through, or smartctl) for diagnostic transparency.
- Fixed: SCSICmd struct not properly reinitialized between 16-byte and
  12-byte ATA PASS-THROUGH fallback attempts (could cause crashes or
  incorrect data on strict SCSI driver implementations).
- Fixed: SCSI sense buffer now properly allocated for S.M.A.R.T. commands.
- Expanded S.M.A.R.T. attribute name table from 18 to 35 known attributes
  (adds SSD-specific attributes: wear leveling, program/erase fail counts,
  power loss protection, etc.).

v2.6
- Adopted Amiga-style major.minor versioning.
- AutoInstall script for one-click installation to SYS:Utilities/.
- Distribution packaging: "make dist" and "make dist-lha" targets produce a
  ready-to-ship LHA archive with all required files.
- Comprehensive code quality audit across all 48 source files with critical
  bug fixes:
  - Mounted partitions missing from drive scan results (memory leak).
  - DosList device name resolution overwritten with "Generic Disk".
  - UtilityBase use-after-free crash in date functions.
  - Dangling ReAction class pointers after cleanup.
  - ChangeFilePosition return value misused as boolean in random workloads.
  - Unsigned integer underflow in random workloads.
  - IOPS comparison percentage wrong (unsigned subtraction wrap).
  - "Last Week" visualization date filter broken across month boundaries.
  - Hover detection picked wrong data point.
  - Variable shadowing in hybrid chart renderer.
  - Polynomial curve fit truncated beyond 200 data points.
  - CSV report parser buffer overflow and unbounded sscanf.
  - Test type fuzzy matching false positives.
  - History legacy field shifting data corruption.
- Additional fixes: NULL dereference guards, localtime NULL checks, free_bytes
  underflow guard, missing path separator in CSV export, Daily Grind chunk size
  range corrected.
- Dead code removed, professional file headers and documentation added.

v2.5
- Pluggable visualization profiles loaded from .viz files (9 built-in).
- Trend lines: linear regression, moving average, polynomial curve fitting.
- VALIDATE mode for checking .viz files from Shell or Workbench.
- Test description popup (right-click Test Type chooser).
- S.M.A.R.T. drive health monitoring tab.
- Quit confirmation dialog when benchmarks are running.
- IOPS calculation corrected to true ops/second.
- Numerous crash fixes (X1000 drive scanning, Workbench launch, exit during
  benchmarks).

v2.4
- Session Log tab with timestamped, cross-process log entries.
- Copy to Clipboard and Clear Log buttons.
- Context menu fix for classic menu selections.

v2.3
- Flexible pass averaging (All Passes, Trimmed Mean, Median) via Preferences.
- Disk Information Center with hierarchical hardware tree view.
- S.M.A.R.T. column auto-fit, improved drive/partition naming.
- Unmounted partition details from RDB geometry.

v2.2
- Multi-threaded benchmark engine with CSV history persistence.
- ReAction-based GUI with Traffic Light and Fuel Gauge.
- Advanced graphing engine with block size X-axis.
- Random I/O tests with dynamic block sizes.


Copyright © 2004-2026 by Björn Hagström All Rights Reserved