[mkgmap-dev] max-jobs patch
From Henning Scholland osm at hscholland.de on Thu Feb 8 08:56:56 GMT 2018
Hi Gerd, Maybe my map is somehow special, but mkgmap definitely need more than 1gb heap per job. I will check on the weekend. Can you please post a patched mkgmap.jar? How about doing it the other way round and suggest the user to use max-job option if mkgmap think it is useful? Henning On 8 Feb 2018, 16:38, at 16:38, Gerd Petermann <gpetermann_muenchen at hotmail.com> wrote: >Hi Manfred, > >thanks for testing. Just to make this clear: I always use --max-jobs, >because I also >always use -Xmx whenever I compile many tiles. > >In this case a large tile is one that results in a large *.img >(one with many MB). Typically this depends on the --max-nodes option >for splitter >and the style and the mkgmap options (routable or not, without or >without DEM etc). > >The max-jobs option allows to specify the number of parallel jobs, >e.g. --max-jobs=5 would start 5 parallel jobs (threads). Whenever one >input file is done, >the next one is started until all are finished. The patch only changes >the default from 1 >to "number of cores". You can also use max-jobs=10 on a 2-core cpu, but >this will slow down >the run time. > >What I tried to point out is that a user who doesn't know about the >--max--jobs option >might as well not know about the meaning of the -Xmx JRE option. > >What happens if you start mkgmap on an 8-core machine with max-jobs=8 >and >without -Xmx option? I think it will crash, and with the 2nd version of >the patch it will tell >the user to look at the -Xmx option. So far so good. >What happens on a 4 core machine with max-jobs=4 and no -Xmx option? >What if the OS is 32 bit only? This would not allow much more than >-Xmx1700m. >What if the option is used but set to a rather low value, e.g. >-Xmx=1000m? > >My current thinking is this: >If --max-jobs is not specified mkgmap should check the number of cores >and the available heap >and assume that one thread needs ~500M. > >So, I would use something like num = >Math.min(Runtime.getRuntime().maxMemory() / (512 * 1024 * 1024), >Runtime.getRuntime().availableProcessors()) as default, maybe also for >the case that one >specifies --max-jobs . > >How does that sound? > >Gerd > > > > > > >________________________________________ >Von: mkgmap-dev <mkgmap-dev-bounces at lists.mkgmap.org.uk> im Auftrag von >Manfred Haiduk <mhaiduk at t-online.de> >Gesendet: Mittwoch, 7. Februar 2018 22:28 >An: mkgmap-dev at lists.mkgmap.org.uk >Betreff: Re: [mkgmap-dev] max-jobs patch > >I don't know, if Nordrhein-Westfalen is that kind of large tiles you >meant. Splitter ended up with 43 files and i tried to make mapsource >maps with and without --max-jobs option and mkgmap r4000. My computer >does the job with 43 files about 12minutes faster than without this >option. My laptop is a core i5 with 8Gb of memory. The command i use is >like this line : > >java -Xmx7500m -XX:-UseGCOverheadLimit -ea -jar >-Dlog.config=logging.properties >C:\PROGRA~2\KartenTools\mkgmap\mkgmap.jar >--location-autofill=is_in,nearest --mapname=70060001 --family-id=7006 >.\styles\mystyle.txt --series-name="STYLE TEST" >--family-name="OpenStreetmap" --country-name=STYLETEST >--country-abbr=STY --area-name=STY --overview-mapname="overview" >--latin1 --style-file=.\styles --style=myland --max-jobs --keep-going >--check-roundabouts --drive-on=detect,right --output-dir=.\out\MYSTYLE >--index --bounds=mybounds --route >--name-tag-list=name,place_name,loc_name --housenumbers >--x-split-name-index --add-pois-to-areas --precomp-sea=.\input\sea.zip >--tdbfile --draw-priority=10 --gmapsupp -c .\data\MYSTYLE\template.args >--description=MYSTYLE --remove-ovm-work-files=true > >Hope this gave you some useful hints > > >Am 07.02.2018 um 20:06 schrieb Gerd Petermann: >> Hi Mike, >> >> I did not yet try it. My understanding is that the Garbage Collection >will try hard >> to avoid an out of heap exception. In other words: A user might see >better throughput >> with fewer parallel jobs. What are your experiences? Did you try with >> large maps, say > 40 large tiles ? >> >> Gerd >> >> ________________________________________ >> Von: mkgmap-dev <mkgmap-dev-bounces at lists.mkgmap.org.uk> im Auftrag >von Mike Baggaley <mike at tvage.co.uk> >> Gesendet: Mittwoch, 7. Februar 2018 01:58 >> An: 'Development list for mkgmap' >> Betreff: Re: [mkgmap-dev] max-jobs patch >> >> Hi Gerd, please find attached v2 of the max-jobs patch. >> >> This version additionally catches out of heap memory exceptions and >displays >> a message suggesting either the use of the Java -Xmx option to >increase the >> available heap memory or the mkgmap --max-jobs option with a smaller >value >> to reduce the memory requirement (the latter is suggested only if >using more >> than one thread). >> >> How does that seem? >> Regards, >> Mike >> >> -----Original Message----- >> From: Gerd Petermann [mailto:gpetermann_muenchen at hotmail.com] >> Sent: 05 February 2018 07:28 >> To: Mike Baggaley <mike at tvage.co.uk>; 'Development list for mkgmap' >> <mkgmap-dev at lists.mkgmap.org.uk> >> Subject: Re: [mkgmap-dev] max-jobs patch >> >> Hi Mike, >> >> thought about this again. Maybe this change is too simple. With >multiple >> jobs one also >> needs more heap (-Xmx JRE option). If you create rather large tiles >with >> splitter (max-nodes=1600000) >> you need 0.5 - 1 GB for each job. Not sure what happens when a user >creates >> a map with >> 10 tiles on an 8-core machine without any -Xmx option. >> >> I fear this will result in OutOfMemory exception, so better check the >> available heap as well. >> >> Gerd >> >> ________________________________________ >> Von: mkgmap-dev <mkgmap-dev-bounces at lists.mkgmap.org.uk> im Auftrag >von Mike >> Baggaley <mike at tvage.co.uk> >> Gesendet: Sonntag, 4. Februar 2018 15:14 >> An: 'Development list for mkgmap' >> Betreff: [mkgmap-dev] max-jobs patch >> >> Hi Gerd, >> >> Please find attached a patch that amends the default behaviour if the >> --max-jobs option is not specified, to using a value equal to the >number of >> CPU cores, as suggested in a previous post. The documentation is also >> amended to reflect the change. This halves the execution time of >mkgmap for >> building a map of Staffordshire on my 8-core PC when --max-jobs is >not >> specified (I didn't know about this option previously and was unaware >the >> performance could have been improved). >> >> Cheers, >> Mike >> >> _______________________________________________ >> mkgmap-dev mailing list >> mkgmap-dev at lists.mkgmap.org.uk >> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev >> >-- > > Mit freundlichen Grüßen > >##################################################### >Manfred Haiduk, >Zum Fischbach 9, >52393 Hürtgenwald >e-mail mhaiduk at t-online.de >##################################################### > >_______________________________________________ >mkgmap-dev mailing list >mkgmap-dev at lists.mkgmap.org.uk >http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev >_______________________________________________ >mkgmap-dev mailing list >mkgmap-dev at lists.mkgmap.org.uk >http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20180208/773dd412/attachment.html>
- Previous message: [mkgmap-dev] max-jobs patch
- Next message: [mkgmap-dev] max-jobs patch
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list