Slow parity


Recommended Posts

Hello everyone,

 

I'm fairly new to Unraid and I'm already hooked on it. However, the ONLY issue I have with it is the god awful slow cache to array speeds. Before I continue, I will post the machine specs and perhaps I have a bad config or something.

 

DELL R730xd

2x E5-2660v3 10 core 20 threads (each) 20c 40t total

128GB DDR4 2133 ECC ram ( I removed 256GB as I thought it was OC )

2x 1.92TB DELL SSD's
24x 1TB 7200 RPM DELL HDD's (Sata not SAS)
Controller is PERC H730 Mini in HBA mode Cache set to enable and disk cache is also set to enable

Nvidia Quadro K4000 (For plex hevc x265 codecs)
 

The machine works great, I was using Ubuntu server and docker for my previous setup with the machine but the power draw was insane (~250/300W) and with unraid its down to ~140-200W max load. 

 

My issue is that I have all my movies/TV shows downloading via NZBget/Sonarr/Radarr and then they have to be moved from the cache to the array... at 30-50 MB/s Perhaps I'm used to the GB/s when it was in raid with Ubuntu. Is this normal? I feel like it should be able to move faster than 50 MB/s, the disk does format @ 112 MB/s with preclear plugin so I know its not a disk limitation.

 

I know that the default write mode is read/modify/write, so I was thinking of creating a raid 0 or raid 1 with 2 of the disks and set it up as a parity disk. Raid 0 would be fast but also not safe, and raid 1 will write at 1x but have a 2x read speed so perhaps it would be faster?

Any suggestions? I just feel like this machine is being under utilized for what its worth.

 

Thank you for any help possible.

J

Link to comment
2 minutes ago, jbohbot said:

My issue is that I have all my movies/TV shows downloading via NZBget/Sonarr/Radarr and then they have to be moved from the cache to the array... at 30-50 MB/s Perhaps I'm used to the GB/s when it was in raid with Ubuntu. Is this normal? I feel like it should be able to move faster than 50 MB/s, the disk does format @ 112 MB/s with preclear plugin so I know its not a disk limitation.

unRaid is not RAID.  There is a performance hit when running in read / modify / write.  In a nutshell, the system reads the sectors which are about to be written from both the parity drive and the data drive, waits for the sector to spin around again to the rw heads, and then writes the new information.

 

The upshot is that only the drives involved in the writes need to be spun up when this takes place.

 

To speed up writes, you can switch to reconstruct write which will read and recalculate parity info from all the drives simultaneously, increasing the speed ~2x

Link to comment
1 minute ago, Squid said:

unRaid is not RAID.  There is a performance hit when running in read / modify / write.  In a nutshell, the system reads the sectors which are about to be written from both the parity drive and the data drive, waits for the sector to spin around again to the rw heads, and then writes the new information.

So if I understand correctly, the parity disk/s are relying on the array disk to validate? I thought all this read/modify/write was ONLY happening on the parity drives.

Link to comment

In order to know how to update parity in real time the system needs to know either

 

1  The current contents of the sector on the parity drive and the data drive so that it can then rewrite the appropriate updated parity info into the parity sector and the update to the sector on the data drive.  (Involves and extra read I/O and associated latency on both drives).  No other drives need to be spun up.

 

or

 

2.  The current status of the sectors on all data drives not being written to so that it can recalculate the parity information to the parity drive and do the write to the data drive in question.  No extra read I/O or latency involved.  All drives will spin up.

 

https://wiki.unraid.net/UnRAID_6/Storage_Management#Array_Write_Modes

Link to comment

Ok got it thanks!

Side note, if I were to create a bunch of raid 0 arrays (2 disks x 12) I would keep my 24 TB pool and still only loose 2 TB for the array. If i put 1 raid 0 as parity and the others in the array, speed should not be an issue then due to the 2x read/write speed, would it be safe to run seeing as there is parity on the raid 0's?

 

Speeds are now 200MB/s + as you can see in the SS

 

Edit: Paused the parity, added an iso to the cache and moved it to the array (100MB/s) Now thats still slow for raid 0 but at least it will move faster.

 

Thanks,

J

2020-04-15_13-38-06.png

Edited by jbohbot
Link to comment

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.