Initial contribution of the Adaptation Documentation.
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License
"Eclipse Public License v1.0" which accompanies this distribution,
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
Nokia Corporation - initial contribution.
Contributors:
-->
<!DOCTYPE concept
PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-ACB79CEF-CA4D-5C96-AFCD-6AD7C7C26C53" xml:lang="en"><title>Thrashing
Guide</title><shortdesc>Describes thrashing in terms of demand paging and how to prevent
it. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-378E14C9-A83A-56BD-BE7D-7DF565E58A46"><title>Introduction</title> <p>Thrashing
is an undesirable state where most of the processes in the system are in the
process of paging-in memory and none of the threads are doing useful work.
This results in unacceptable system performance. </p> </section>
<section id="GUID-E39982CD-62E4-4EA0-92A6-4BE9E7F9B00E"><title>Background information</title><p>These topics are useful background
information on thrashing:</p><ul>
<li><p>Paging </p></li>
<li><p>Virtual memory </p></li>
</ul></section>
<section id="GUID-A2C57999-E701-40FF-872D-396AFD6FA082"><title>Thrashing features</title><p>The signs of thrashing in demand
paging are: </p><ul>
<li><p>The system performance rapidly becomes unacceptable, since no threads
are doing useful work. The device will become unresponsive or appear to 'hang'. </p></li>
<li><p>When observing paging activity logs it's seen that the same set of
pages are paged in and out many times over the course of a use case. </p></li>
<li><p>When observing paging activity logs there are long periods where many
threads are waiting for pages to be paged in. </p></li>
<li><p>There are large periods of null thread activity. </p></li>
</ul></section>
<section id="GUID-D8D94E88-7B6C-4408-B78D-162201224DB6"><title>Thrashing prevention</title><p>The following is a means of
preventing thrashing from occurring: </p><ul>
<li><p>Increase the size of the paging cache. This reduces page faults and
hence the need to page-in memory. </p></li>
<li><p>Mark the code or data involved as unpaged, for example if a 20MB buffer
is actively used through a use-case and discarded afterwards there is little
use in making it paged as it will need to always be in the page cache. </p></li>
<li><p>Reduce the working set size so that it fits into the paging cache,
for example instead of having four activities running concurrently, serialize
them. </p></li>
</ul></section>
</conbody><related-links>
<link href="GUID-44540C74-CD73-5D8E-A9E0-F90F46B4E7B1.dita"><linktext>Preventing
And Recovering From Thrashing Guide</linktext></link>
</related-links></concept>