= !MapGuide RFC 90 - Meta Tiling Support = This page contains an change request (RFC) for the !MapGuide Open Source project. More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. == Status == ||RFC Template Version||(1.0)|| ||Submission Date||(Date/Time submitted)|| ||Last Modified|| Uv Nov 4 2010|| ||Author||Zac Spitzer, Uv || ||RFC Status||(draft)|| ||Implementation Status||(testing sandbox)|| ||Proposed Milestone||(2.2)|| ||Assigned PSC guide(s)||(when determined)|| ||'''Voting History'''||(vote date)|| ||no vote|| || == Overview == Add support internally to the MapGuide Server Engine to map tile requests to larger meta tiles and then slice them up into the standard tile sizes. == Motivation == With complex maps, it's more efficient to render one large tile than many small ones. In our particular case rendering time for the full map takes up to a week! However, there is little or no benefit for simple maps like the Sheboygan Sample making testing a bit tedious. Using our 140 layer example map we can observe the following timing using metatile factor 1 & 4 and 3 different locking strategies in the chart below. Unfortunately, the used hardware was not powerful enough to clearly differentiate the effect of the different locking schemes. However, it clearly shows the speedup by using metatiles as such. [[Image(MetatilingChart1.jpg)]] == Proposed Solution == Add a meta tile factor to the tile service, which then will render larger tiles enlarged by the provided factor. to be sliced up into the smaller tiles which then get served to clients. e.g. {{{ Client -> GetTile(0,1) -> RenderMetaTile(0,0 - 1,1) -> SplitUp -> ReturnTile (0,1) -> GetTile(1,1) -> wait................................... ReturnTile (1,1) }}} == Issues == Locking the threads to the implicit producer consumer scheme is complex and the file locking seems not very efficient. To improve polling delay the Polling configuration value has been changed to ms semantics so we can specify 500ms. In addition an ace_condition has been implemented to get rid of the lockfiles all together and further improve the response time. (LockMethod == 3) In addition to the standard approach with one lock per sub tile (LockMethod == 2) we also experimented using a single file per metatile (LockMethod == 1). == Implications == For example when using a meta tiling factor of 4, 15 tiles will wait while the meta tile is rendered and sliced up. A most efficient locking scheme will have significant effect on this behaviour. == Test Plan == The output of a tile map request has to be identical whether served with meta tiling enabled or without. == Funding/Resources == TBD == Sandbox == http://trac.osgeo.org/mapguide/browser/sandbox/rfc90