<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Benchmarking TileCache, part 1</title>
	<atom:link href="http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/feed/" rel="self" type="application/rss+xml" />
	<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/</link>
	<description>researching VGI</description>
	<lastBuildDate>Fri, 06 Nov 2009 13:48:29 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: mvexel</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-19</link>
		<dc:creator>mvexel</dc:creator>
		<pubDate>Tue, 18 Mar 2008 20:56:46 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-19</guid>
		<description>Steven: I intend to set up an environment like the one on www.openstreetmap.org and benchmark that against tilecache in the future. The OpenStreetMap tile server used to serve map tiles to www.openstreetmap.org doesn&#039;t use TileCache at all. Instead, it uses a combination of a custom Apache module - mod_tile - handling path translations and a rendering daemon - renderd - handling both on-demand and background rendering in separate threads. It is described &lt;a href=&quot;http://wiki.openstreetmap.org/index.php/Mod_tile&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;. It is supposed to be much, much more efficient than any possible TileCache setup - at least for an environment with a constant huge requirement for tile re-rendering such as the OpenStreetMap server.</description>
		<content:encoded><![CDATA[<p>Steven: I intend to set up an environment like the one on <a href="http://www.openstreetmap.org" rel="nofollow">http://www.openstreetmap.org</a> and benchmark that against tilecache in the future. The OpenStreetMap tile server used to serve map tiles to <a href="http://www.openstreetmap.org" rel="nofollow">http://www.openstreetmap.org</a> doesn&#8217;t use TileCache at all. Instead, it uses a combination of a custom Apache module &#8211; mod_tile &#8211; handling path translations and a rendering daemon &#8211; renderd &#8211; handling both on-demand and background rendering in separate threads. It is described <a href="http://wiki.openstreetmap.org/index.php/Mod_tile" rel="nofollow">here</a>. It is supposed to be much, much more efficient than any possible TileCache setup &#8211; at least for an environment with a constant huge requirement for tile re-rendering such as the OpenStreetMap server.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven M. Ottens</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-18</link>
		<dc:creator>Steven M. Ottens</dc:creator>
		<pubDate>Tue, 18 Mar 2008 20:45:16 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-18</guid>
		<description>Hi Martijn,

I had a little chat on benchmarking on #openlayers and I got this url: http://patrick.blog.thus.ch/2008/03/06/perf-tests-around-tilecache-and-apache-caching/ which gives a quick view on the difference between the different options of TC and apache&#039;s own cache. This might be interesting to test as well. Anne benchmarked our apache mod_cache/mapserver setup once and he couldn&#039;t get the CPU or Disk choke before the 100MBit line was filled. So there is a bar to reach.

On the other hand tschaub did make this very true observation on irc:
&quot;I&#039;m surprised there&#039;s no discussion of off-lattice requests the whole point (in my mind) of something like tilecache is to be able to specify what the client can and can&#039;t ask for if you want to cache absolutely everything, then it is not surprising that there are faster methods&quot;

Since mod_cache will cache anything and cache pollution is a problem in EduGIS, maybe even more than cache management. You said that OSM did make some changes to increase the performance of TC or that they created their own version of TC. It might be interesting to test that as well. (sorry for the in-crowd name calling in this comment)</description>
		<content:encoded><![CDATA[<p>Hi Martijn,</p>
<p>I had a little chat on benchmarking on #openlayers and I got this url: <a href="http://patrick.blog.thus.ch/2008/03/06/perf-tests-around-tilecache-and-apache-caching/" rel="nofollow">http://patrick.blog.thus.ch/2008/03/06/perf-tests-around-tilecache-and-apache-caching/</a> which gives a quick view on the difference between the different options of TC and apache&#8217;s own cache. This might be interesting to test as well. Anne benchmarked our apache mod_cache/mapserver setup once and he couldn&#8217;t get the CPU or Disk choke before the 100MBit line was filled. So there is a bar to reach.</p>
<p>On the other hand tschaub did make this very true observation on irc:<br />
&#8220;I&#8217;m surprised there&#8217;s no discussion of off-lattice requests the whole point (in my mind) of something like tilecache is to be able to specify what the client can and can&#8217;t ask for if you want to cache absolutely everything, then it is not surprising that there are faster methods&#8221;</p>
<p>Since mod_cache will cache anything and cache pollution is a problem in EduGIS, maybe even more than cache management. You said that OSM did make some changes to increase the performance of TC or that they created their own version of TC. It might be interesting to test that as well. (sorry for the in-crowd name calling in this comment)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mvexel</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-17</link>
		<dc:creator>mvexel</dc:creator>
		<pubDate>Tue, 18 Mar 2008 17:43:11 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-17</guid>
		<description>Bart, thanks. I&#039;m still in a 0.4 mindset. Let&#039;s see how 0.5 and the OpenStreetMap tileserver toolchain fit together.</description>
		<content:encoded><![CDATA[<p>Bart, thanks. I&#8217;m still in a 0.4 mindset. Let&#8217;s see how 0.5 and the OpenStreetMap tileserver toolchain fit together.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bartvde</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-16</link>
		<dc:creator>bartvde</dc:creator>
		<pubDate>Tue, 18 Mar 2008 17:24:08 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-16</guid>
		<description>Martijn, Mapnik now has Windows binaries which makes it quite simple to setup.</description>
		<content:encoded><![CDATA[<p>Martijn, Mapnik now has Windows binaries which makes it quite simple to setup.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mvexel</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-15</link>
		<dc:creator>mvexel</dc:creator>
		<pubDate>Tue, 18 Mar 2008 14:17:07 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-15</guid>
		<description>Christopher, thanks for the suggestions. I&#039;ll be sure to take them into account when I take this benchmarking a step further. 

You&#039;re correct in assuming my benchmarks consist of just getting a single tile. It would be interesting to benchmark something closer to real life usage. I will script together a randomizer for the tile request. Interesting.

The layer used is the one that&#039;s there out of the box. I am very eager to test with a mapnik setup, because - as you well know - mapnik is used extensively in &lt;a href=&quot;http://www.openstreetmap.org/&quot; rel=&quot;nofollow&quot;&gt;OpenStreetMap&lt;/a&gt;, a project in which I am actively involved. What holds me back is setting up mapnik on Windows - that could be quite a challenge, but also an interesting topic for a future blog post :). Or does anyone know of a mapnik-on-windows setup guide?</description>
		<content:encoded><![CDATA[<p>Christopher, thanks for the suggestions. I&#8217;ll be sure to take them into account when I take this benchmarking a step further. </p>
<p>You&#8217;re correct in assuming my benchmarks consist of just getting a single tile. It would be interesting to benchmark something closer to real life usage. I will script together a randomizer for the tile request. Interesting.</p>
<p>The layer used is the one that&#8217;s there out of the box. I am very eager to test with a mapnik setup, because &#8211; as you well know &#8211; mapnik is used extensively in <a href="http://www.openstreetmap.org/" rel="nofollow">OpenStreetMap</a>, a project in which I am actively involved. What holds me back is setting up mapnik on Windows &#8211; that could be quite a challenge, but also an interesting topic for a future blog post <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Or does anyone know of a mapnik-on-windows setup guide?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christopher Schmidt</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-14</link>
		<dc:creator>Christopher Schmidt</dc:creator>
		<pubDate>Tue, 18 Mar 2008 12:54:58 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-14</guid>
		<description>Also note that although this is interesting, unless you&#039;re doing something with apachebench that I don&#039;t know how to do, you&#039;re likely not *really* testing much more than &quot;startup time&quot; comparisons. Any real life comparison needs to have a random selection of tiles: otherwise, you&#039;re always reading the same file on disk, and that probably means that you&#039;re reading it from memory cache, which means that you&#039;re not testing how fast TileCache will perform in the real world...

... But at the same time, there should be no difference in CGI/mod_python other than startup cost, so as a &#039;startup cost&#039;-o-meter for TileCache, these are valuable.

Another couple options to look into:
PythonAutoReload defaults to on, should probably be turned off for maximum optimization. PythonOptimize is off by default, should probably be on for maximum optimization. (Thanks to Howard Butler for these suggestions.)</description>
		<content:encoded><![CDATA[<p>Also note that although this is interesting, unless you&#8217;re doing something with apachebench that I don&#8217;t know how to do, you&#8217;re likely not *really* testing much more than &#8220;startup time&#8221; comparisons. Any real life comparison needs to have a random selection of tiles: otherwise, you&#8217;re always reading the same file on disk, and that probably means that you&#8217;re reading it from memory cache, which means that you&#8217;re not testing how fast TileCache will perform in the real world&#8230;</p>
<p>&#8230; But at the same time, there should be no difference in CGI/mod_python other than startup cost, so as a &#8217;startup cost&#8217;-o-meter for TileCache, these are valuable.</p>
<p>Another couple options to look into:<br />
PythonAutoReload defaults to on, should probably be turned off for maximum optimization. PythonOptimize is off by default, should probably be on for maximum optimization. (Thanks to Howard Butler for these suggestions.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mvexel</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-13</link>
		<dc:creator>mvexel</dc:creator>
		<pubDate>Tue, 18 Mar 2008 08:22:21 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-13</guid>
		<description>Steven: ab comes with a standard Windows Apache httpd installation as well, fortunately.

Arne: I think I described the steps well enough to be reproducable - if any thing specific is unclear, or lacking, I&#039;d be happy to elaborate.

Christopher: thanks for your analysis and suggestions! These are extremely useful and I will incorporate them in further benchmarking.</description>
		<content:encoded><![CDATA[<p>Steven: ab comes with a standard Windows Apache httpd installation as well, fortunately.</p>
<p>Arne: I think I described the steps well enough to be reproducable &#8211; if any thing specific is unclear, or lacking, I&#8217;d be happy to elaborate.</p>
<p>Christopher: thanks for your analysis and suggestions! These are extremely useful and I will incorporate them in further benchmarking.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven M. Ottens</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-12</link>
		<dc:creator>Steven M. Ottens</dc:creator>
		<pubDate>Tue, 18 Mar 2008 07:58:14 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-12</guid>
		<description>Do you know if ab works on windows, or if there&#039;s a similar application for windows, then we could use it to test a few tilecache setups we have running here. We could also do an endurance test on one of those servers.

Nice graphs BTW :P</description>
		<content:encoded><![CDATA[<p>Do you know if ab works on windows, or if there&#8217;s a similar application for windows, then we could use it to test a few tilecache setups we have running here. We could also do an endurance test on one of those servers.</p>
<p>Nice graphs BTW <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arne</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-11</link>
		<dc:creator>Arne</dc:creator>
		<pubDate>Tue, 18 Mar 2008 02:43:56 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-11</guid>
		<description>Could you post the steps you took to create these results, so that they&#039;re reproducible?</description>
		<content:encoded><![CDATA[<p>Could you post the steps you took to create these results, so that they&#8217;re reproducible?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christopher Schmidt</title>
		<link>http://oegeo.wordpress.com/2008/03/17/benchmarking-tilecache-part-1/#comment-10</link>
		<dc:creator>Christopher Schmidt</dc:creator>
		<pubDate>Tue, 18 Mar 2008 00:18:17 +0000</pubDate>
		<guid isPermaLink="false">http://oegeo.wordpress.com/?p=30#comment-10</guid>
		<description>These are extremely cool! One comment: I can&#039;t tell, but it looks like you might be fighting with some mod_python issues: The &#039;cliff&#039; looks like the difference between requests that are sent to apache children which have already loaded TileCache instances: Since TileCache caches the configuration information between requests to the same Apache children, I think that any time you have Apache children which haven&#039;t been used for TileCache, they&#039;ll be slower than others.

What was your n= on these? A higher n= might well smooth out some of the side effects of the mod_python cache.

Also, the CGI script startup time will be very specific to the number of levels in the config: More layers -&gt; slower. Since mod_python caches startup time, larger config files play a lower long-term affect on the performance.

Mapnik layers will also slow down your startup time. 

The most important thing for Apache is probably the MaxRequestsPerChild directive, which says how long TileCache config stuff will hang around before it has to be reparsed. A large number (or &#039;0&#039;, for infinity) will lead to longer living apache children: if your software has memory leaks, this is a problem, but it will improve performance.

Another interesting thing to do would be to also test a multi-threaded standalone server on localhost, and see if that works any better. I just checked in threaded support for the standalone http server (-t), and preliminary testing shows that when it works, it works great... but it seems to reliably crash after about 400 requests with c &gt; 10, so I guess that&#039;s not actually worth much :(</description>
		<content:encoded><![CDATA[<p>These are extremely cool! One comment: I can&#8217;t tell, but it looks like you might be fighting with some mod_python issues: The &#8216;cliff&#8217; looks like the difference between requests that are sent to apache children which have already loaded TileCache instances: Since TileCache caches the configuration information between requests to the same Apache children, I think that any time you have Apache children which haven&#8217;t been used for TileCache, they&#8217;ll be slower than others.</p>
<p>What was your n= on these? A higher n= might well smooth out some of the side effects of the mod_python cache.</p>
<p>Also, the CGI script startup time will be very specific to the number of levels in the config: More layers -&gt; slower. Since mod_python caches startup time, larger config files play a lower long-term affect on the performance.</p>
<p>Mapnik layers will also slow down your startup time. </p>
<p>The most important thing for Apache is probably the MaxRequestsPerChild directive, which says how long TileCache config stuff will hang around before it has to be reparsed. A large number (or &#8216;0&#8242;, for infinity) will lead to longer living apache children: if your software has memory leaks, this is a problem, but it will improve performance.</p>
<p>Another interesting thing to do would be to also test a multi-threaded standalone server on localhost, and see if that works any better. I just checked in threaded support for the standalone http server (-t), and preliminary testing shows that when it works, it works great&#8230; but it seems to reliably crash after about 400 requests with c &gt; 10, so I guess that&#8217;s not actually worth much <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
