![]() | Logo by Nickman (anonymous IP: 216.73.216.191,2465) | |||||||||||||
| ||||||||||||||
Audio (348) Datatype (51) Demo (205) Development (618) Document (24) Driver (101) Emulation (154) Game (1033) Graphics (514) Library (120) Network (238) Office (67) Utility (948) Video (73) Total files: 4494 Full index file Recent index file
Amigans.net Aminet IntuitionBase Hyperion Entertainment A-Eon Amiga Future
Support the site
|
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 |