You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by Raymond Raymond <ra...@hotmail.com> on 2006/03/01 02:38:55 UTC

A question about dirty pages.

I have a question needs to be confirmed. Anyone can help me?

In checkpoint, derby checks from the last cached item in the
holder array to the first one(ref: 
org.apache.derby.impl.services.cache.Clock.java)
to find dirty pages and write them out.
A cache page, which is clean before checkpoint starts and is updated
after checkpoint starts, will have a chance to be written out by the
current checkpoint process. Am I right?
For instance, let's assume derby keeps 1000 cache pages. When
checkpoint starts, it checks from the 1000th cache page to the
first one. When it goes to check the 800th cache page, the 700th
cache page is updated. The 700th cache page will be checked later
and written out as a dirty page( assume it is valid). If the 900th cache
page is updated when the 800th cache page is checked. The 900th
cache page will not be written out by the current checkpoint process.
Am I right?

Thanks.


Raymond

_________________________________________________________________
Take charge with a pop-up guard built on patented MicrosoftŽ SmartScreen 
Technology  
http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http://hotmail.com/enca&HL=Market_MSNIS_Taglines 
  Start enjoying all the benefits of MSNŽ Premium right now and get the 
first two months FREE*.


Re: A question about dirty pages.

Posted by Mike Matrigali <mi...@sbcglobal.net>.
For those new developers asking questions about the code, it would
be interesting to know what parts of the code they looked at and
could not find the info they needed.  I realize with the derby layout
it is often hard to find the info since at least in store there is often 
a protocol description in iapi, a generic parent class, and one or more 
specific implementation classes all of the same method name.

Also as they learn it would
be nice to submit new comments in the areas they are learning about.
It has been mentioned a few times that it is easier to commit
existing comment changes separate from new feature commits, this
way the new feature diffs highlight exactly what is changing -- but
we still want to improve the exising inline documentation.

Mike Matrigali wrote:
> Yes, you are right.  It does not really need to be written, but
> in the current implementation it doesn't cost very much to
> write it since we sync the entire file at the end.  I tried to
> add some more descriptive comments about this in:
> 
> BaseDataFileFactory.java!checkpoint
> 
> The actual loop is in the cachemanager cleanAll implementation.
> 
> Raymond Raymond wrote:
> 
>> I have a question needs to be confirmed. Anyone can help me?
>>
>> In checkpoint, derby checks from the last cached item in the
>> holder array to the first one(ref: 
>> org.apache.derby.impl.services.cache.Clock.java)
>> to find dirty pages and write them out.
>> A cache page, which is clean before checkpoint starts and is updated
>> after checkpoint starts, will have a chance to be written out by the
>> current checkpoint process. Am I right?
>> For instance, let's assume derby keeps 1000 cache pages. When
>> checkpoint starts, it checks from the 1000th cache page to the
>> first one. When it goes to check the 800th cache page, the 700th
>> cache page is updated. The 700th cache page will be checked later
>> and written out as a dirty page( assume it is valid). If the 900th cache
>> page is updated when the 800th cache page is checked. The 900th
>> cache page will not be written out by the current checkpoint process.
>> Am I right?
>>
>> Thanks.
>>
>>
>> Raymond
>>
>> _________________________________________________________________
>> Take charge with a pop-up guard built on patented Microsoft® 
>> SmartScreen Technology  
>> http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http://hotmail.com/enca&HL=Market_MSNIS_Taglines 
>>  Start enjoying all the benefits of MSN® Premium right now and get the 
>> first two months FREE*.
>>
>>
>>
> 
> 
> 


Re: A question about dirty pages.

Posted by Mike Matrigali <mi...@sbcglobal.net>.
Yes, you are right.  It does not really need to be written, but
in the current implementation it doesn't cost very much to
write it since we sync the entire file at the end.  I tried to
add some more descriptive comments about this in:

BaseDataFileFactory.java!checkpoint

The actual loop is in the cachemanager cleanAll implementation.

Raymond Raymond wrote:
> I have a question needs to be confirmed. Anyone can help me?
> 
> In checkpoint, derby checks from the last cached item in the
> holder array to the first one(ref: 
> org.apache.derby.impl.services.cache.Clock.java)
> to find dirty pages and write them out.
> A cache page, which is clean before checkpoint starts and is updated
> after checkpoint starts, will have a chance to be written out by the
> current checkpoint process. Am I right?
> For instance, let's assume derby keeps 1000 cache pages. When
> checkpoint starts, it checks from the 1000th cache page to the
> first one. When it goes to check the 800th cache page, the 700th
> cache page is updated. The 700th cache page will be checked later
> and written out as a dirty page( assume it is valid). If the 900th cache
> page is updated when the 800th cache page is checked. The 900th
> cache page will not be written out by the current checkpoint process.
> Am I right?
> 
> Thanks.
> 
> 
> Raymond
> 
> _________________________________________________________________
> Take charge with a pop-up guard built on patented Microsoft® SmartScreen 
> Technology  
> http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http://hotmail.com/enca&HL=Market_MSNIS_Taglines 
>  Start enjoying all the benefits of MSN® Premium right now and get the 
> first two months FREE*.
> 
> 
> 


Re: A question about dirty pages.

Posted by Knut Anders Hatlen <Kn...@Sun.COM>.
Raymond Raymond <ra...@hotmail.com> writes:

> I have a question needs to be confirmed. Anyone can help me?
>
> In checkpoint, derby checks from the last cached item in the
> holder array to the first one(ref:
> org.apache.derby.impl.services.cache.Clock.java)
> to find dirty pages and write them out.
> A cache page, which is clean before checkpoint starts and is updated
> after checkpoint starts, will have a chance to be written out by the
> current checkpoint process. Am I right?
> For instance, let's assume derby keeps 1000 cache pages. When
> checkpoint starts, it checks from the 1000th cache page to the
> first one. When it goes to check the 800th cache page, the 700th
> cache page is updated. The 700th cache page will be checked later
> and written out as a dirty page( assume it is valid). If the 900th cache
> page is updated when the 800th cache page is checked. The 900th
> cache page will not be written out by the current checkpoint process.
> Am I right?

Yes, your description of the checkpoint process is correct.

-- 
Knut Anders