froehlich    02/01/27 15:37:13

  Modified:    src/documentation/xdocs/userdocs/concepts mrustore.xml
  Log:
  Documentation needed a update.
  
  Revision  Changes    Path
  1.2       +32 -47    
xml-cocoon2/src/documentation/xdocs/userdocs/concepts/mrustore.xml
  
  Index: mrustore.xml
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/documentation/xdocs/userdocs/concepts/mrustore.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- mrustore.xml      3 Jan 2002 12:31:04 -0000       1.1
  +++ mrustore.xml      27 Jan 2002 23:37:13 -0000      1.2
  @@ -3,94 +3,79 @@
   
   <document>
     <header>
  -    <title>MRUMemoryStore in Apache Cocoon</title>
  +    <title>MRUMemoryStore and Swapping under Apache Cocoon</title>
       <version></version>
       <type>Technical document</type>
       <authors><person name="Gerhard Froehlich" email="[EMAIL PROTECTED]"/>
       </authors>
  -    <abstract>This document explains how the MRUMemoryStore under Cocoon 
executes.</abstract>
  +    <abstract>This document explains how the MRUMemoryStore and Swapping under 
  +    Cocoon executes.</abstract>
     </header>
     <body>
     <s1 title="Goal">
  -    <p>This document explains how the MRUMemoryStore under Apache Cocoon 
executes.</p>
  +    <p>This document explains how the MRUMemoryStore and Swapping under 
  +    Cocoon executes.</p>
     </s1>
     <s1 title="Overview">
       <p>The MRUMemoryStore was developed to provide a standard algorithm to
          store data in memory. For web-based applications the MRU (Most Recently 
Used) algorithm
          is very suitable, because the object most frequently accessed is always on 
"top".
       </p>
  -    <p>If configured accordingly, the objects are also swapped to the filesystem, 
to hold them
  -    in a persistent state over JVM restarts.
  +    <p>If configured, the objects are also swapped to the filesystem if the
  +    MRUMemoryStore reached his configured max. object limit.
       </p>
     </s1>
     <s1 title="Implementation">
  -    <s2 title="Storing in memory">
  +    <s2 title="MRUMemoryStore">
       <p> 
       The heart of the MRUMemoryStore ist combination of a LinkedList and a HashMap:
       </p>
       <p>
       The LinkedList provides the queue mechanism, and the entries in the LinkedList 
  -    contain the key to the data in the HashMap. When calling the 
<code>store()</code>
  -    method a new entry to the front of the list is inserted. 
  -    If the list is already full, the <code>free()</code> method is called and the 
oldest,
  -    the last one in the LinkedList, data entry is removed from the HashMap and from 
the
  -    LinkedList.
  -    When calling the <code>get()</code> method, the store returns the object by key
  -    and inserts the requested key on the top of the LinkedList.
  +    contain the key to the data in the HashMap. When caching a new entry in to the 
list,
  +    the entry is inserted to the front of the list.
  +    If the list is already full, the oldest data entry is removed from the Cache.
  +    When requesting a entry, the store returns the object by key and inserts the 
requested key 
  +    on the top of the Cache.
          
       This implementation keeps the most recent used objects in the store and 
provides the best
       use of the machines memory.
       </p>
       </s2>
  -    <s2 title="Storing on the filesystem">
  +    <s2 title="Swapping">
       <p>
  -    Storing in Memory is fast, but when the JVM restarts your processed Objects are 
gone and
  -    must be processed again, although they didn't have changed. What a waste of CPU 
time.
  +    When the MRUMemoryStore is full or the JVM is at the heap size limit the 
  +    objects in the MRUMemoryStore are swapped to the Filesystem. The default 
  +    directory is "cache-dir" in the work-directory.
       </p>
       <p>
  -    If configured, the MRUMemoryStore will keep your objects not only in memory, 
rather also on
  -    the filesystem. When calling the <code>store()</code> method, objects are 
pushed on a stack,
  -    which is processed by a "writerthread" in the background. This thread pops the 
object from the
  -    stack and serialize it to the fs. So the objects are asynchron written to the 
filesystem, 
  -    to keep the performance fast. The thread sleeps and awakes only, when one or 
more objects
  -    are pushed on the stack. But only CacheStreamObject's and CacheEventObject's in 
the moment
  -    are stored on the filesystem.
  -    </p>
  -    <p>
  -    If you restart your application memory is clean. When you request an object 
with the <code>get()</code> 
  -    method the filesystem is checked if the requested object is available, 
deserialize it and give 
  -    it back to the caller. After all the <code>store()</code> method is called and 
the 
  -    deserialized object is stored in memory for further usage.
  -    </p>
  -    </s2>
  -    <s2 title="Background threads">
  -    <p>
  -    The WriterThread is notified when an object is pushed on the stack and 
serialize the objects 
  -    in the stack on the filesystem.
  +    NOTE: The keys under Cocoon are Strings at the moment. Therefor the
  +    filenames of the swapped objects can be very long. Especially Windows OS
  +    flavours have problems with long filenames. This problem is well known and
  +    we are working on that.    
       </p>
       </s2>
     </s1>
     <s1 title="Configuration of the MRUMemoryStore">
     <source>
     <![CDATA[
  -  <event-cache class="org.apache.cocoon.components.store.MRUMemoryStore">
  +  <store class="org.apache.cocoon.components.store.MRUMemoryStore" 
logger="core.store">
        <parameter name="maxobjects" value="100"/>
  -     <parameter name="threadpriority" value="5"/>
        <parameter name="filesystem" value="true"/>
  -  </event-cache>
  +  </store>
     ]]>
     </source> 
  -  <p>If you want to use the MRUMemoryStore as your EventCache:</p>
  -  <ol> 
  -      <li><code>&lt;event-cache 
class="org.apache.cocoon.components.store.MRUMemoryStore"&gt;</code>:
  -      Assigns the MRUMemoryStore as the actual EventCache.</li>
  +  <p>Explanation of the paramters:</p>
  +    <ol> 
         <li><code>&lt;parameter name="maxobjects" value="100"/&gt;</code>:
  -      Indicates how many objects will be hold in the cache. When the number of 
maxobjects has been reached.
  -      The last object in the cache will be thrown out.</li>
  -      <li><code>&lt;parameter name="threadpriority" value="5"/&gt;</code>:
  -      Indicates the priority of the background threads. 1 is the lowest priority 
and 10 is the highest.</li>
  +      Indicates how many objects will be hold in MRUMemoryStore. When the number 
  +      of maxobjects has been reached, the last object in the MRUMemoryStore will be 
  +      thrown out.</li>
         <li><code>&lt;parameter name="filesystem" value="true"/&gt;</code>:
  -      Turns the filesystem storage for objects on or off.</li>
  +      If this switch is set on true, objects are swapped out to the filesystem,
  +      if the MRUMemoryStore has reached his maximum object limit, or the JVM 
  +      memory consumption is over the heap size limit. See StoreJanitor user 
  +      docs for more information.</li>
        </ol>
     </s1>
     </body>
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to