Force one thread

Report bugs or suggestions around FancyCache
Post Reply
User avatar
RAMbo
Level 6
Level 6
Posts: 73
Joined: Wed May 11, 2011 7:50 am

Force one thread

Post by RAMbo »

Hi Romex Team,

I have no idea the following is even part of what caching software should do; but I'll ask anyway because it can speed up diskaccess greatly in certain situations.

We all know many drives can't handle multiple threads (read/write actions very well)
That's especially true for external USB2 drives.
One thread gives a read of 30MB/s (just an example)
3 threads give a total speed of 10MB/s

My idea/request is this. FancyCache works xxx seconds on each thread on that USB drive. That way the drive works at top speed for xxx second.
xxx = user configureble. Personally I would set it at 20 seconds.
I only use external drives for backups so for me it's only the total time that counts. The fact that the non active threads have to wait is of no concern to me.

The only thing Í don't know is how Windows would react to the above suggestion. The third thread has to wait 2x20=40 seconds. Will Windows give an error because it assumes the drive is offline/removed/damaged?

What I'm asking is a little similar to NCQ used in (almost) all SATA drives. I've never seen that for USB drives.
Mradr
Level 7
Level 7
Posts: 87
Joined: Sun Mar 25, 2012 1:36 pm

Re: Force one thread

Post by Mradr »

The interface controls how well something is writen to the drive not so much windows (NCQ, SCI). Besides that, you can't know what "threads" are IO threads.

Actully... What you are asking for Fancycache already does it. When you turn on defer writes you are actully telling it to save to one location and then write that block out back to the disk. This means instead of a lot of small writes/threads you are just writing one big write instead. This is sort of like your idea but much more simpler, safer, and faster actully.

As for the reads... it wouldn't matter. Your total time is still = to the amount you are reading.. you forgot another variable in your math, time ^^;

One thread gives a read of 30MB/s or 1 sec to load the data.
3 threads give a total speed of 10MB/s or it takes 3 sec to load.
FancyCache works xxx seconds on each thread on that USB drive. Even so, it'll still take you 3 sec to load all the data. Instead it would just look like this: 3 threads-1thread at max speed done in 1sec, 2thread at max speed done in 1sec, 3thread at max speed done in 1sec. Total time it took: 3secs
Post Reply