Questions about Normal and Urgent writes
Posted: Sun Aug 02, 2020 6:47 am
Hello again, Mr. Primo Support! If you are not too busy, I have another question. (Or actually I think I have several questions. This has turned into a very long post. I am sorry. Please just reply at your convenience!)
I am now trying to figure out the behavior of PrimoCache when both L1 and L2 are set for write caching and deferred writes are also enabled. I have been testing and looking at the program and also re-reading the documentation and technical discussions again, but I think I do not completely understand how the different options for write caching work. (As you may know, I have only recently discovered PrimoCache and purchased PrimoCache 3.2.0, but I have now downloaded version 4.0.0 Alpha, so my following questions are for PC version 4.0.0 Alpha.)
Ok, so I see that there are Normal writes and Urgent writes. And I also see that the option for Flush L1 Cache to L2 Cache allows to "move L1 deferred data to L2 instead of flush to target when L1 is full". But I believe that I am confused because I think I don't initially understand what is the default (regular or standard) behavior for Deferred-Write anyway. So I think my best questions may be this:
1) What is the Urgent state? Does it mean Urgent just when L1 is full? Or only when L1 and L2 are both full? Or does Urgent mean something different?
2) What is the Normal state? Does it mean Normal only when both L1 and L2 have more room? Or is it Normal if at least either L1 and L2 have some space left? Or does Normal mean something different?
3) What must happen for Normal state to become Urgent or for Urgent to return to Normal?
4) What is the default behavior for L1 and L2 Deferred Write Caching when condition is Normal ? (Not when Flush L1 Cache to L2 Cache is enabled, but just the default Normal behavior.)
a) Service Write Requests to L1, then just Flush L1 Writes to Target based on L1 Defer Policy?
Or ...
b) Service Write Requests to L1, then Flush L1 Writes to L2 based on L1 Defer Policy, then eventually flush L2 to Target based on L2 Policy?
Or ...
c) Something else?
5) What is the default behavior for L1 and L2 Deferred Write Caching when condition is Urgent ? (Not when Flush L1 Cache to L2 Cache is enabled, but just the default Urgent behavior.)
a) Bypass L1 and L2. Just service new incoming Write Requests Direct to Target, ignoring all currently configured Deferred-Write policies?
Or ...
b) Bypass L1 only. Just service new incoming Write Requests Direct to L2, ignoring currently configured L2 Deferred-Write policies?
Or ...
c) Something else?
6) What is the behavior for L1 and L2 Deferred Write Caching when condition is Normal but when Flush L1 Cache to L2 Cache is enabled?
7) What is the behavior for L1 and L2 Deferred Write Caching when condition is Urgent but when Flush L1 Cache to L2 Cache is enabled?
I know this is a very long and complicated post, so thank you very much for considering my questions. I am hoping that receiving the answers to these questions may help not only me but also others to know how to properly tune our PrimoCache for our individual needs on our individual systems.
Thank you and your whole team again for such a great product and for such great technical support and customer responsiveness. The design of your product brings me the great enjoyment of good craftmanship, and your technical team and also your Forum Community members are a pleasure to work with.
Tom
I am now trying to figure out the behavior of PrimoCache when both L1 and L2 are set for write caching and deferred writes are also enabled. I have been testing and looking at the program and also re-reading the documentation and technical discussions again, but I think I do not completely understand how the different options for write caching work. (As you may know, I have only recently discovered PrimoCache and purchased PrimoCache 3.2.0, but I have now downloaded version 4.0.0 Alpha, so my following questions are for PC version 4.0.0 Alpha.)
Ok, so I see that there are Normal writes and Urgent writes. And I also see that the option for Flush L1 Cache to L2 Cache allows to "move L1 deferred data to L2 instead of flush to target when L1 is full". But I believe that I am confused because I think I don't initially understand what is the default (regular or standard) behavior for Deferred-Write anyway. So I think my best questions may be this:
1) What is the Urgent state? Does it mean Urgent just when L1 is full? Or only when L1 and L2 are both full? Or does Urgent mean something different?
2) What is the Normal state? Does it mean Normal only when both L1 and L2 have more room? Or is it Normal if at least either L1 and L2 have some space left? Or does Normal mean something different?
3) What must happen for Normal state to become Urgent or for Urgent to return to Normal?
4) What is the default behavior for L1 and L2 Deferred Write Caching when condition is Normal ? (Not when Flush L1 Cache to L2 Cache is enabled, but just the default Normal behavior.)
a) Service Write Requests to L1, then just Flush L1 Writes to Target based on L1 Defer Policy?
Or ...
b) Service Write Requests to L1, then Flush L1 Writes to L2 based on L1 Defer Policy, then eventually flush L2 to Target based on L2 Policy?
Or ...
c) Something else?
5) What is the default behavior for L1 and L2 Deferred Write Caching when condition is Urgent ? (Not when Flush L1 Cache to L2 Cache is enabled, but just the default Urgent behavior.)
a) Bypass L1 and L2. Just service new incoming Write Requests Direct to Target, ignoring all currently configured Deferred-Write policies?
Or ...
b) Bypass L1 only. Just service new incoming Write Requests Direct to L2, ignoring currently configured L2 Deferred-Write policies?
Or ...
c) Something else?
6) What is the behavior for L1 and L2 Deferred Write Caching when condition is Normal but when Flush L1 Cache to L2 Cache is enabled?
7) What is the behavior for L1 and L2 Deferred Write Caching when condition is Urgent but when Flush L1 Cache to L2 Cache is enabled?
I know this is a very long and complicated post, so thank you very much for considering my questions. I am hoping that receiving the answers to these questions may help not only me but also others to know how to properly tune our PrimoCache for our individual needs on our individual systems.
Thank you and your whole team again for such a great product and for such great technical support and customer responsiveness. The design of your product brings me the great enjoyment of good craftmanship, and your technical team and also your Forum Community members are a pleasure to work with.
Tom