What the people are asking for + a few others.

Report bugs or suggestions around FancyCache
Mradr
Level 7
Level 7
Posts: 87
Joined: Sun Mar 25, 2012 1:36 pm

What the people are asking for + a few others.

Post by Mradr »

I think the following is what people are mainly asking for in the next patch/update:

Order from most (1) to least(x>1), please vote on a feature if you wish to see it increase on the list: *Please note, any bugs issues will have a higher priority then a lot of the requested features usally. These are community requested features and FC still holds the right/final say if they will or will not be implanted into any future releases.

V#: [0.8.0].[5] - 7/21/12


1) Persistent L2.
2) Fix Increassing Ram Issues.
3) Pool Dynamic Priority Percent Base L1.
4) Set L2 to Read, Write, or R/W, and give the option to disable L1 for L2 (Mradr, laferrierejc)
5) Keep-Alive Performance Monitor with auto start and save options (n6666661, JimF, mabellon).

^ - Top 5 should always be finish before the rest.
v - Optional to do or not as of right now. Not highly requested yet.

6) Throtter defer write speeds. (RAMbo)
7) Power Fail.
8) Add a Pro/Advanced mode to hide some features:
---->[ ] No Write-Flush At Shutdown (old)
9)-->[ ] Suspend All Writes (New, edv)
10-->[ ] Release cache once cache has been loaded into normal ram. (Ram use only)
11) Profile base loading for settings.



Please work on the first five first! ^^ If Romex can get that working, I am pretty sure you all will be way a head in terms of software SSD caching. See Notes* for more detail.


Besides that I have a few questions and another suggestion:

Future load:
Instead of waiting for the user/computer to request data and "random" to be loaded. Why not just watch the user's mouse? When a user’s mouse over an icon, Fancycache should start to auto load the data from cache or be ready to start reading it from cache so less time is spent in "search" and "table lookup." Note* I am not saying it should load all the data, but maybe some parts or where the blocks parts are.

Notes*
1) Persistent L2 - Wont have to keep rebuilding the cache data file over and over again keep the amount of writes hitting L2 down low and read performance high.

2) Fix Increassing Ram Issues. - Isn't fixed and can cause slow down over time and even causing the system to crash if there isn't enough memory for use. The cause seem to be setting the L2 cache. Setting the L2 causes the system to also load more into ram either based on the amount of L2 or a greater amount over time.

3) Pool Dynamic Priority Percent Base L1 - Some people would like to pool their ram so multiple drives can access the L1 without wasting needless ram for each drive/volume. There are two levels of the dynamically caching going on here. One at the pool level and the other at the drive level. The pool level has very little user control as the system/FC handles that one. You just set the max size of it and the system will take care on how it grows or shrinks for the need. At the drive/volume level you'll be able to set the dynamic min and max use of the pool. This would allow drives/volumes to take on more ram if it needs, but still makes sure it has the min 4GB of the pooled cached ram. For example:
L1 = 2048MB (2GB) - gobal ram pool
Drive C: L1 = Min: 50%, Max: 100% Priority 1 (OS)
Drive F: L1 = Min: 0%, Max: 50% Priority 2 (Data)

Instead of needing almost 2560MB of ram for both drives, Drive F now can share the L1 with Drive C. Drive F will be able to use 1GB of that ram unless Drive C needs the full 2GB for loading data because of its higher priority. Setting the Min value allows that drive to still have access to that higher performance, but still allows the higher priority drive to also maintain its performance when the need araises.

Another hidden cool thing about doing it this way would be that it also helps speed up file transfers between the two drives as the data movement happens in ram instead of the drive as much as possible.

4) Set L2 should gain the option to be set as: Read, Write, or R/W only with another option to disable/turn off L1 as some people wish not to use their ram for either write or read and would like to just use their drive (SSD, HDD, flash, or w/e) instead for read or write only speed boost..This includes:


laferrierejc wrote: I don't desire for my write to be extended to my L2 cache, as the ssd I'm using has a poor write performance (30MB/s). To get around this, I have to run two versions of Fancycache. The disk for writes, the volumes [the SSD] for reads.


5) Hi, would it be possible to add an option to start Performance Monitor as soon as the system has loaded FancyCache at boot time?
Or maybe at least to get some logs of the activity?

It could be very interesting to see how many datas have been cached without any need to be writen to the disk (4 SSDs in RAID 1+0 so no TRIM for now until Intel will release it's RST 11 or something).

When I wake up my monitor from power-down mode, I usually press the Return or Enter key on the keyboard. But it appears that pressing these keys also resets the Performance Statistics.

Please consider using the standard Windows performance counters to track FC performance (perfmon, logman). That is, make FC a provider of counter data. Then users can track usage in logs, schedule when to capture data and for how long. Why reinvent the wheel here - there is already a facility for tracking and graphing perf data. With this approach, you can even graph FC hits against actual disk IOps, memory usage etc. (thus better showing the incredible benefits of FC). Also users should be able to capture perf logs for scenarios like boot performance (post login) long before the FC management UI could ever come up.

"Can we get away to allow us to compare 2 different settings to see witch one is faster?" -> We can use a simple save method to allow users to compare the results.


6)Defer writes give the biggest speed boost and unfortunately setting up a time can cause data to be Urgent writen instead of normal written. Allow setting up a defer max and min time could help curve that issue.
High I/O activity: Increase defer write time (configure a max)
Low I/O activity: Decrease defer write time (configure a min)

7) Power Fail:

I understand if defer write is enable, any write data could be corrupted on a power lose. From my own stand point, the data happens only because of L1 was to lose power, yes? If so, why not give the option to disable L1 for use of the L2 and repair/finish the writes on the next boot up from L2 (I am guessing L2 will be an SSD or another hard drive where the data won’t be flushed like ram would)? This would keep data safe even on a power failed. Well, safe-r... there could also be some issues/data lose if power does go out, but at least would allow for the data that was defer to be able to be rewriten again at some sage instead of lossing it all.


8) Some of the advance features should be hidden into a sub hidden area. These features are features that could cause major problems when turn on. By giving them a place and a warnning that the user has to agree to, it will let the user know or at least be warn the user that the following features may are risky and could cause system stability issue such as lost of data, data corruption, and so on.

9) A checkbox/button that reads "Suspend All Writes." When on, write cache timer is grayed out and a infinite (oo) sign is shown to let the user know that this feature has been toggled. Suspend all writes to the physical drive unless the data needs to be writen urgently.

10) It would be nice to have an option to release ram cache once the program has been loaded into ram. This way memory can be freed up once it has been loaded for that program to use more ram. Another option is to allow that free up space to cache another program. Once the program closes, the cache is then return back to RAM for faster reload times.

11) Some would like to profile their settings to be able to load them up onto other pc. This one could be simple as in createing a load/Save base settup and then save the settings out onto a file (I am guessing you all perty much do this anyways) and then on load just read the file again.

Again, these are community requested features and FC still holds the right/final say if they will or will not be implanted into any future releases.
Last edited by Mradr on Sat Jul 21, 2012 11:06 am, edited 28 times in total.
laferrierejc
Level 3
Level 3
Posts: 10
Joined: Wed Jul 27, 2011 11:51 pm

Re: What the people are asking for + a few others.

Post by laferrierejc »

I only respond to upboat.
User avatar
Support
Support Team
Support Team
Posts: 3622
Joined: Sun Dec 21, 2008 2:42 am

Re: What the people are asking for + a few others.

Post by Support »

Thank you, Mradr.
Mradr wrote:If so, why not give the option to disable L1 for use of the L2 and repair/finish the writes on the next boot up from L2 (I am guessing L2 will be an SSD or another hard drive where the data won’t be flushed like ram would)?
The advantage of "Defer Write" mostly benefits from the memory. If using flash disks intead of physical memory, I think there is no any advantage to enable "Defer Write".
Mradr
Level 7
Level 7
Posts: 87
Joined: Sun Mar 25, 2012 1:36 pm

Re: What the people are asking for + a few others.

Post by Mradr »

support wrote:Thank you, Mradr.
Mradr wrote:If so, why not give the option to disable L1 for use of the L2 and repair/finish the writes on the next boot up from L2 (I am guessing L2 will be an SSD or another hard drive where the data won’t be flushed like ram would)?
The advantage of "Defer Write" mostly benefits from the memory. If using flash disks intead of physical memory, I think there is no any advantage to enable "Defer Write".
SSD - cache only will not be used as main drive as the price power of SSD is still way higher than that of a HDD.
HDD/C: is the main drive, lots of space and data.

(Yes, I know you know what it does. I am just clearifying my understanding.) "Defer Write" defer writes to the HDD by holding the write data into memory for a set amount of time... Defering the write data to the SSD would allow for faster 4k writes and even bigger burst writes. The "advantage" would be a speed increase base off the SSD write ability (sanforce forexample can hit almost 400-500MB with around 100MB random). So yea, it wont be as fast as ram, but would still be faster than a HDD. SSD cache size would also be larger than what ram would be able to hold. This would allow data to stay there longer untill it is needed to be moved back to the HDD either because the SSD cache size is full or because it was "force" to save (would not have to flush the data back to the HDD as the SSD would be able to retain the data even on restarts or power loss). This in turns means the data would not have to be at risk of power failers or being slow.

HDD1: Main hard drive.
HDD2: cache HDD

Now, this only works best for an SSD as the speed is above normal compare to a HDD. Eeven still... data could also be writing like with in a raid for another HDD. Half the data could be sent to the HHD1 and the rest to HHD2... this again would allow for bigger cache amount and still 2x the data out put as it leaves space/room/bandwith to also do reads with. Again, even on a power failer... the data would still be there and allow a way for the data to be recoved/writen back on next startup.

Idk... maybe I am wrong... xD
Last edited by Mradr on Thu May 03, 2012 5:11 am, edited 1 time in total.
User avatar
Support
Support Team
Support Team
Posts: 3622
Joined: Sun Dec 21, 2008 2:42 am

Re: What the people are asking for + a few others.

Post by Support »

Thanks for the explainations.

Actually we evaluated this case before. The performance might not be good as expected. Besides, this may be a temporary solution. When SSDs become cheaper and cheaper, this solution will be no use.
laferrierejc
Level 3
Level 3
Posts: 10
Joined: Wed Jul 27, 2011 11:51 pm

Re: What the people are asking for + a few others.

Post by laferrierejc »

ssd's don't maintain very good write speeds on random 4k's, but that's the beauty of this software, it clumps those random writes into one lump write of full write speed, but why bother if your ram can do that for you? There is an obvious benefit in using an ssd for read cache, but not so much a write cache (it doesn't make sense to ssd (even persistent writes, just keep them in ram).

It does make sense to cache read to ram, a second persistent reads to ssd).
Mradr
Level 7
Level 7
Posts: 87
Joined: Sun Mar 25, 2012 1:36 pm

Re: What the people are asking for + a few others.

Post by Mradr »

Well the idea wasn't so much for performance means as it was for a way to not have to worry about croupption on a power failer. There should be some write performance from allowing the SSD to hold the write data (as the data would have more bandwith to use hitting both disk or just the one). Sorry, again, this wasn't so much for performance means was it was a way to make sure there was no issues on a powerfailer.

Not a big deal if your testing says otherwise... I knew it wouldn't be a huge performance boost like you would from ram speeds, but I would think it would offer at least some performance speeds above normal write speeds from the HDD.
laferrierejc wrote:ssd's don't maintain very good write speeds on random 4k's, but that's the beauty of this software, it clumps those random writes into one lump write of full write speed.
My SSD so far has had really high random write speeds... WAY above that of my HDD (750GB WD Black). The reason you would not maintain very good write speeds is because you are both reading and writing from the disk at the same time. This causes ques to grow really large. From that, the SSD could never be your main drive or even a data drive if you choose to do this.
laferrierejc wrote:why bother if your ram can do that for you? There is an obvious benefit in using an ssd for read cache, but not so much a write cache (it doesn't make sense to ssd (even persistent writes, just keep them in ram).
Ram could do this for you, but you run the risk of that data never writing back to the disk on a powerfailer or BSOD (system error). This could mean your whole OS could be croupped and you have to reinstall all your programs and hope you have a backup of all your data. The obvious benefit would be that you wouldn't have to worry about it and still have an ok write boost (1.5x-5x) from using the SSD or another HDD. The only issue is that your writes HAVE to be persistent or otherwise you would kill the SSD faster saving it to the SSD and then deleteing it as you are moving it back to the HDD.
laferrierejc wrote:It does make sense to cache read to ram, a second persistent reads to ssd.
Yes there is, never said there wasn't :)
support wrote:When SSDs become cheaper and cheaper, this solution will be no use.
xD When that happens, fancycache wont be a solution either as the SSD would run even faster than ram, and that speed is comming as HP seems to have found a way to make "cheaper" mem-resisters as fast as ram is now and as small as 10n.

Again, maybe I am wrong and you all don't have to use my ideas. I was just trying to throw some out there for use. I know the top list is what people are wanting for the next realse for sure, so I hope you all could get them in for sure ^^ Other than that... the other two were just ideas that I thought would be nice to have.
User avatar
Support
Support Team
Support Team
Posts: 3622
Joined: Sun Dec 21, 2008 2:42 am

Re: What the people are asking for + a few others.

Post by Support »

@Mradr: Anyway thank you for your ideas, we'll continue studying it when we have time. Currently, as you concluded, we have to process other tasks which have a higher priority.
User avatar
RAMbo
Level 6
Level 6
Posts: 73
Joined: Wed May 11, 2011 7:50 am

Re: What the people are asking for + a few others.

Post by RAMbo »

Mradr wrote:I think the following is what people are mainly asking for in the next patch/update:
4) Pool Dynamic Priority Percent Base L1 (50% max ram usage that all cache device will access with the c: drive having priority of 1 [priority and the precent amount of ram settable by the user]) - Some people would like to pool their ram so multiple drives can access the L1 without wasting needless ram for each drive/volume. They would also like this pooled ram to be dynamic so not to waste needs ram again. From the pool ram, they would like to reassin the ram ussages for each drive/volume base off a percent and priority of who gets to use that ram pool.

RAM pool sounds very useful to me. Looking at teh diagram it looks like volume is pooled. The setting of the software seems to say otherwise......?

Image
Mradr
Level 7
Level 7
Posts: 87
Joined: Sun Mar 25, 2012 1:36 pm

Re: What the people are asking for + a few others.

Post by Mradr »

RAMbo wrote: RAM pool sounds very useful to me. Looking at teh diagram it looks like volume is pooled. The setting of the software seems to say otherwise......?
Yup, well sort of. The picture is a bit misleading I think. It shows how FC will build up the cache in L1 memory in ram, but that ramdisk (if you will) is not shared across the board. What happens is if you request data from HDD1 to go to HDD2, instead of it going from disk to disk it'll hit the ram disk first, move over all the data it can and then gets the data from the HDD1 as needed. This increase the speed a bit as the hard drives never had to talk or had to talk very little.
Post Reply