Skip to content

JDiskMark/jdm-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JDiskMark v0.6.3 beta (Windows/Mac/Linux)

Java Disk Benchmark Utility

Features

  • Java cross platform solution
  • Benchmark IO read/write performance
  • Graphs: sample bw, max, min, cum bw, latency (access time)
  • Configure block size, blocks, samples and other benchmark parameters
  • Detect drive model, capacity and processor
  • Save and load benchmark
  • Auto clear disk cache (when sudo or admin)
  • multi threaded benchmarks
  • Default profiles
  • Command line interface
  • available in msi, deb, rpm and zip releses

Releases

https://sourceforge.net/projects/jdiskmark/

Windows Installer (.msi)

A signed windows installer is available for windows environment and can be installed as an administrator.

To install launch the jdiskmark-<version>.msi.

Deb Installer (.deb)

The deb installer is used on Debian linux distributions like ubuntu.

To install use sudo dpkg -i jdiskmark_<version>_amd64.deb and to remove sudo dpkg -r jdiskmark

RPM Installer (.rpm)

The rpm installer is used on RHEL, CENTOS, SUSELinux and Fedora distributions.

To install use sudo rpm -i jdiskmark-<rpm.version>.x86_64.rpm and to remove use sudo rpm -e jdiskmark

Note: the rpm.version is similar to the version but replaces hyphens with periods.

Zip Archive (.zip)

The zip distribution does not require admin for installing but does require Java 21 to be installed seperately.

  1. Download and install java 21 from Oracle.

  2. Verify java 21 is installed:

    C:\Users\username>java --version
    java 21.0.1 2023-10-17 LTS
    Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
    Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
    
  3. Extract release zip archive into desired location.

    Examples:  
    /Users/username/jdiskmark-v0.6.0
    /opt/jdiskmark-v0.6.0
    

Launching as normal process

Note: Running without sudo or a windows administrator will require manually clearing the disk write cache before performing read benchmarks.

  1. Open a terminal or shell in the extracted directory.

  2. run command:

    $ java -jar jdiskmark.jar
    

    In windows double click executable jar file.

  3. Drop cache manually:

    • Linux: sudo sh -c "sync; 1 > /proc/sys/vm/drop_caches"
    • Mac OS: sudo sh -c "sync; purge"
    • Windows: Run included EmptyStandbyList.exe or RAMMap64.exe
      • With RAMMap64 invalidate disk cache with Empty > Empty Standby List

Launching gui with elevated privileges

Note: Take advantage of automatic clearing of the disk cache for write read benchmarks start with sudo or an administrator windows shell.

  • Linux: sudo java -jar jdiskmark.jar
  • Mac OS: sudo java -jar jdiskmark.jar
  • Windows: start powershell as administrator then java -jar jdiskmark.jar

command line examples

display version

java -jar jdiskmark.jar -v

display top level help

java -jar jdiskmark.jar -h

display benchmark options

java -jar jdiskmark.jar run -h
Usage: jdm run [-chsv] [-b=<numOfBlocks>] [-e=<exportPath>] [-l=<locationDir>] [-n=<numOfSamples>]
               [-o=<blockSequence>] [-t=<benchmarkType>] [-T=<numOfThreads>] [-z=<blockSizeKb>]
Starts a disk benchmark test with specified parameters.
  -b, --blocks=<numOfBlocks>
                  Number of blocks/chunks per sample. (Default: 32)
  -c, --clean     Remove existing JDiskMark data directory before starting.
  -e, --export=<exportPath>
                  The output file to export benchmark results in json format.
  -h, --help      Display this help and exit.
  -l, --location=<locationDir>
                  The directory path where test files will be created.
  -n, --samples=<numOfSamples>
                  Total number of samples/files to write/read. (Default: 200)
  -o, --order=<blockSequence>
                  Block order: Sequential, Random. (Default: SEQUENTIAL)
  -s, --save      Enable saving the benchmark.
  -t, --type=<benchmarkType>
                  Benchmark type: Read, Write, Read & Write. (Default: WRITE)
  -T, --threads=<numOfThreads>
                  Number of threads to use for testing. (Default: 1)
  -v, --verbose   Enable detailed logging.
  -z, --block-size=<blockSizeKb>
                  Size of a block/chunk in Kilobytes (KB). (Default: 512)

run benchmarks example syntax

java -jar jdiskmark.jar run -n 25 -t "Write"
java -jar jdiskmark.jar run -l D:\ -n 25 -t "Read"
java -jar jdiskmark.jar run -n 25 -t "Read & Write"

run example benchmark

java -jar jdiskmark.jar run -n 25 -o Random -t "Write" -T 4
...
-------------------------------------------
JDiskMark Benchmark Results (v0.6.3-dev)
-------------------------------------------
Benchmark: Write
Drive: Samsung SSD 990 PRO 4TB
Capacity: 32% (1178/3725 GB)
Timestamp: 2025-10-26T18:17:37.529141200
CPU: 13th Gen Intel(R) Core(TM) i9-13900K
System: Windows 11 / amd64
Java: Java(TM) SE Runtime Environment 21.0.3
Path: C:\Users\james
-------------------------------------------
Order: Random
IOMode: Write
Thread(s): 4
Blocks(size): 25(512)
Samples: 25
TxSize(KB): 409600
Speed(MB/s): 3952.64
SpeedMin(MB/s): 3397.24
SpeedMax(MB/s): 4243.47
Latency(ms): 0.13
IOPS: 28892857
-------------------------------------------

Development Environment

jdiskmark client is developed with NetBeans 21 and Java 21

Source

Source is available on our github repo

Release Notes

v1.0.0 planned

  • TODO: #16 MacOS installer - tyler
  • TODO: #70 app icon - ian
  • TODO: #33 maven build - lane
  • TODO: #40 gui presentation issues - james
  • TODO: #78 throttle graphics render - valerio
  • TODO: #95 disk cache purging - valerio
  • #15 deb installer (Ubuntu)
  • #98 rpm installer (Redhat)
  • #42 default profiles
  • #69 command line interface
  • #84 processor info resolved for (SP) installs
  • #73 refactor benchmark data model, keyboard op sel

v0.6.2 linux optimized ui

  • #64 persist IOPS, write sync
  • control panel on left
  • allow concurrent version runs
  • event tab swapped w disk location

v0.6.1 ms app store release

  • JDiskMark in title and msi vendor name
  • Remove "Average" from "Access Time" label

v0.6.0

  • #13 Detect drive info on startup
  • #12 update look and feel (windows)
  • #22 foreign capacity reporting
  • #23 delete selected benchmarks
  • #10 IOPS reporting
  • #25 linux crash, capacity w terabytes and exabytes
  • write sync default off
  • #26 lowercase project and jar
  • #20 threading and queue depth
  • #36 I/O Mode dropdown uses enum values for type safety

v0.5.1

  • resolve #17 invalid disk usage reported win 10
  • msi installer available

v0.5

  • update for java 21 LTS w NetBeans 20 environment: eclipselink 4.0, jpa 3.1, modelgen 5.6, annotations 3.1, xml.bind 4.0
  • increased drive information default col width to 170
  • time format updated to yyyy-MM-dd HH:mm:ss
  • default to 200 marks
  • replace Date w LocalDateTime to avoid deprecated @Temporal
  • disk access time (ms) - plotting disabled by default
  • replace display of transfer size with access time in run panel
  • GH-2 auto clear disk cache for combined write read benchmarks
  • GH-6 save and load benchmarks and graph series
  • break out actions into seperate menu
  • admin or root indicator, architecture indicator
  • GH-8 used capacity and total capacity
  • initial color palette options
  • report processor name

v0.4

  • updated eclipselink to 2.6 allows auto schema update
  • improved gui initialization
  • platform disk model info:
    • windows: via powershell query
    • linux: via df /data/path & lsblk /dev/path --output MODEL
    • osx: via df /data/path & diskutil info /dev/disk1

v0.3

  • persist recent run with embedded derby db
  • remove "transfer mark number" from graph
  • changed graph background to dark gray
  • resizing main frame stretches tabbed pane instead of empty panel

v0.2

  • auto generate zip release ie. jdiskmark-v0.2.zip
  • added tabbed pane near bottom to organize new controls
  • format excessive decimal places
  • show recent runs (not persisted)
  • default to nimbus look and feel

v0.1

  • initial release

Proposed Features

  • upload benchmarks to jdiskmark.net portal (anonymous/w login)
  • local app log for remote diagnostics
  • selecting a drive location displays detected drive information below
  • speed curves w rw at different tx sizes
  • response time histogram > distribution of IO
  • IOPS charts, review potential charts
  • help that describes features and controls

issues

  • read&write not consistant with order caps
  • bottom margins between table to bar to window edge should be the same

Windows Paths Examples for Building

For ant builds

C:\apache-ant-1.10.15\bin

For maven builds

C:\apache-maven-3.9.10\bin

For code signing

C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\

About

Cross-platform Java Disk Benchmark Utility for measuring drive IO performance.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages