Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

DiskSpeed, hdd/ssd benchmarking (unRAID 6+), version 2.10.10

Featured Replies

Hi !

 

My cache SSD is stuck at 0% Trimming when I try to bench it using this tool. Anything special I can try ?

 

 

Edited by vizi0n

  • Replies 1.1k
  • Views 389.4k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • jbartlett
    jbartlett

    When I tested this utility against my production server, I noticed that I had a drive going wonky on me. I couldn't even test it at first because it kept tripping the SpeedGap detection in which the m

  • jbartlett
    jbartlett

    I'm taking this application out of BETA status. Version 2.0 has been released.   Release 2.0 Added progress bars to the drive benchmarking Rewrote the Controller Benchmark to be

  • Right Proper SSD benchmarking has been added. To perform a benchmark, a configurable number of test files of a given size (defaults to 10 2GB files) are written to the drive and then read back. The ov

Posted Images

  • Author
35 minutes ago, vizi0n said:

Hi !

 

My cache SSD is stuck at 0% Trimming when I try to bench it using this tool. Anything special I can try ?

 

Click on the period (just to the right of it) at the end of "hide or show it" line when benchmarking to display the hidden iframes that are doing the actual work. If there was an error during the trim process, it will show up there. Copy-n-paste that error here (note you don't need the java stack trace if displayed)

@jbartlett thanks for the hint.

 

Here is the output of the debug log from the dot

 

Most likely that my controller does not support TRIM

 

SSD Run Slot: 1
19:30:31 Performing random seek tests
19:30:41 Performing sequential seek tests
19:30:53 Performing drive latency tests
Random Seek: 49697
SequentialSeek: 5018
DriveLatency: 1633261
Lucee 5.3.10.120 Error (application)
Message 	Error invoking external process
Detail 	fstrim: /mnt/UNRAID/cache: FITRIM ioctl failed: Remote I/O error
Stacktrace 	The Error Occurred in
/var/www/BenchmarkDriveController.cfm: line 234

    232:
    233: <CFFILE action="write" file="#OutDir#/trim.sh" mode="766" output="fstrim #MountPoint#" addnewline="NO">
    234: <CFEXECUTE name="#OutDir#/trim.sh" timeout="3060" />
    235: <CFSET WriteSpeedList="">
    236: <CFSET TotalTestFiles=0>

 

Edited by vizi0n

  • Author
On 5/8/2023 at 6:21 PM, vizi0n said:

Here is the output of the debug log from the dot

 

Most likely that my controller does not support TRIM

 

Thank you. I added an error trap around the trim process to catch this, it'll go out in the next release.

On 5/4/2023 at 1:44 AM, jbartlett said:

 

Click on the period (just to the right of it) at the end of "hide or show it" line when benchmarking to display the hidden iframes that are doing the actual work. If there was an error during the trim process, it will show up there.

apologies for the delay... This is what I have got,... itàs been like this for more than half an hour...image.png.a2f11217145bed10c17d668d36c8ae86.png 

  • Author
8 hours ago, Marcco said:

apologies for the delay... This is what I have got,... itàs been like this for more than half an hour...

 

It errored, probably your nvme drive doesn't support the trim function. If you click on that hidden link I mentioned, it would show the error message (same as in a recent previous post in this thread). I added a fix which will be on the next release. I'm working on adding more than 4 write threads but it seems to barf at 8 threads but works on others - trying to figure out why.

12 hours ago, jbartlett said:

 

It errored, probably your nvme drive doesn't support the trim function. If you click on that hidden link I mentioned, it would show the error message (same as in a recent previous post in this thread). I added a fix which will be on the next release. I'm working on adding more than 4 write threads but it seems to barf at 8 threads but works on others - trying to figure out why.

I wish I could but I have clicked all around without finding the link you mentioned

  • Author
On 5/14/2023 at 10:09 AM, Marcco said:

I wish I could but I have clicked all around without finding the link you mentioned

image.thumb.png.cc3b434db43fb8d64457ae1486eb1461.png

 

Hover just to the right of the period where marked here, the cursor will still have the text selection icon, if you see the arrow cursor, you're too far over.

  • 2 weeks later...

I'm also having this problem where nothing loads at benchmark page, I tried with version 2.10 and it also had this, but when I used the oldest image 2.9.4 everything worked just fine.

image.thumb.png.a1691c9e3ed17b8d2d8750607f00a71c.png

If I ispect the page this is the error:

image.png.19e7c88bd75f369d7dadd1e4e7f3f038.png

Also when I downgraded from 2.10.5 to 2.10 this error showed up on the right side of the interface (but I didn't delete the appdata folder, so this might be the cause to the error).

 

Lucee 5.3.10.97 Error (expression)

Messageinvalid call of the function listGetAt, second Argument (posNumber) is invalid, invalid string list index [4]

patternlistgetat(list:string, position:number, [delimiters:string, [includeEmptyFields:boolean]]):string

StacktraceThe Error Occurred in
/var/www/DispBenchmarkGraphs.cfm: line 6

4: <CFSET SSDsExist=ListGetAt(SeriesData,2,"|")>
5: <CFSET MaxSSDSpeed=ListGetAt(SeriesData,3,"|")>
6: <CFSET SSDScript=ListGetAt(SeriesData,4,"|")>
7: <CFSET SeriesData=ListDeleteAt(SeriesData,1,"|")>
8: <CFSET SeriesData=ListDeleteAt(SeriesData,1,"|")>
 

called from /var/www/DispOverview.cfm: line 76

74: </CFOUTPUT>
75:
76: <CFINCLUDE TEMPLATE="DispBenchmarkGraphs.cfm">
77:
78: <CFOUTPUT>
 

Java Stacktracelucee.runtime.exp.FunctionException: invalid call of the function listGetAt, second Argument (posNumber) is invalid, invalid string list index [4]
 

Spoiler

  at lucee.runtime.functions.list.ListGetAt.call(ListGetAt.java:46)
  at lucee.runtime.functions.list.ListGetAt.call(ListGetAt.java:40)
  at dispbenchmarkgraphs_cfm$cf.call(/DispBenchmarkGraphs.cfm:6)
  at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1056)
  at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:948)
  at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:929)
  at dispoverview_cfm$cf.call(/DispOverview.cfm:76)
  at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1056)
  at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:948)
  at lucee.runtime.listener.ClassicAppListener._onRequest(ClassicAppListener.java:65)
  at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:45)
  at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2493)
  at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2478)
  at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2449)
  at lucee.runtime.engine.Request.exe(Request.java:45)
  at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1216)
  at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1162)
  at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97)
  at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
  at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:769)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)
  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
  at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  at java.base/java.lang.Thread.run(Thread.java:829)

 

Assembled a new server and got 4 - 1TB NVMEs in a Asus Hyper M.2 card. All cards are mounted as individual cache pools. I added the path for SSDs but get this for the app-cache nvme. I can benchmark the other 3.

 

Identified mount point /mnt/UNRAID/app-cache does not have 5GB available space.

 

 

image.png.f4ad12c6ed959f30f47d628fdab0c5c8.png

 

Also..the graph values and speeds don't make sense.

 

image.png.45e268ae70197c84d7903ee1733728e7.png

Edited by Fuggin

On 5/14/2023 at 6:09 AM, jbartlett said:

 

It errored, probably your nvme drive doesn't support the trim function. If you click on that hidden link I mentioned, it would show the error message (same as in a recent previous post in this thread). I added a fix which will be on the next release. I'm working on adding more than 4 write threads but it seems to barf at 8 threads but works on others - trying to figure out why.

Same error here when trying to bench a SSD drive

 

Here you have log ouput:

 

SSD Run Slot: 1
11:49:45 Performing random seek tests
11:49:55 Performing sequential seek tests
11:50:07 Performing drive latency tests
Random Seek: 61641
SequentialSeek: 8264
DriveLatency: 1826272
Lucee 5.3.10.120 Error (application)
Message	Error invoking external process
Detail	fstrim: /mnt/UNRAID/disk2: the discard operation is not supported
Stacktrace	The Error Occurred in
/var/www/BenchmarkDriveController.cfm: line 234
232:
233: <CFFILE action="write" file="#OutDir#/trim.sh" mode="766" output="fstrim #MountPoint#" addnewline="NO">
234: <CFEXECUTE name="#OutDir#/trim.sh" timeout="3060" />
235: <CFSET WriteSpeedList="">
236: <CFSET TotalTestFiles=0>

Java Stacktrace	lucee.runtime.exp.ApplicationException: Error invoking external process
  at lucee.runtime.tag.Execute.doEndTag(Execute.java:266)
  at benchmarkdrivecontroller_cfm$cf.call(/BenchmarkDriveController.cfm:234)
  at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1056)
  at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:948)
  at lucee.runtime.listener.ClassicAppListener._onRequest(ClassicAppListener.java:65)
  at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:45)
  at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2493)
  at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2478)
  at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2449)
  at lucee.runtime.engine.Request.exe(Request.java:45)
  at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1216)
  at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1162)
  at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97)
  at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
  at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:769)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)
  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
  at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  at java.base/java.lang.Thread.run(Thread.java:829)
 
Timestamp	5/29/23 11:50:17 AM PDT

Thanks for your great work!

Hey sir, great work on this app, super cool to use!

 

Quick bug on the recent SSD benchmark.  Once completed and viewing from the index page, I'm getting an incorrect unit label for the Y-axis on the left side.

 

I believe it should be GB/Sec not MB/Sec.

 

Take care!

SSD Benchmark.png

Is there anyway you could add an option to benchmark SSDs when the CPU core count is below 4? 

 

All my unRAID systems run on old dual core CPUs. It would be nice to be able to benchmark the SSD I have in each one. That is used for a cache drive.

I have used the suggested /mnt but my two cache pools /mnt/cache & /mnt/ssd both still show the docker mount error.  Well one of the 2 from each pool says part of a pool and the other says docker isn't mounted.  

Does anyone know how to get this working for a ZFS filesystem? I believe the reason this test does not work for me is because I am using a ZFS file system for my cache pool and single drive ZFS for the array.

 

I really want to benchmark the speeds of my drives, with and without compression turned on to compare speed, CPU load, and power consumption. I'm not sure if compression turned on will even make a difference for the way these tests run but for now this feels like the simplest way to benchmark the effects of compression being enabled.

 

Would be very grateful to get some feedback on how this might be possible. Thank you :)

I've got NVME drives as a cache pool and I would like to benchmark them. I get the error:

Quote

* This drive is part of a multi-drive pool or array.
You will need to restart the DiskSpeed docker after making changes to mounted drives for changes to take effect.

However I can't find any info on what changes I need to make?

  • Author

Sorry for the lack of responses, I haven't had time recently to visit. I'll respond soon in regards to them.

 

For those who are having the trim issues, please update your Docker to reflect version 2.10.6.

  • jbartlett changed the title to DiskSpeed, hdd/ssd benchmarking (unRAID 6+), version 2.10.6

I'm also having the issue where the page appears blank during benchmark.

 

I've tried locating the iFrames just to the right of the period but there is nothing there. When you right click to inspect and go to the console tab I get this:

Uncaught TypeError: document.getElementById(...) is null

 

This is version 2.10.6.

 

Thank you!

  • 2 weeks later...
On 6/27/2023 at 3:34 PM, HodgePodge said:

I'm also having the issue where the page appears blank during benchmark.

 

I've tried locating the iFrames just to the right of the period but there is nothing there. When you right click to inspect and go to the console tab I get this:

Uncaught TypeError: document.getElementById(...) is null

 

This is version 2.10.6.

 

Thank you!

 

I benched all my drives the other day and went to do one today and getting blank screen. This is the logfile from starting the container to trying to scan to stopping it.

https://atomicrhino.net/obin/?7b5f256908be0e6f#A9iCkjyjeonX9cT4Q9joBNEmY8o8LaeS3mvxzQBT1JFW

 

  

On 6/7/2023 at 4:01 PM, joshrp5 said:

I have used the suggested /mnt but my two cache pools /mnt/cache & /mnt/ssd both still show the docker mount error.  Well one of the 2 from each pool says part of a pool and the other says docker isn't mounted.  

 

Also had the same issue (when it was working.)

 

>WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender (file:/usr/local/tomcat/lucee/lucee.jar) to method java.net.URLClassLoader.addURL(java.net.URL)

 

Seems to be this. https://stackoverflow.com/questions/50251798/what-is-an-illegal-reflective-access

Did it perhaps break between the unhraid v12 updates? 

Edited by sunwind

2.10.6

 

Some drives don't appear to bench.

 

Stats plugin doesn't show activity, but drive is online, smart green etc. and hdparm works.

 

/dev/sdf:
 Timing cached reads:   14826 MB in  1.99 seconds = 7443.88 MB/sec
 Timing buffered disk reads: 500 MB in  3.01 seconds = 166.26 MB/sec
root@BlackTower:/mnt/disk5# sudo hdparm -Tt /dev/sdm

/dev/sdm:
 Timing cached reads:   18884 MB in  1.99 seconds = 9490.98 MB/sec
 Timing buffered disk reads: 552 MB in  3.00 seconds = 183.74 MB/sec
 

But on those drives the Diskspeed webgui sits there. 

 

WD40EFZX drives

 

Clicking Abort just also sits there.

 

/sdh works as expected. All drives are data drives in the array.

 

Nothing in logs. Over 30 mins old and last log entries:

 

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
10-Jul-2023 18:00:42.061 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8888"]
10-Jul-2023 18:00:42.075 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [14279] milliseconds

 

 

Also rescanned controller, devs hadn't changed.

Edited by RealActorRob
Add'l data.

I just realized that diskspeed does not test write-speed on HDD's. This led me to believe that the WD50NPZZ (WD disk sold from intenso) is a good disk for use in unraid because its read-speed are at about 75-150MB/s. I now realized, it's write speed slows down to <5MB/s after a very brief amount of constant writes to it. Hence it's more or less completely useless. For comparison: the ST5000LM000 (seagate) has constant write speeds of about 40MB/s for the same files. >8x times as fast. Everything was tested inside the array.

Edited by madejackson

@jbartlett i have 4 cores cpu (i5 4440) so i cant run benchmark on ssd ?

i was able to run in past , but now it show warning and no benchmark for ssd ...

 

image.thumb.png.f721b82a5361ffe23e1f80901c98a9cb.png

 

Edited by Masterwishx

new build and just got word of DiskSpeed,,,  - great tool, so thanks a lot ;)


Good readings on HBA and mobo-attached SSD's, but the nvme on the gigabyte z690 gamingX is not giving me any diskspeed ;(
The drive is cashe-drive, xfs, used for docker/appdata

please advice next step - have seen other in this post getting good data from their nvme - so guess there is an obvious config I'm missing?
- or something I should check/post for further investigation?



image.thumb.png.218839cd46a85520e8fa73e913155c21.png

Edited by ArveVM
missing info on usage/disk format

  • 2 weeks later...

Looks like the .12 upgrade is blocking access to NVMe drives.  I can benchmark any drive in the array, but none of the 3 NVMe drives I have in my cache & download pools.

 

Here is the error from the log file:

  • WARNING: An illegal reflective access operation has occurred
  • WARNING: Illegal reflective access by org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender (file:/usr/local/tomcat/lucee/lucee.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
  • WARNING: Please consider reporting this to the maintainers of org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender
  • WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
  • WARNING: All illegal access operations will be denied in a future release

 

3 minutes ago, Cold Ass Honkey said:

Looks like the .12 upgrade is blocking access to NVMe drives.  I can benchmark any drive in the array, but none of the 3 NVMe drives I have in my cache & download pools.

 

Here is the error from the log file:

  • WARNING: An illegal reflective access operation has occurred
  • WARNING: Illegal reflective access by org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender (file:/usr/local/tomcat/lucee/lucee.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
  • WARNING: Please consider reporting this to the maintainers of org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender
  • WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
  • WARNING: All illegal access operations will be denied in a future release

 

Did you follow the instructions in the FAQ?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.