diff options
| author | orbiter <orbiter@6c8d7289-2bf4-0310-a012-ef5d649a1542> | 2007-03-06 22:43:32 +0000 |
|---|---|---|
| committer | orbiter <orbiter@6c8d7289-2bf4-0310-a012-ef5d649a1542> | 2007-03-06 22:43:32 +0000 |
| commit | 1cba31de43238eca646a666b73380baf094a1431 (patch) | |
| tree | 95ed838c5dc3dc40d015a8ed34d9d896b005ff32 /htroot | |
| parent | e934c5b09be85684e47dbdc5dd937249d4e159f6 (diff) | |
redesigned ram organization for database caches
- each cache can now allocate as much memory as is available
- no more fixed limits
- replaced old performance memory monitor by new one
- added supervision methods as static functions into the classes that provide cache functionality
- steering of ram allocation is done with two simple limits that are ram availability-relative
git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@3434 6c8d7289-2bf4-0310-a012-ef5d649a1542
Diffstat (limited to 'htroot')
| -rw-r--r-- | htroot/PerformanceMemory_p.html | 456 | ||||
| -rw-r--r-- | htroot/PerformanceMemory_p.java | 376 | ||||
| -rw-r--r-- | htroot/PerformanceQueues_p.java | 2 | ||||
| -rw-r--r-- | htroot/Status.html | 3 | ||||
| -rw-r--r-- | htroot/env/base.css | 5 |
5 files changed, 271 insertions, 571 deletions
diff --git a/htroot/PerformanceMemory_p.html b/htroot/PerformanceMemory_p.html index 309c7197a..7283cdade 100644 --- a/htroot/PerformanceMemory_p.html +++ b/htroot/PerformanceMemory_p.html @@ -58,355 +58,135 @@ </tr>
</table>
- <form action="PerformanceMemory_p.html" method="post" enctype="multipart/form-data">
- <fieldset>
+ <p><form action="PerformanceMemory_p.html" method="post" enctype="multipart/form-data">
+ <fieldset border="0">
<legend>Memory Settings</legend>
- <dl>
- <dt><label for="Xmx">Maximum used memory</label></dt>
- <dd><input name="Xmx" id="Xmx" type="text" size="4" maxlength="4" value="#[Xmx]#" /> MByte</dd>
- <dt><label for="Xms">Minimal used memory</label></dt>
- <dd><input name="Xms" id="Xms" type="text" size="4" maxlength="4" value="#[Xms]#" /> MByte</dd>
- <dt><input type="submit" name="setStartup" value="Set" /></dt>
- <dd>Changes take effect after <strong>restart</strong> of YaCy</dd>
- </dl>
+ <table border="0" cellpadding="2" cellspacing="1" width="60%">
+ <colgroup><col width="20%"><col width="40%"></colgroup>
+ <tr>
+ <td class="TableHeader" align="right"><label for="Xmx">Memory reserved for JVM</label> </td>
+ <td class="TableCellDark" align="right"><input name="Xmx" id="Xmx" type="text" size="4" maxlength="4" value="#[Xmx]#" /> MByte</td>
+ </tr><tr>
+ <td #(setStartupCommit)#class="TableCellLight"::class="commit"::class="error"#(/setStartupCommit)# colspan="2" align="right">
+ #(setStartupCommit)#::Accepted change. This will take effect after <strong>restart</strong> of YaCy#(/setStartupCommit)#
+ <input type="submit" name="setStartup" value="Set" /></td>
+ </tr>
+ </table>
</fieldset>
- </form>
+ </form></p>
- <p><strong>RAM Cache for Database Files:</strong></p>
- <form action="PerformanceMemory_p.html" method="post" enctype="multipart/form-data">
- <table border="0" cellpadding="2" cellspacing="1">
- <tr class="TableHeader" valign="bottom">
- <td rowspan="2">Database<br /> </td>
- <td rowspan="2">DB Size<br /> </td>
- <td colspan="4">Node Cache</td>
- <td colspan="5">Object Cache</td>
- <td colspan="4">Memory Occupation (KBytes)</td>
- <td rowspan="2">Description<br /> </td>
- </tr>
-
- <tr class="TableHeader" valign="bottom">
- <td>Chunk<br />Size<br />(bytes)</td>
- <td>Empty<br />(avail.)<br />Slots</td>
- <td>Used<br />(filled)<br />Slots</td>
- <td>Node-Cache<br />Hit:Miss<br />Uniq:Doub<br />Del:Flush<br /></td>
- <td>Chunk<br />Size<br />(bytes)</td>
- <td>Max<br />Size<br />Hit/Miss</td>
- <td> <br />Hit-Size<br />Miss-Size</td>
- <td>Hit-Cache<br />Hit:Miss<br />Uniq:Doub<br />Del:Flush<br /></td>
- <td>Miss-Cache<br />Hit:Miss<br />Uniq:Doub<br />Del:Flush<br /></td>
- <td>Used Now</td>
- <td>Assigned Max</td>
- <td>Default Max</td>
- <td>Best Max</td>
- </tr>
- #(useRWICache)#::
- <tr class="TableCellDark">
- <td align="left">RWI Assortment Cluster</td>
- <td align="right">#[slreqRWI]#</td>
- <td align="right">#[nodszRWI]#</td>
- <td align="right">#[slempRWI]#</td>
- <td align="right">#[slfilRWI]#</td>
- <td align="right">#[slhittmissRWI]#<br />#[sluniqdoubRWI]#<br />#[slflushRWI]#</td>
- <td align="right">#[ochunksizRWI]#</td>
- <td align="right">#[ochunkmaxRWI]#<br />#[omisscmaxRWI]#</td>
- <td align="right">#[ohitsizeRWI]#<br />#[omisssizeRWI]#</td>
- <td align="right">#[ohittmissRWI]#<br />#[ouniqdoubRWI]#<br />#[oflushRWI]#</td>
- <td align="right">#[nhittmissRWI]#<br />#[nuniqdoubRWI]#<br />#[nflushRWI]#</td>
- <td align="right">#[usedRWI]#</td>
- <td align="right"><input name="ramCacheRWI" type="text" size="6" maxlength="7" value="#[ramCacheRWI]#" /></td>
- <td align="right">#[dfltRWI]#</td>
- <td align="right">#[bestRWI]#</td>
- <td align="left">The Assortment Cluster stores most of the page indexes.
- Flushing speed of the temporary RWI cache depends on the size of this file cache. Increasing the space of this
- cache will speed up crawls with a depth > 3.</td>
- </tr>#(/useRWICache)#
-
- <tr class="TableCellDark">
- <td align="left">HTTP Response Header</td>
- <td align="right">#[slreqHTTP]#</td>
- <td align="right">#[nodszHTTP]#</td>
- <td align="right">#[slempHTTP]#</td>
- <td align="right">#[slfilHTTP]#</td>
- <td align="right">#[slhittmissHTTP]#<br />#[sluniqdoubHTTP]#<br />#[slflushHTTP]#</td>
- <td align="right">#[ochunksizHTTP]#</td>
- <td align="right">#[ochunkmaxHTTP]#<br />#[omisscmaxHTTP]#</td>
- <td align="right">#[ohitsizeHTTP]#<br />#[omisssizeHTTP]#</td>
- <td align="right">#[ohittmissHTTP]#<br />#[ouniqdoubHTTP]#<br />#[oflushHTTP]#</td>
- <td align="right">#[nhittmissHTTP]#<br />#[nuniqdoubHTTP]#<br />#[nflushHTTP]#</td>
- <td align="right">#[usedHTTP]#</td>
- <td align="right"><input name="ramCacheHTTP" type="text" size="6" maxlength="7" value="#[ramCacheHTTP]#" /></td>
- <td align="right">#[dfltHTTP]#</td>
- <td align="right">#[bestHTTP]#</td>
- <td align="left">The Response Header database stores the HTTP heades that other servers send when YaCy retrieves web pages
- during proxy mode, when performing crawls or if it fetches pages for snippet generation.
- Increasing this cache will be most important for a fast proxy mode.</td>
- </tr>
-
- <tr class="TableCellDark">
- <td align="left">'loaded' URLs</td>
- <td align="right">#[slreqLURL]#</td>
- <td align="right">#[nodszLURL]#</td>
- <td align="right">#[slempLURL]#</td>
- <td align="right">#[slfilLURL]#</td>
- <td align="right">#[slhittmissLURL]#<br />#[sluniqdoubLURL]#<br />#[slflushLURL]#</td>
- <td align="right">#[ochunksizLURL]#</td>
- <td align="right">#[ochunkmaxLURL]#<br />#[omisscmaxLURL]#</td>
- <td align="right">#[ohitsizeLURL]#<br />#[omisssizeLURL]#</td>
- <td align="right">#[ohittmissLURL]#<br />#[ouniqdoubLURL]#<br />#[oflushLURL]#</td>
- <td align="right">#[nhittmissLURL]#<br />#[nuniqdoubLURL]#<br />#[nflushLURL]#</td>
- <td align="right">#[usedLURL]#</td>
- <td align="right"><input name="ramCacheLURL" type="text" size="6" maxlength="7" value="#[ramCacheLURL]#" /></td>
- <td align="right">#[dfltLURL]#</td>
- <td align="right">#[bestLURL]#</td>
- <td align="left">This is the database that holds the hash/url - relation and properties regarding the url like load date and server date.
- This cache is very important for a fast search process. Increasing the cache size will result in more search results and less IO during DHT transfer.</td>
- </tr>
- #(usePreNURLCache)#::
- <tr class="TableCellDark">
- <td align="left">'pre-noticed' URLs</td>
- <td align="right">#[slreqPreNURL]#</td>
- <td align="right">#[nodszPreNURL]#</td>
- <td align="right">#[slempPreNURL]#</td>
- <td align="right">#[slfilPreNURL]#</td>
- <td align="right">#[slhittmissPreNURL]#<br />#[sluniqdoubPreNURL]#<br />#[slflushPreNURL]#</td>
- <td align="right">#[ochunksizPreNURL]#</td>
- <td align="right">#[ochunkmaxPreNURL]#<br />#[omisscmaxPreNURL]#</td>
- <td align="right">#[ohitsizePreNURL]#<br />#[omisssizePreNURL]#</td>
- <td align="right">#[ohittmissPreNURL]#<br />#[ouniqdoubPreNURL]#<br />#[oflushPreNURL]#</td>
- <td align="right">#[nhittmissPreNURL]#<br />#[nuniqdoubPreNURL]#<br />#[nflushPreNURL]#</td>
- <td align="right">#[usedPreNURL]#</td>
- <td align="right"><input name="ramCachePreNURL" type="text" size="6" maxlength="7" value="#[ramCachePreNURL]#" /></td>
- <td align="right">#[dfltPreNURL]#</td>
- <td align="right">#[bestPreNURL]#</td>
- <td align="left"></td>
- </tr>#(/usePreNURLCache)#
- #(useNURLCache)#::
- <tr class="TableCellDark">
- <td align="left">'noticed' URLs</td>
- <td align="right">#[slreqNURL]#</td>
- <td align="right">#[nodszNURL]#</td>
- <td align="right">#[slempNURL]#</td>
- <td align="right">#[slfilNURL]#</td>
- <td align="right">#[slhittmissNURL]#<br />#[sluniqdoubNURL]#<br />#[slflushNURL]#</td>
- <td align="right">#[ochunksizNURL]#</td>
- <td align="right">#[ochunkmaxNURL]#<br />#[omisscmaxNURL]#</td>
- <td align="right">#[ohitsizeNURL]#<br />#[omisssizeNURL]#</td>
- <td align="right">#[ohittmissNURL]#<br />#[ouniqdoubNURL]#<br />#[oflushNURL]#</td>
- <td align="right">#[nhittmissNURL]#<br />#[nuniqdoubNURL]#<br />#[nflushNURL]#</td>
- <td align="right">#[usedNURL]#</td>
- <td align="right"><input name="ramCacheNURL" type="text" size="6" maxlength="7" value="#[ramCacheNURL]#" /></td>
- <td align="right">#[dfltNURL]#</td>
- <td align="right">#[bestNURL]#</td>
- <td align="left">A noticed URL is one that was discovered during crawling but was not loaded yet.
- Increasing the cache size will result in faster double-check during URL recognition when doing crawls.</td>
- </tr>#(/useNURLCache)#
- #(useEURLCache)#::
- <tr class="TableCellDark">
- <td align="left">'error' URLs</td>
- <td align="right">#[slreqEURL]#</td>
- <td align="right">#[nodszEURL]#</td>
- <td align="right">#[slempEURL]#</td>
- <td align="right">#[slfilEURL]#</td>
- <td align="right">#[slhittmissEURL]#<br />#[sluniqdoubEURL]#<br />#[slflushEURL]#</td>
- <td align="right">#[ochunksizEURL]#</td>
- <td align="right">#[ochunkmaxEURL]#<br />#[omisscmaxEURL]#</td>
- <td align="right">#[ohitsizeEURL]#<br />#[omisssizeEURL]#</td>
- <td align="right">#[ohittmissEURL]#<br />#[ouniqdoubEURL]#<br />#[oflushEURL]#</td>
- <td align="right">#[nhittmissEURL]#<br />#[nuniqdoubEURL]#<br />#[nflushEURL]#</td>
- <td align="right">#[usedEURL]#</td>
- <td align="right"><input name="ramCacheEURL" type="text" size="6" maxlength="7" value="#[ramCacheEURL]#" /></td>
- <td align="right">#[dfltEURL]#</td>
- <td align="right">#[bestEURL]#</td>
- <td align="left">URLs that cannot be loaded are stored in this database. It is also used for double-checked during crawling.
- Increasing the cache size will most probably speed up crawling slightly, but not significantly.</td>
- </tr>#(/useEURLCache)#
-
- <tr class="TableCellDark">
- <td align="left">DHT Control</td>
- <td align="right">#[slreqDHT]#</td>
- <td align="right">#[nodszDHT]#</td>
- <td align="right">#[slempDHT]#</td>
- <td align="right">#[slfilDHT]#</td>
- <td align="right">#[slhittmissDHT]#<br />#[sluniqdoubDHT]#<br />#[slflushDHT]#</td>
- <td align="right">#[ochunksizDHT]#</td>
- <td align="right">#[ochunkmaxDHT]#<br />#[omisscmaxDHT]#</td>
- <td align="right">#[ohitsizeDHT]#<br />#[omisssizeDHT]#</td>
- <td align="right">#[ohittmissDHT]#<br />#[ouniqdoubDHT]#<br />#[oflushDHT]#</td>
- <td align="right">#[nhittmissDHT]#<br />#[nuniqdoubDHT]#<br />#[nflushDHT]#</td>
- <td align="right">#[usedDHT]#</td>
- <td align="right"><input name="ramCacheDHT" type="text" size="6" maxlength="7" value="#[ramCacheDHT]#" /></td>
- <td align="right">#[dfltDHT]#</td>
- <td align="right">#[bestDHT]#</td>
- <td align="left">This is simply the cache for the seed-dbs (active, passive, potential).
- This cache is divided into three equal parts.
- Increasing this cache may speed up many functions, but we need to test this to see the effects.</td>
- </tr>
-
- <tr class="TableCellDark">
- <td align="left">Messages</td>
- <td align="right">#[slreqMessage]#</td>
- <td align="right">#[nodszMessage]#</td>
- <td align="right">#[slempMessage]#</td>
- <td align="right">#[slfilMessage]#</td>
- <td align="right">#[slhittmissMessage]#<br />#[sluniqdoubMessage]#<br />#[slflushMessage]#</td>
- <td align="right">#[ochunksizMessage]#</td>
- <td align="right">#[ochunkmaxMessage]#<br />#[omisscmaxMessage]#</td>
- <td align="right">#[ohitsizeMessage]#<br />#[omisssizeMessage]#</td>
- <td align="right">#[ohittmissMessage]#<br />#[ouniqdoubMessage]#<br />#[oflushMessage]#</td>
- <td align="right">#[nhittmissMessage]#<br />#[nuniqdoubMessage]#<br />#[nflushMessage]#</td>
- <td align="right">#[usedMessage]#</td>
- <td align="right"><input name="ramCacheMessage" type="text" size="6" maxlength="7" value="#[ramCacheMessage]#" /></td>
- <td align="right">#[dfltMessage]#</td>
- <td align="right">#[bestMessage]#</td>
- <td align="left">The Message cache for peer-to-peer messages. Less important.</td>
- </tr>
-
- <tr class="TableCellDark">
- <td align="left">Wiki</td>
- <td align="right">#[slreqWiki]#</td>
- <td align="right">#[nodszWiki]#</td>
- <td align="right">#[slempWiki]#</td>
- <td align="right">#[slfilWiki]#</td>
- <td align="right">#[slhittmissWiki]#<br />#[sluniqdoubWiki]#<br />#[slflushWiki]#</td>
- <td align="right">#[ochunksizWiki]#</td>
- <td align="right">#[ochunkmaxWiki]#<br />#[omisscmaxWiki]#</td>
- <td align="right">#[ohitsizeWiki]#<br />#[omisssizeWiki]#</td>
- <td align="right">#[ohittmissWiki]#<br />#[ouniqdoubWiki]#<br />#[oflushWiki]#</td>
- <td align="right">#[nhittmissWiki]#<br />#[nuniqdoubWiki]#<br />#[nflushWiki]#</td>
- <td align="right">#[usedWiki]#</td>
- <td align="right"><input name="ramCacheWiki" type="text" size="6" maxlength="7" value="#[ramCacheWiki]#" /></td>
- <td align="right">#[dfltWiki]#</td>
- <td align="right">#[bestWiki]#</td>
- <td align="left">The YaCy-Wiki uses a database to store its pages.
- This cache is divided in two parts, one for the wiki database and one for its backup.
- Increasing this cache may speed up access to the wiki pages.</td>
- </tr>
-
- <tr class="TableCellDark">
- <td align="left">Blog</td>
- <td align="right">#[slreqBlog]#</td>
- <td align="right">#[nodszBlog]#</td>
- <td align="right">#[slempBlog]#</td>
- <td align="right">#[slfilBlog]#</td>
- <td align="right">#[slhittmissBlog]#<br />#[sluniqdoubBlog]#<br />#[slflushBlog]#</td>
- <td align="right">#[ochunksizBlog]#</td>
- <td align="right">#[ochunkmaxBlog]#</td>
- <td align="right">#[ohitsizeBlog]#<br />#[omisssizeBlog]#</td>
- <td align="right">#[ohittmissBlog]#<br />#[ouniqdoubBlog]#<br />#[oflushBlog]#</td>
- <td align="right">#[nhittmissBlog]#<br />#[nuniqdoubBlog]#<br />#[nflushBlog]#</td>
- <td align="right">#[usedBlog]#</td>
- <td align="right"><input name="ramCacheBlog" type="text" size="6" maxlength="7" value="#[ramCacheBlog]#" /></td>
- <td align="right">#[dfltBlog]#</td>
- <td align="right">#[bestBlog]#</td>
- <td align="left">The YaCy-Blog uses a database to store its entries.
- Increasing this cache may speed up access to the Blog.</td>
- </tr>
-
- <tr class="TableCellDark">
- <td align="left">News</td>
- <td align="right">#[slreqNews]#</td>
- <td align="right">#[nodszNews]#</td>
- <td align="right">#[slempNews]#</td>
- <td align="right">#[slfilNews]#</td>
- <td align="right">#[slhittmissNews]#<br />#[sluniqdoubNews]#<br />#[slflushNews]#</td>
- <td align="right">#[ochunksizNews]#</td>
- <td align="right">#[ochunkmaxNews]#</td>
- <td align="right">#[ohitsizeNews]#<br />#[omisssizeNews]#</td>
- <td align="right">#[ohittmissNews]#<br />#[ouniqdoubNews]#<br />#[oflushNews]#</td>
- <td align="right">#[nhittmissNews]#<br />#[nuniqdoubNews]#<br />#[nflushNews]#</td>
- <td align="right">#[usedNews]#</td>
- <td align="right"><input name="ramCacheNews" type="text" size="6" maxlength="7" value="#[ramCacheNews]#" /></td>
- <td align="right">#[dfltNews]#</td>
- <td align="right">#[bestNews]#</td>
- <td align="left">The News-DB stores property-lists for news that are included in seeds.
- Increasing this cache may speed up the peer-ping.</td>
- </tr>
-
- <tr class="TableCellDark">
- <td align="left">robots.txt DB</td>
- <td align="right">#[slreqRobots]#</td>
- <td align="right">#[nodszRobots]#</td>
- <td align="right">#[slempRobots]#</td>
- <td align="right">#[slfilRobots]#</td>
- <td align="right">#[slhittmissRobots]#<br />#[sluniqdoubRobots]#<br />#[slflushRobots]#</td>
- <td align="right">#[ochunksizRobots]#</td>
- <td align="right">#[ochunkmaxRobots]#</td>
- <td align="right">#[ohitsizeRobots]#<br />#[omisssizeRobots]#</td>
- <td align="right">#[ohittmissRobots]#<br />#[ouniqdoubRobots]#<br />#[oflushRobots]#</td>
- <td align="right">#[nhittmissRobots]#<br />#[nuniqdoubRobots]#<br />#[nflushRobots]#</td>
- <td align="right">#[usedRobots]#</td>
- <td align="right"><input name="ramCacheRobots" type="text" size="6" maxlength="7" value="#[ramCacheRobots]#" /></td>
- <td align="right">#[dfltRobots]#</td>
- <td align="right">#[bestRobots]#</td>
- <td align="left">The robots.txt DB stores downloaded records from robots.txt files.
- Increasing this cache may speed up validation if crawling of the URL is allowed.</td>
- </tr>
-
- <tr class="TableCellDark">
- <td align="left">Crawl Profiles</td>
- <td align="right">#[slreqProfiles]#</td>
- <td align="right">#[nodszProfiles]#</td>
- <td align="right">#[slempProfiles]#</td>
- <td align="right">#[slfilProfiles]#</td>
- <td align="right">#[slhittmissProfiles]#<br />#[sluniqdoubProfiles]#<br />#[slflushProfiles]#</td>
- <td align="right">#[ochunksizProfiles]#</td>
- <td align="right">#[ochunkmaxProfiles]#</td>
- <td align="right">#[ohitsizeProfiles]#<br />#[omisssizeProfiles]#</td>
- <td align="right">#[ohittmissProfiles]#<br />#[ouniqdoubProfiles]#<br />#[oflushProfiles]#</td>
- <td align="right">#[nhittmissProfiles]#<br />#[nuniqdoubProfiles]#<br />#[nflushProfiles]#</td>
- <td align="right">#[usedProfiles]#</td>
- <td align="right"><input name="ramCacheProfiles" type="text" size="6" maxlength="7" value="#[ramCacheProfiles]#" /></td>
- <td align="right">#[dfltProfiles]#</td>
- <td align="right">#[bestProfiles]#</td>
- <td align="left">The profile database stores properties for each crawl that is started on the local peer.
- Increasing this cache may speed up crawling, but not much space is needed, so the effect may be low.</td>
- </tr>
-
- <tr class="TableCellSummary">
- <td align="left" colspan="11">Totals</td>
- <td align="right">#[usedTotal]# MB</td>
- <td align="right">#[currTotal]# MB</td>
- <td align="right">#[dfltTotal]# MB</td>
- <td align="right">#[bestTotal]# MB</td>
- <td align="left">Sum of memory amounts</td>
- </tr>
-
- <tr class="TableCellLight">
- <td align="right" colspan="12">Re-Configuration:</td>
- <td align="center"><input type="submit" name="setCustom" value="Set" /><br />these<br />custom<br />values<br /> </td>
- <td align="center"><input type="submit" name="setDefault" value="Set" /><br />all<br />default<br />values<br /> </td>
- <td align="center"><input type="submit" name="setBest" value="Set" /><br />all<br />optimum<br />values<br /> </td>
- <td align="left">Changes take effect after <strong>re-start</strong> of YaCy</td>
- </tr>
-
- </table>
- </form>
+ <p><strong>FlexTable RAM Index:</strong></p>
+ <table border="0" cellpadding="2" cellspacing="1">
+ <tr class="TableHeader" valign="bottom">
+ <td>Table</td>
+ <td>Chunk Size</td>
+ <td>Count</td>
+ <td>Used Memory</td>
+ </tr>
+ #{TableList}#
+ <tr class="TableCellLight">
+ <td align="left">#[tableIndexPath]#</td>
+ <td align="right">#[tableIndexChunkSize]#</td>
+ <td align="right">#[tableIndexCount]#</td>
+ <td align="right">#[tableIndexMem]# MB</td>
+ </tr>
+ #{/TableList}#
+ <tr class="TableCellDark">
+ <td colspan="4">Total Mem = #[TableIndexTotalMem]# MB</td>
+ </tr>
+ </table></p>
- <!--
- <p><strong>Write Cache Object Allocation:</strong></p>
+ <p><strong>Node Caches:</strong></p>
<table border="0" cellpadding="2" cellspacing="1">
<tr class="TableHeader" valign="bottom">
- <td> <br />Chunk Sizes</td>
- #{sizes}#
- <td>#[chunk]#</td>
- #{/sizes}#
+ <td>Table</td>
+ <td>Chunk Size</td>
+ <td>Count</td>
+ <td>Used Memory</td>
+ <td>Read Hit</td>
+ <td>Read Miss</td>
+ <td>Write Unique</td>
+ <td>Write Double</td>
+ <td>Deletes</td>
+ <td>Flushes</td>
</tr>
+ #{NodeList}#
+ <tr class="TableCellLight">
+ <td align="left">#[nodeCachePath]#</td>
+ <td align="right">#[nodeChunkSize]#</td>
+ <td align="right">#[nodeCacheCount]#</td>
+ <td align="right">#[nodeCacheMem]# MB</td>
+ <td align="right">#[nodeCacheReadHit]#</td>
+ <td align="right">#[nodeCacheReadMiss]#</td>
+ <td align="right">#[nodeCacheWriteUnique]#</td>
+ <td align="right">#[nodeCacheWriteDouble]#</td>
+ <td align="right">#[nodeCacheDeletes]#</td>
+ <td align="right">#[nodeCacheFlushes]#</td>
+ </tr>
+ #{/NodeList}#
<tr class="TableCellDark">
- <td class="TableHeader" align="left">now alive in write cache</td>
- #{alive}#
- <td>#[count]#</td>
- #{/alive}#
+ <td colspan="10">Total Mem = #[nodeCacheTotalMem]# MB; Stop Grow when less than #[nodeCacheStopGrow]# MB available left; Start Shrink when less than #[nodeCacheStartShrink]# MB availabe left</td>
</tr>
+ </table></p>
+
+ <p><strong>Object Read Caches:</strong></p>
+ <table border="0" cellpadding="2" cellspacing="1">
+ <tr class="TableHeader" valign="bottom">
+ <td></td>
+ <td colspan="9">Read Hit Cache</td>
+ <td colspan="9">Read Miss Cache</td>
+ </tr>
+ <tr class="TableHeader" valign="bottom">
+ <td>Table</td>
+ <td>Chunk Size</td>
+ <td>Count</td>
+ <td>Used Memory</td>
+ <td>Read Hit</td>
+ <td>Read Miss</td>
+ <td>Write Unique</td>
+ <td>Write Double</td>
+ <td>Deletes</td>
+ <td>Flushes</td>
+ <td>Chunk Size</td>
+ <td>Count</td>
+ <td>Used Memory</td>
+ <td>Read Hit</td>
+ <td>Read Miss</td>
+ <td>Write Unique</td>
+ <td>Write Double</td>
+ <td>Deletes</td>
+ <td>Flushes</td>
+ </tr>
+ #{ObjectList}#
+ <tr class="TableCellLight">
+ <td align="left">#[objectCachePath]#</td>
+ <td align="right">#[objectHitChunkSize]#</td>
+ <td align="right">#[objectHitCacheCount]#</td>
+ <td align="right">#[objectHitCacheMem]# MB</td>
+ <td align="right">#[objectHitCacheReadHit]#</td>
+ <td align="right">#[objectHitCacheReadMiss]#</td>
+ <td align="right">#[objectHitCacheWriteUnique]#</td>
+ <td align="right">#[objectHitCacheWriteDouble]#</td>
+ <td align="right">#[objectHitCacheDeletes]#</td>
+ <td align="right">#[objectHitCacheFlushes]#</td>
+ <td align="right">#[objectMissChunkSize]#</td>
+ <td align="right">#[objectMissCacheCount]#</td>
+ <td align="right">#[objectMissCacheMem]# MB</td>
+ <td align="right">#[objectMissCacheReadHit]#</td>
+ <td align="right">#[objectMissCacheReadMiss]#</td>
+ <td align="right">#[objectMissCacheWriteUnique]#</td>
+ <td align="right">#[objectMissCacheWriteDouble]#</td>
+ <td align="right">#[objectMissCacheDeletes]#</td>
+ <td align="right">#[objectMissCacheFlushes]#</td>
+ </tr>
+ #{/ObjectList}#
<tr class="TableCellDark">
- <td class="TableHeader" align="left">currently held in write buffer heap</td>
- #{heap}#
- <td>#[count]#</td>
- #{/heap}#
+ <td colspan="19">Total Mem: #[objectHitCacheTotalMem]# MB (hit), #[objectMissCacheTotalMem]# MB (miss); Stop Grow when less than #[objectCacheStopGrow]# MB available left; Start Shrink when less than #[objectCacheStartShrink]# MB availabe left</td>
</tr>
- </table>
- -->
+ </table></p>
+
<!-- other cache sizes -->
- <p><strong>Other caching structures:</strong></p>
+ <p><strong>Other Caching Structures:</strong></p>
<table border="0" cellpadding="2" cellspacing="1">
<tr class="TableHeader" valign="bottom">
<td>Type</td>
@@ -424,7 +204,7 @@ <td>HashBlacklistedCache</td>
<td>#[blacklistcache.size]#</td>
</tr>
- </table>
+ </table></p>
#%env/templates/footer.template%#
</body>
</html>
diff --git a/htroot/PerformanceMemory_p.java b/htroot/PerformanceMemory_p.java index cb052e6da..fadb93626 100644 --- a/htroot/PerformanceMemory_p.java +++ b/htroot/PerformanceMemory_p.java @@ -45,16 +45,19 @@ //import java.util.Iterator;
import java.io.File;
+import java.util.Iterator;
import java.util.Map;
import de.anomic.http.httpHeader;
import de.anomic.http.httpc;
+import de.anomic.kelondro.kelondroCache;
+import de.anomic.kelondro.kelondroFlexTable;
+import de.anomic.kelondro.kelondroRecords;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverFileUtils;
import de.anomic.server.serverMemory;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
-import de.anomic.yacy.yacyCore;
//import de.anomic.kelondro.kelondroObjectSpace;
public class PerformanceMemory_p {
@@ -63,73 +66,20 @@ public class PerformanceMemory_p { private static final long MB = 1024 * KB;
private static Map defaultSettings = null;
- private static int chk, obj;
- private static int[] slt;
- private static long[] ost;
- private static long req, usd, bst;
-
- private static long usedTotal, currTotal, dfltTotal, bestTotal;
-
public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) {
// return variable that accumulates replacements
- plasmaSwitchboard sb = (plasmaSwitchboard) env;
serverObjects prop = new serverObjects();
if (defaultSettings == null) {
defaultSettings = serverFileUtils.loadHashMap(new File(env.getRootPath(), "yacy.init"));
}
prop.put("gc", 0);
- String set = "";
if (post != null) {
- if (post.containsKey("setCustom")) {
- env.setConfig("ramCacheRWI", Long.parseLong(post.get("ramCacheRWI", "0")) * KB);
- env.setConfig("ramCacheHTTP", Long.parseLong(post.get("ramCacheHTTP", "0")) * KB);
- env.setConfig("ramCacheLURL", Long.parseLong(post.get("ramCacheLURL", "0")) * KB);
- env.setConfig("ramCacheNURL", Long.parseLong(post.get("ramCacheNURL", "0")) * KB);
- env.setConfig("ramCacheEURL", Long.parseLong(post.get("ramCacheEURL", "0")) * KB);
- env.setConfig("ramCacheDHT", Long.parseLong(post.get("ramCacheDHT", "0")) * KB);
- env.setConfig("ramCacheMessage", Long.parseLong(post.get("ramCacheMessage", "0")) * KB);
- env.setConfig("ramCacheWiki", Long.parseLong(post.get("ramCacheWiki", "0")) * KB);
- env.setConfig("ramCacheBlog", Long.parseLong(post.get("ramCacheBlog", "0")) * KB);
- env.setConfig("ramCacheNews", Long.parseLong(post.get("ramCacheNews", "0")) * KB);
- env.setConfig("ramCacheRobots", Long.parseLong(post.get("ramCacheRobots", "0")) * KB);
- env.setConfig("ramCacheProfiles", Long.parseLong(post.get("ramCacheProfiles", "0")) * KB);
- env.setConfig("ramCachePreNURL", Long.parseLong(post.get("ramCachePreNURL", "0")) * KB);
- }
- if (post.containsKey("setDefault")) {
- env.setConfig("ramCacheRWI", Long.parseLong((String) defaultSettings.get("ramCacheRWI")));
- env.setConfig("ramCacheHTTP", Long.parseLong((String) defaultSettings.get("ramCacheHTTP")));
- env.setConfig("ramCacheLURL", Long.parseLong((String) defaultSettings.get("ramCacheLURL")));
- env.setConfig("ramCacheNURL", Long.parseLong((String) defaultSettings.get("ramCacheNURL")));
- env.setConfig("ramCacheEURL", Long.parseLong((String) defaultSettings.get("ramCacheEURL")));
- env.setConfig("ramCacheDHT", Long.parseLong((String) defaultSettings.get("ramCacheDHT")));
- env.setConfig("ramCacheMessage", Long.parseLong((String) defaultSettings.get("ramCacheMessage")));
- env.setConfig("ramCacheWiki", Long.parseLong((String) defaultSettings.get("ramCacheWiki")));
- env.setConfig("ramCacheWiki", Long.parseLong((String) defaultSettings.get("ramCacheBlog")));
- env.setConfig("ramCacheNews", Long.parseLong((String) defaultSettings.get("ramCacheNews")));
- env.setConfig("ramCacheRobots", Long.parseLong((String) defaultSettings.get("ramCacheRobots")));
- env.setConfig("ramCacheProfiles", Long.parseLong((String) defaultSettings.get("ramCacheProfiles")));
- env.setConfig("ramCachePreNURL", Long.parseLong((String) defaultSettings.get("ramCachePreNURL")));
- }
- if (post.containsKey("setGood")) set = "setGood";
- if (post.containsKey("setBest")) set = "setBest";
- if (post.containsKey("gc")) {
- Runtime.getRuntime().gc();
- prop.put("gc", 1);
- }
-
- int xms = 10;
- if (post.containsKey("Xms")) {
- try { xms = Integer.valueOf(post.get("Xms", "10")).intValue(); } catch (NumberFormatException e){}
- env.setConfig("javastart_Xms", "Xms" + xms + "m");
- }
- int xmx = 64; // default maximum heap size
+ int xmx = 96; // default maximum heap size
if (post.containsKey("Xmx")) {
try { xmx = Integer.valueOf(post.get("Xmx", "64")).intValue(); } catch (NumberFormatException e){}
- // initial heap size must be less than or equal to the maximum heap size
- if (xmx < xms) xmx = xms;
env.setConfig("javastart_Xmx", "Xmx" + xmx + "m");
- } else if (xmx < xms) {
- env.setConfig("javastart_Xmx", "Xmx" + xms + "m");
+ env.setConfig("javastart_Xms", "Xms" + xmx + "m");
+ prop.put("setStartupCommit", 1);
}
}
@@ -161,158 +111,155 @@ public class PerformanceMemory_p { prop.put("memoryUsedAfterInitAGC", (memoryTotalAfterInitAGC - memoryFreeAfterInitAGC) / KB);
prop.put("memoryUsedNow", (memoryTotalNow - memoryFreeNow) / MB);
- usedTotal = 0;
- currTotal = 0;
- dfltTotal = 0;
- bestTotal = 0;
-
- prop.put("useRWICache", 0);
-
- req = sb.cacheManager.dbSize();
- chk = sb.cacheManager.cacheNodeChunkSize();
- obj = sb.cacheManager.cacheObjectChunkSize();
- slt = sb.cacheManager.cacheNodeStatus();
- ost = sb.cacheManager.cacheObjectStatus();
- putprop(prop, env, "", "HTTP", set);
+ // write table for FlexTable index sizes
+ Iterator i = kelondroFlexTable.filenames();
+ String filename;
+ Map map;
+ int p, c = 0;
+ long mem, totalmem = 0;
+ while (i.hasNext()) {
+ filename = (String) i.next();
+ map = (Map) kelondroFlexTable.memoryStats(filename);
+ p = filename.indexOf("DATA");
+ mem = Long.parseLong((String) map.get("tableIndexMem"));
+ totalmem += mem;
+ prop.put("TableList_" + c + "_tableIndexPath", filename.substring(p));
+ prop.put("TableList_" + c + "_tableIndexChunkSize", map.get("tableIndexChunkSize"));
+ prop.put("TableList_" + c + "_tableIndexCount", map.get("tableIndexCount"));
+ prop.put("TableList_" + c + "_tableIndexMem", mem / (1024 * 1024));
+ c++;
+ }
+ prop.put("TableList", c);
+ prop.put("TableIndexTotalMem", totalmem / (1024 * 1024));
- req = sb.wordIndex.loadedURL.size();
- chk = sb.wordIndex.loadedURL.cacheNodeChunkSize();
- obj = sb.wordIndex.loadedURL.cacheObjectChunkSize();
- slt = sb.wordIndex.loadedURL.cacheNodeStatus();
- ost = sb.wordIndex.loadedURL.cacheObjectStatus();
- putprop(prop, env, "", "LURL", set);
- if (sb.sbStackCrawlThread.getDBType() != de.anomic.plasma.plasmaCrawlStacker.QUEUE_DB_TYPE_TREE) {
- prop.put("usePreNURLCache", 0);
- } else {
- prop.put("usePreNURLCache", 1);
- req = sb.sbStackCrawlThread.size();
- chk = sb.sbStackCrawlThread.cacheNodeChunkSize();
- obj = sb.sbStackCrawlThread.cacheObjectChunkSize();
- slt = sb.sbStackCrawlThread.cacheNodeStatus();
- ost = sb.sbStackCrawlThread.cacheObjectStatus();
- putprop(prop, env, "usePreNURLCache", "PreNURL", set);
- }
+ /*
+ * <p><strong>FlexTable RAM Index:</strong></p>
+ <table border="0" cellpadding="2" cellspacing="1">
+ <tr class="TableHeader" valign="bottom">
+ <td>Table</td>
+ <td>Chunk Size</td>
+ <td>Count</td>
+ <td>Used Memory</td>
+ </tr>
+ #{TableList}#
+ <tr class="TableCellLight">
+ <td align="left">#[tableIndexPath]#</td>
+ <td align="right">#[tableIndexChunkSize]#</td>
+ <td align="right">#[tableIndexCount]#</td>
+ <td align="right">#[tableIndexMem]# MB</td>
+ </tr>
+ #{/TableList}#
+ <tr class="TableCellDark">
+ <td colspan="10">Total Mem = #[TableIndexTotalMem]# MB</td>
+ </tr>
+ </table></p>
+ */
- if (sb.noticeURL.getUseNewDB()) {
- prop.put("useNURLCache", 0);
- } else {
- prop.put("useNURLCache", 1);
- req = sb.noticeURL.size();
- chk = sb.noticeURL.cacheNodeChunkSize();
- obj = sb.noticeURL.cacheObjectChunkSize();
- slt = sb.noticeURL.cacheNodeStatus();
- ost = sb.noticeURL.cacheObjectStatus();
- putprop(prop, env, "useNURLCache", "NURL", set);
+ // write node cache table
+ i = kelondroRecords.filenames();
+ c = 0;
+ totalmem = 0;
+ while (i.hasNext()) {
+ filename = (String) i.next();
+ map = (Map) kelondroRecords.memoryStats(filename);
+ p = filename.indexOf("DATA");
+ mem = Long.parseLong((String) map.get("nodeCacheMem"));
+ totalmem += mem;
+ prop.put("NodeList_" + c + "_nodeCachePath", filename.substring(p));
+ prop.put("NodeList_" + c + "_nodeChunkSize", map.get("nodeChunkSize"));
+ prop.put("NodeList_" + c + "_nodeCacheCount", map.get("nodeCacheCount"));
+ prop.put("NodeList_" + c + "_nodeCacheMem", mem / (1024 * 1024));
+ prop.put("NodeList_" + c + "_nodeCacheReadHit", map.get("nodeCacheReadHit"));
+ prop.put("NodeList_" + c + "_nodeCacheReadMiss", map.get("nodeCacheReadMiss"));
+ prop.put("NodeList_" + c + "_nodeCacheWriteUnique", map.get("nodeCacheWriteUnique"));
+ prop.put("NodeList_" + c + "_nodeCacheWriteDouble", map.get("nodeCacheWriteDouble"));
+ prop.put("NodeList_" + c + "_nodeCacheDeletes", map.get("nodeCacheDeletes"));
+ prop.put("NodeList_" + c + "_nodeCacheFlushes", map.get("nodeCacheFlushes"));
+ c++;
}
+ prop.put("NodeList", c);
+ prop.put("nodeCacheStopGrow", kelondroRecords.getMemStopGrow() / (1024 * 1024));
+ prop.put("nodeCacheStartShrink", kelondroRecords.getMemStartShrink() / (1024 * 1024));
+ prop.put("nodeCacheTotalMem", totalmem / (1024 * 1024));
- if (sb.errorURL.getUseNewDB()) {
- prop.put("useEURLCache", 0);
- } else {
- prop.put("useEURLCache", 1);
- req = sb.errorURL.size();
- chk = sb.errorURL.cacheNodeChunkSize();
- obj = sb.errorURL.cacheObjectChunkSize();
- slt = sb.errorURL.cacheNodeStatus();
- ost = sb.errorURL.cacheObjectStatus();
- putprop(prop, env, "useEURLCache", "EURL", set);
+ // write object cache table
+ i = kelondroCache.filenames();
+ c = 0;
+ long hitmem, missmem, totalhitmem = 0, totalmissmem = 0;
+ while (i.hasNext()) {
+ filename = (String) i.next();
+ map = (Map) kelondroCache.memoryStats(filename);
+ p = filename.indexOf("DATA");
+ prop.put("ObjectList_" + c + "_objectCachePath", filename.substring(p));
+
+ // hit cache
+ hitmem = Long.parseLong((String) map.get("objectHitMem"));
+ totalhitmem += hitmem;
+ prop.put("ObjectList_" + c + "_objectHitChunkSize", map.get("objectHitChunkSize"));
+ prop.put("ObjectList_" + c + "_objectHitCacheCount", map.get("objectHitCacheCount"));
+ prop.put("ObjectList_" + c + "_objectHitCacheMem", hitmem / (1024 * 1024));
+ prop.put("ObjectList_" + c + "_objectHitCacheReadHit", map.get("objectHitCacheReadHit"));
+ prop.put("ObjectList_" + c + "_objectHitCacheReadMiss", map.get("objectHitCacheReadMiss"));
+ prop.put("ObjectList_" + c + "_objectHitCacheWriteUnique", map.get("objectHitCacheWriteUnique"));
+ prop.put("ObjectList_" + c + "_objectHitCacheWriteDouble", map.get("objectHitCacheWriteDouble"));
+ prop.put("ObjectList_" + c + "_objectHitCacheDeletes", map.get("objectHitCacheDeletes"));
+ prop.put("ObjectList_" + c + "_objectHitCacheFlushes", map.get("objectHitCacheFlushes"));
+
+ // miss cache
+ missmem = Long.parseLong((String) map.get("objectMissMem"));
+ totalmissmem += missmem;
+ prop.put("ObjectList_" + c + "_objectMissChunkSize", map.get("objectMissChunkSize"));
+ prop.put("ObjectList_" + c + "_objectMissCacheCount", map.get("objectMissCacheCount"));
+ prop.put("ObjectList_" + c + "_objectMissCacheMem", missmem / (1024 * 1024));
+ prop.put("ObjectList_" + c + "_objectMissCacheReadHit", map.get("objectMissCacheReadHit"));
+ prop.put("ObjectList_" + c + "_objectMissCacheReadMiss", map.get("objectMissCacheReadMiss"));
+ prop.put("ObjectList_" + c + "_objectMissCacheWriteUnique", map.get("objectMissCacheWriteUnique"));
+ prop.put("ObjectList_" + c + "_objectMissCacheWriteDouble", map.get("objectMissCacheWriteDouble"));
+ prop.put("ObjectList_" + c + "_objectMissCacheDeletes", map.get("objectMissCacheDeletes"));
+ prop.put("ObjectList_" + c + "_objectMissCacheFlushes", map.get("objectMissCacheFlushes"));
+
+ c++;
}
-
- req = yacyCore.seedDB.sizeConnected() + yacyCore.seedDB.sizeDisconnected() + yacyCore.seedDB.sizePotential();
- chk = yacyCore.seedDB.cacheNodeChunkSize();
- obj = yacyCore.seedDB.cacheObjectChunkSize();
- slt = yacyCore.seedDB.cacheNodeStatus();
- ost = yacyCore.seedDB.cacheObjectStatus();
- putprop(prop, env, "", "DHT", set);
-
- req = sb.messageDB.size();
- chk = sb.messageDB.cacheNodeChunkSize();
- obj = sb.messageDB.cacheObjectChunkSize();
- slt = sb.messageDB.cacheNodeStatus();
- ost = sb.messageDB.cacheObjectStatus();
- putprop(prop, env, "", "Message", set);
-
- req = sb.wikiDB.sizeOfTwo();
- chk = sb.wikiDB.cacheNodeChunkSize();
- obj = sb.wikiDB.cacheObjectChunkSize();
- slt = sb.wikiDB.cacheNodeStatus();
- ost = sb.wikiDB.cacheObjectStatus();
- putprop(prop, env, "", "Wiki", set);
-
- req = sb.blogDB.size();
- chk = sb.blogDB.cacheNodeChunkSize();
- obj = sb.blogDB.cacheObjectChunkSize();
- slt = sb.blogDB.cacheNodeStatus();
- ost = sb.blogDB.cacheObjectStatus();
- putprop(prop, env, "", "Blog", set);
-
- req = yacyCore.newsPool.dbSize();
- chk = yacyCore.newsPool.cacheNodeChunkSize();
- obj = yacyCore.newsPool.cacheObjectChunkSize();
- slt = yacyCore.newsPool.cacheNodeStatus();
- ost = yacyCore.newsPool.cacheObjectStatus();
- putprop(prop, env, "", "News", set);
-
- req = plasmaSwitchboard.robots.size();
- chk = plasmaSwitchboard.robots.cacheNodeChunkSize();
- obj = plasmaSwitchboard.robots.cacheObjectChunkSize();
- slt = plasmaSwitchboard.robots.cacheNodeStatus();
- ost = plasmaSwitchboard.robots.cacheObjectStatus();
- putprop(prop, env, "", "Robots", set);
-
- req = sb.profiles.size();
- chk = sb.profiles.cacheNodeChunkSize();
- obj = sb.profiles.cacheObjectChunkSize();
- slt = sb.profiles.cacheNodeStatus();
- ost = sb.profiles.cacheObjectStatus();
- putprop(prop, env, "", "Profiles", set);
-
- prop.put("usedTotal", usedTotal / MB);
- prop.put("currTotal", currTotal / MB);
- prop.put("dfltTotal", dfltTotal / MB);
- prop.put("bestTotal", bestTotal / MB);
-
+ prop.put("ObjectList", c);
+ prop.put("objectCacheStopGrow", kelondroCache.getMemStopGrow() / (1024 * 1024));
+ prop.put("objectCacheStartShrink", kelondroCache.getMemStartShrink() / (1024 * 1024));
+ prop.put("objectHitCacheTotalMem", totalhitmem / (1024 * 1024));
+ prop.put("objectMissCacheTotalMem", totalmissmem / (1024 * 1024));
+ /*
+ #{ObjectList}#
+ <tr class="TableCellLight">
+ <td align="left">#[objectHitCachePath]#</td>
+ <td align="right">#[objectHitChunkSize]#</td>
+ <td align="right">#[objectHitCacheCount]#</td>
+ <td align="right">#[objectHitCacheMem]# MB</td>
+ <td align="right">#[objectHitCacheReadHit]#</td>
+ <td align="right">#[objectHitCacheReadMiss]#</td>
+ <td align="right">#[objectHitCacheWriteUnique]#</td>
+ <td align="right">#[objectHitCacheWriteDouble]#</td>
+ <td align="right">#[objectHitCacheDeletes]#</td>
+ <td align="right">#[objectHitCacheFlushes]#</td>
+ <td align="right">#[objectMissChunkSize]#</td>
+ <td align="right">#[objectMissCacheCount]#</td>
+ <td align="right">#[objectMissCacheMem]# MB</td>
+ <td align="right">#[objectMissCacheReadHit]#</td>
+ <td align="right">#[objectMissCacheReadMiss]#</td>
+ <td align="right">#[objectMissCacheWriteUnique]#</td>
+ <td align="right">#[objectMissCacheWriteDouble]#</td>
+ <td align="right">#[objectMissCacheDeletes]#</td>
+ <td align="right">#[objectMissCacheFlushes]#</td>
+ </tr>
+ #{/ObjectList}#
+ <tr class="TableCellDark">
+ <td colspan="10">Total Mem: #[objectHitCacheTotalMem]# MB (hit), #[objectMissCacheTotalMem]# MB (miss); Stop Grow when #[objectCacheStopGrow]# MB available left; Start Shrink when #[objectCacheStartShrink]# MB availabe left</td>
+ </tr>
+ </table></p>
+ */
// parse initialization memory settings
String Xmx = env.getConfig("javastart_Xmx", "Xmx64m").substring(3);
prop.put("Xmx", Xmx.substring(0, Xmx.length() - 1));
String Xms = env.getConfig("javastart_Xms", "Xms10m").substring(3);
prop.put("Xms", Xms.substring(0, Xms.length() - 1));
-
- /*
- // create statistics about write cache object space
- int chunksizes = ((kelondroObjectSpace.statAlive().size() > 0) &&
- (kelondroObjectSpace.statHeap().size() > 0)) ?
- Math.max(
- ((Integer) kelondroObjectSpace.statAlive().lastKey()).intValue(),
- ((Integer) kelondroObjectSpace.statHeap().lastKey()).intValue()
- ) : 0;
- int[] statAlive = new int[chunksizes];
- int[] statHeap = new int[chunksizes];
- for (int i = 0; i < chunksizes; i++) { statAlive[i] = 0; statHeap[i] = 0; }
- Map.Entry entry;
- Iterator i = kelondroObjectSpace.statAlive().entrySet().iterator();
- while (i.hasNext()) {
- entry = (Map.Entry) i.next();
- statAlive[((Integer) entry.getKey()).intValue() - 1] = ((Integer) entry.getValue()).intValue();
- }
- i = kelondroObjectSpace.statHeap().entrySet().iterator();
- while (i.hasNext()) {
- entry = (Map.Entry) i.next();
- statHeap[((Integer) entry.getKey()).intValue() - 1] = ((Integer) entry.getValue()).intValue();
- }
- int c = 0;
- for (int j = 0; j < chunksizes; j++) {
- if ((statAlive[j] > 0) || (statHeap[j] > 0)) {
- prop.put("sizes_" + c + "_chunk", Integer.toString(j + 1));
- prop.put("alive_" + c + "_count", Integer.toString(statAlive[j]));
- prop.put("heap_" + c + "_count", Integer.toString(statHeap[j]));
- c++;
- }
- }
- prop.put("sizes", Integer.toString(c));
- prop.put("alive", Integer.toString(c));
- prop.put("heap" , Integer.toString(c));
- */
// other caching structures
long amount = httpc.nameCacheHitSize();
@@ -324,37 +271,4 @@ public class PerformanceMemory_p { // return rewrite values for templates
return prop;
}
-
- private static void putprop(serverObjects prop, serverSwitch env, String wdb, String db, String set) {
- if ((slt == null) || (ost == null)) return;
- usd = chk * slt[1] + obj * ost[2] /*hit*/ + 12 * ost[3] /*miss*/;
- bst = (((((long) chk) * ((long) req)) >> 10) + 1) << 10;
- if (set.equals("setBest")) env.setConfig("ramCache" + db, bst);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "nodsz" + db, chk);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "ochunksiz" + db, obj);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "slreq" + db, req);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "slemp" + db, slt[0] - slt[1]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "slfil" + db, slt[1]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "slhittmiss" + db, slt[4] + ":" + slt[5]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "sluniqdoub" + db, slt[6] + ":" + slt[7]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "slflush" + db, slt[8] + ":" + slt[9]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "ochunkmax" + db, ost[0]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "omisscmax" + db, ost[1]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "ohitsize" + db, ost[2]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "omisssize" + db, ost[3]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "ohittmiss" + db, ost[7] + ":" + ost[8]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "ouniqdoub" + db, ost[9] + ":" + ost[10]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "oflush" + db, ost[11] + ":" + ost[12]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "nhittmiss" + db, ost[13] + ":" + ost[14]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "nuniqdoub" + db, ost[15] + ":" + ost[16]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "nflush" + db, ost[17] + ":" + ost[18]);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "used" + db, usd / KB);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "best" + db, bst / KB);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "dflt" + db, Long.parseLong((String) defaultSettings.get("ramCache" + db)) / KB);
- prop.put(wdb + ((wdb.length() > 0) ? ("_") : ("")) + "ramCache" + db, Long.parseLong(env.getConfig("ramCache" + db, "0")) / KB);
- usedTotal += usd;
- currTotal += Long.parseLong(env.getConfig("ramCache" + db, "0"));
- dfltTotal += Long.parseLong((String) defaultSettings.get("ramCache" + db));
- bestTotal += bst;
- }
}
diff --git a/htroot/PerformanceQueues_p.java b/htroot/PerformanceQueues_p.java index 0107bd20b..2f3b095ca 100644 --- a/htroot/PerformanceQueues_p.java +++ b/htroot/PerformanceQueues_p.java @@ -173,7 +173,7 @@ public class PerformanceQueues_p { prop.put("table_" + c + "_busysleep", busysleep);
prop.put("table_" + c + "_memprereq", memprereq / 1024);
// disallow setting of memprereq for indexer to prevent db from throwing OOMs
- prop.put("table_" + c + "_disabled", (threadName.endsWith("_indexing")) ? 1 : 0);
+ prop.put("table_" + c + "_disabled", /*(threadName.endsWith("_indexing")) ? 1 :*/ 0);
c++;
}
prop.put("table", c);
diff --git a/htroot/Status.html b/htroot/Status.html index 138fc5616..89abdffc0 100644 --- a/htroot/Status.html +++ b/htroot/Status.html @@ -12,7 +12,8 @@ <p>Welcome to YaCy!</p>
<form action="Steering.html" method="get" class="PeerControl">
- <fieldset>#(restartEnabled)#::
+ <fieldset>
+ #(restartEnabled)#::
<button type="submit" name="restart" value="Restart">
<img src="/env/grafics/lock.gif" alt="Only the administrator may restart this peer" />
Restart
diff --git a/htroot/env/base.css b/htroot/env/base.css index 66007f85f..74374083e 100644 --- a/htroot/env/base.css +++ b/htroot/env/base.css @@ -115,6 +115,11 @@ tt, *.tt { font-weight:bold; } +.commit { + font-weight:bold; + color:green; +} + .help { font-size:90%; } |
