Skip to content

FAQ_01_Frequently asked questions

mhtvsSFrpHdE edited this page Feb 4, 2023 · 16 revisions

Frequently asked questions

This software is bugged...

Sign up GitHub and create new issue here: https://github.com/mhtvsSFrpHdE/prefetch/issues
The fact is, if you never create bug issue and just complaint on twitter or youtube,
or even live chat group, I may never know there is a bug.

Although fix every single bug is not possible, but at least to let me know,
then there is a chance. If I don't know at all, the chance will be zero completely.

Compare to other solutions

https://github.com/mhtvsSFrpHdE/prefetch/wiki/FAQ_Compare-to-other-solutions

Crash when prefetch >= 2 GB files (32 bit out of memory)

Checkout ReadBufferSize.

This is file based, how to selective cache virtual machine disk file or database?

For virtual machine, deploy prefetch instance inside each of it.
For database, good luck with some SSHD solutions.

Any good tips for using SSHD?

Turn off Windows prefetch can bring better SSHD cache hit:
Windows prefetch is a black box and very not configurable.

With prefetch turn on, until disk idle, 7 GB were read from HDD.
With prefetch turn off, only 2.8 GB were read.
Less total read often let SSHD algorithm runs better for what data are really commonly used.

By my experience, Windows prefetch just fill RAM cache with some trash that I never used.
For example, my Firefox program never being cached by prefetch:
Even this is the most commonly open-close-open-close program on my computer.
Each time I feel I need Firefox, Windows always read it from HDD and slow.

You may improve cache hit rate from 60% to 89% by turn it off
on a 60 GB used space partition with 12 GB SSD cache.
To do this, simply disable "SysMain" Windows service.
I don't see any side effect on my gaming PC even two months has passed.

HDD ultimate performance guide

https://github.com/mhtvsSFrpHdE/prefetch/wiki/FAQ_HDD-ultimate-performance-guide

Why prefetch may accelerate software startup even at first time on cold boot?

Typical computer software use single thread to initialize naturally,
even prefetch itself also use same method.
Program component are one depends on another and may have strict load order.

So Firefox may submit one quest to read a file, later write to this file,
and load another, one by one, CPU also take time to process each of them.
During this process, disk read and write happens simultaneously,
and wait next request after idle from time to time.

By predict files will gonna to use later,
prefetch use multiple thread and almost no CPU cost to read them all together
as soon as possible, this make disk busy and high efficient.
So when later during Firefox run,
only write request are left for disk to perform.

I think the read only, then write only approach is the key to success.
You will notice copy files to same disk will slower than copy from another disk.
In this case, after prefetch, RAM is your 2nd disk to handle read part request.

Contribute

https://github.com/mhtvsSFrpHdE/prefetch/wiki/FAQ_Contribute

Can I use source code for...

Start from 1.3 (not include 1.3), source code publish under "JDBM License" together with AGPL.
See https://github.com/mhtvsSFrpHdE/jdbm-license/blob/main/LICENSE_JDBM
You can either choose AGPL version or convert JDBM to compatible with what you are using.

Start from 4.0.4 (not include 4.0.4), source code publish under "JDBM License" together with MIT.
This reduces the infectivity of open source license viruses.