[Routing] Gosmore test results
Lambertus
osm at na1400.info
Sun Oct 12 15:40:48 BST 2008
Nic Roets wrote:
> The bottleneck with gosmore routing a.t.m. is that hashing business.
> Sometimes it allocates way too much memory, resulting in "thrashing" and
> cache misses. I always guessed that the only way to get rid of of the
> hashing, would be to have like 20GB of RAM.
>
> But after this thread, I invented a new way of doing it that uses a more
> dynamic way of memory allocation.
>
> So I implemented it, but could not see any difference with the 26MB South
> African gosmore.pak file. If someone (Lambertus) wants to try it out on a
> larger .pak file, here are some pointers :
> * Check out of SVN
> * make CFLAGS="-O2 -DROUTE_SRV"
> * On 32 bit machines it will only work with smaller .pak files, say smaller
> than 500MB. 64 bit machines should have no limit and may just be able to
> route from NY to LA in a reasonable time.
> * Potentially needing a lot of free disk space. See tmpfile()
>
It took a while to rebuild the Gosmore databases with last Wednesdays
planet file, but I've done some tests now. The Gosmore instance with new
compiler option is available 'behind' the test layer on
yournavigation.org. The older Gosmore is available behind the other layers.
Philadelphia to Boston using test layer returns no route. Looking closer
reveals that Gosmore needs at least 10 minutes (after which I killed it)
and all the available RAM (I've seen it using 2.6 GB).
The older Gosmore needs 35 seconds the first run and around 18 seconds
for consecutive runs. This has probably something to do with the limited
RAM (3 GB) and the big Gosmore database files (4.7 GB for America,
2.1 GB for the rest). Having a machine with at least 8 GB RAM would
cause the first run to be as fast as the consecutive ones as well).
Unfortunately this test doesn't tell us anything about the speed
difference between both engine versions, so another test.
New York to Boston uses 9.3 seconds using the test version (6.5 on
consecutive runs) and 8.3 using the older one (7.2 on consecutive runs).
New York to Los Angeles can't be calculated using the older Gosmore
version (Gosmore returns JUMP and a partial route). This is a strange
behavior that I've seen before: Gosmore can't calculate a whole route
but if you manually divide the route in shorter sections then there's no
problem at all, so it's not a data error.
The test Gosmore version keeps calculating and slowly eating all the ram:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18568 lambertu 26 10 21.0g 2.6g 2.6g D 0.7 89.8 1:23.17 gosmore
The performance is almost completely disk-bound with this new version
(confirmed by munin). After running for an hour or so I killed it.
Conclusion: In some cases it might help a bit, but for now the older
Gosmore is a more stable performer. Then there's also the issue with
extra long routes where Gosmore seems to give up.
More information about the Routing
mailing list