[mkgmap-dev] New splitter version, big memory savings
From Lambertus osm at na1400.info on Thu Sep 3 13:38:01 BST 2009
Oh, this is so awesome Chris! Just awesome!! Chris Miller wrote: > I've just checked in a new version of the splitter (r84) that requires far > less memory and also performs slightly better during the first stage of the > split. As an example, it used to take about a 5GB heap to generate areas.list > for the whole planet, but now only takes around 300MB(!). An additional advantage > is that as the planet grows in size and complexity going forwards, the memory > required during the first stage will not increase. > > This change should finally mean that anyone is able to split the planet even > on a relatively low end machine (though be prepared for a long wait!). If > you try but run out of memory during the second stage of the split (ie after > areas.list has been generated), reduce the value of --max-areas. This will > reduce the memory required during that second stage, at the cost of additional > passes over the data (if you do require multiple passes then I highly recommend > you also use the --cache option, it can make a huge difference to performance). > > One possible downside to this new version is the algorithm that decides how > to split up the map has been changed somewhat. This results in slightly different > tile layouts compared to the old algorithm. This shouldn't be too noticable > unless perhaps it puts a tile boundary right through somewhere you care about > when the old algorithm didn't. Of course, it may also work in your favour > for the same reason! My experiments have shown the number of tiles generated > increases by about 2% with the new approach which I think is a small price > to pay for the huge memory saving. > > I've put some example kml files online here that show the before and after > effects of the change: > > UK --max-nodes=1600000 > old splitter: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Fuk-original.kml&z=3 > new splitter: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Fuk-density.kml&z=3 > > Europe --max-nodes=1600000 > old: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Feurope-original.kml&z=3 > new: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Feurope-density.kml&z=3 > > Europe --max-nodes=300000 > old: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Feurope-300k-original.kml&z=3 > new: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Feurope-300k-density.kml&z=3 > > Planet --max-nodes=1600000 > old: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Fplanet-original.kml&z=3 > new: http://maps.google.co.uk/maps?q=http:%2F%2Fredyeti.net%2Fosm%2Fplanet-density.kml&z=3 > > > If you aren't happy with the new tiles, or simply want to compare the new > with the old, there's a parameter --legacy-mode=true that will generate areas.list > using the old approach. Assuming there aren't any serious problems that come > to light I'll be removing that parameter in a future build. > > > Where to from here? As some of you may have guessed, this new splitter is > based on a 'density map' as discussed in earlier mails. Currently it maps > the density of nodes only, and the generated map is only held in memory long > enough to calculate the tile boundaries. I indend to write this map out to > disk so it can be used by external tools, or reused on successive runs of > the splitter to allow extremely quick generation of areas.list with different > --max-nodes settings. After that I hope to tackle the quite difficult problem > (in terms of performance and memory overhead) of generating density maps > for ways and relations too. Once we have density maps for all three element > types it will hopefully be possible to generate tiles that are as big as > possible but still avoid giving 'Map to big' messages. Another related area > I'm starting to look at is new/improved algorithms for arranging the tiles > so they eg avoid putting boundaries through the middle of cities, or reduce > the overall number of tiles. Any ideas here would be appreciated. > > Enjoy! > Chris > > > > _______________________________________________ > mkgmap-dev mailing list > mkgmap-dev at lists.mkgmap.org.uk > http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
- Previous message: [mkgmap-dev] New splitter version, big memory savings
- Next message: [mkgmap-dev] New splitter version, big memory savings
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list