Benchmarking 2010

From OSGeo Wiki

Jump to: navigation, search

Contents

Basic Premise

Following up on last year's exercise, the performance shoot-out presentation at FOSS4G2010 will test how long each Web mapping server takes to generate a map image, from a common set of spatial data, on a common platform. The data will be served by each Web mapping server through the WMS standard, which will serve exactly the same set of LAYERS. A JMeter load will be run on the testing box to measure various aspects of those layers.

Participants

Mapping Server Development Team Leader IRC nick Server status
Cadcorp GeognoSIS Martin Daly mpdaly Production release of server installed with preliminary configuration for SHP, PostGIS, TIF and ECW
Constellation-SDI Adrian Custer Cédric Briançon acuster cedricbr Running on port 8280. Installation done for Shapefiles and Rasters.
Erdas Apollo Dimitri Monie dmonie Install and configuration on-going on windows server, ecw WMS configuration done, shape and DB WMS configuration on going. Port 80, port 8080
GeoServer Andrea Aime aaime Normally running on port 8080 on the Linux server. Shapefiles and TIFF mosaic have been configured.
MapGuide Open Source Zac Spitzer zacspitzer inactive
Mapnik Dane Springmeyer springmeyer Paleoserver is running on port 8090(shape) / 8091(postgis) / 8092(raster - no reprojection). (mod_mapnik_wms is an alternate being tested, will run on same ports if active).
MapServer Jeff McKenna jmckenna linux_wms_bm serving WMS requests for shps, on port 8081. windows wms_bm serving requests for shps, on port 8081.
Oracle MapViewer Michael Smith msmith_ Set up on port 8088
QGIS mapserver Marco Hugentobler marco___ Set up on port 8081 (Linux server). Shapefiles and TIF (without reprojection) configured

Timeline

January 1st, 2010 begin contacting all mapping servers
June 1st, 2010 commitment due by all interested mapping servers
June 2nd, 2010 exercise begins (and weekly meetings)
August 1st, 2010 final testing begins
August 23rd, 2010 no further testing
September 6-9, 2010 present results at FOSS4G2010

Rules of Engagement

  1. All parties must contribute any changes that they make to their software for this exercise, back to their community. Note that the changes don't have to be contributed before the conference, just in a reasonable period of time.
  2. Comparisons will be made of the best available version of the software, be it a formal release or a development version.
  3. Two tests will be run: one 'baseline' test with the data in its raw format (with spatial indexes), and another 'best effort' test where 'the sky is the limit' for what changes you want to make to the data (change format, generalize, etc)
  4. Teams must document all steps they did to manipulate the data/server for both the 'baseline' and 'best effort' tests. If a team does not document the steps on this wiki then that team's test results will not be used.
  5. Data formats to be used will be shapefiles for vectors, and uncompressed geotiffs for rasters.
  6. WMS output formats to be used will be png8 and png24 where possible


Documenting Server Details and Differences

It is the responsibility of each team to document their setup with regard to data.

Please keep your notes in your servers directory in svn: http://svn.osgeo.org/osgeo/foss4g/benchmarking/

One particular thing that will differ is each team's use of spatial indexes on shapefiles.

Teams are not allowed to modify the .shp, .shx, .dbf or .prj files of the vector data (for the baseline benchmark). They can, however, create auxiliary files for spatial indexes and the like.

Mapping Server ext type command to create
MapServer .qix quadtree shptree <shpfile> (shptree notes)
GeoServer .qix quadtree Using the ones generated for MapServer atm
Mapnik .index quadtree shapeindex <shpfile> (Benchmarking_2010/Mapnik_notes#shpindex_depth)
Erdas .rtr RTree RTreeBuilder basedir shapename max min (RTreeBuilder notes)
Cadcorp *.shp.idx RTree GUI command in desktop SIS (Benchmarking_2010/Cadcorp_notes)
Constellation-SDI .qix quadtree Using the ones generated by MapServer
MapViewer .oix RTree GUI option in MapBuilder.jar, java map/theme/style builder
  • Note: in your server setup documentation be sure to record the EXACT command used to create the indexes, with appropriate options passed (e.g depth)

Datasets

A set of data published by the spanish National Mapping Agency will be used. This data is free for non-commercial use, so it's perfectly OK to use it in the benchmark.

Vector data will be a topographic map, composed of several shapefiles (one shapefile per theme). Raster data will be 50cm/px aerial photography.

We still do not have the definitive datasets, due to their size and the processing time needed to put them together. You can get some sample data by reading Benchmarking 2010/How to get some sample data.

SVN

The project files (minus data) are stored in Subversion (http://svn.osgeo.org/osgeo/foss4g/benchmarking/).

Hardware

Machine A (windows server)

  • System Type: Dell PowerEdge R410
  • Ship Date: 7/7/2010
  • Processor: Intel® Xeon® E5630 2.53Ghz, 12M Cache,Turbo, HT, 1066MHz Max Mem
  • 8GB Memory (4x2GB), 1333MHz Dual Ranked RDIMMs for 1Processor, Optimized
  • 2TB 7.2K RPM SATA
  • OS: Windows Server 64bit

Machine B (linux server)

  • System Type: Dell PowerEdge R410
  • Ship Date: 7/7/2010
  • Processor: Intel® Xeon® E5630 2.53Ghz, 12M Cache,Turbo, HT, 1066MHz Max Mem
  • 8GB Memory (4x2GB), 1333MHz Dual Ranked RDIMMs for 1Processor, Optimized
  • 2TB 7.2K RPM SATA
  • OS: Centos 5.5 x86-64

Machine C (DB Host)

  • System Type: Gateway E6610D
  • Processor, Intel Core2 Duo - E6750 2.66 Ghz
  • 4Gb Ram
  • 250Gb Hard Drive 7200 rpm
  • OS: Centos 5.5 x86-64

Machine D (testing server (JMeter))

  • System Type: Dell Precision Workstation 390
  • Ship Date: 9/7/2006
  • Processor, 6300, 1.86, 2M, Core Duo-conroe, Burn 2
  • 2Gb RAM
  • 160 Gb Hard drive 7200 rpm
  • Service Tag: 5Q5LQB1
  • OS: Centos 5.5 i386

Communication

Coordination/communication is primarily via the Benchmarking mailing list: http://lists.osgeo.org/mailman/listinfo/benchmarking

Weekly meetings will occur through IRC chat in the #foss4g channel on irc.freenode.net

Next IRC meeting

  • Wed August 18th @ 15:00:00 UTC
    • Provisional Agenda:
      • baseline test styling equivalence: are we there yet?
      • starting and stopping all servers
      • slotting times for each team to run benchmarks
      • cleaning up the rendering benchmark blank tiles
      • graphic access to the JMeter machine
      • last testing date

Previous IRC meeting

  • Wed August 11th @ 15:00:00 UTC
    • Provisional Agenda:
      • Jmeter testing
        • what output formats will be requested?
        • what projections will be requested? (Platte-carré is not conformal)
        • what layer combinations will be requested? (All vector layers or various mixed subsets?)
        • what envelopes will be issued? (Frank's 2009 query generation script forces a hard cutoff at the largest scale)
        • what output metrics will be created?
        • how will the jmx file be designed? (need one .csv file per thread so all requests are different)
      • Status report from each team
      • Testing deadline: shall we extend it?
      • Can all server provide links to the sample requests and allow to build more? (style comparison, are we all doing the same work?)
      • Vector data
        • Changes in rendering (missing values for some attributes)
        • Gaps: what to do with the 9 missing sheets?
    • Summary: log
  • Wed August 4th @ 15:00:00 UTC
    • Provisional Agenda:
      • Machine status / issues
      • Data status / issues
        • Characters mis-encoded in shapefiles (e.g. catalan in labels): fixable? impact on PostGIS database?
        • Raster conversion to GeoTIFF (torrent of results?)
      • Styles status / issues
      • Jmeter testing
        • what output formats will be requested?
        • what projections will be requested? (Platte-carré is not conformal)
        • what layer combinations will be requested? (All vector layers or various mixed subset?)
        • what envelopes will be issued? (Frank's 2009 query generation script forces a hard cutoff at the largest scale)
        • what output metrics will be created?
        • how will the jmx file be designed? (need one .csv file per thread so all requests are different)
    • Summary: Benchmarking 2010 IRC meeting logs Aug 4th
  • Wed July 28th

(no info)

  • Wed July 21st @ 15:00:00 UTC
    • Agenda:
      • update on data processing for all of Spain
      • update on server setup
      • update on data styling
      • checkin on server installs / library dependencies
  • Wed July 14th @ 15:00:00 UTC
    • Agenda:
      • update on data processing for all of Spain
      • update on server setup
      • data styling discussions
        • scales to use for layers
        • missing full road network
        • layer to use for labels along lines
    • Summary: (log)
      • Attendance:
        • Jeff McKenna (jmckenna)
        • Andrea Aime (aaime)
        • Iván Sánchez (IvanSanchez)
        • Michael Smith (msmith_)
        • Dimitri Monie (dmonie)
        • Dane Springmeyer (springmeyer)
      • Discussion:
        • data:
          • full dataset of Spain, vector and raster, has been processed by IvanSanchez, and he is checking it and will create a torrent for transfer, by the end of the week
          • because of shapefile size limit some layers may have to be split (contour-1.shp, contour-2.shp)
        • servers:
          • msmith has received both server machines
          • T1 router is being installed, it will be a dedicated line for this project
          • he is adding 2 TB drives to each
        • layer styling:
          • we notice that the Spain dataset we are using (BCN25) does not include street files (zoomed in road network)
          • we agreed to use contours for curved label tests instead
          • jmckenna will test the layer scales provided by Marco (QGIS mapserver)
          • aaime pointed out problem with the posted SLDs, in terms of the label property (jmckenna to look into it)
          • aaime pointed out that we should make sure that all servers compute the scales the same way
            • OGC recommends 90 DPI (GeoServer, Mapnik use the recommended 90...MapServer defaults to 72, but should be configurable)
            • all teams should look into how their engine handles this and report to group
        • other:
          • IvanSanchez reported that a Spanish custom-made WMS server may join the exercise (they access raster files only)
          • dmonie pointed out that Erdas has been quiet lately because one of the team leaders is on holiday
  • Wed June 23rd @ 15:00:00 UTC
    • Agenda:
      • update on proposed layer styling
      • update on available server specs
    • Summary: (log)
  • Wed June 16th @ 15:00:00 UTC
    • Agenda:
    • Summary: (log)
      • Attendance:
        • Jeff McKenna (jmckenna)
        • Andrea Aime (aaime)
        • Iván Sánchez (IvanSanchez)
        • Michael Smith (msmith_)
        • Cédric Briançon (cedricbr)
      • Discussion:
        • "base" run will use only shapefiles, "best" run will be any format (raster/vector)
        • teams can optionally test Oracle, PostGIS, Ingres connections during the "best" run
        • layers tested will be: labelled roads (with labels that follow the lines), thematic polygon map, and a test with labelled roads + thematic polygon + point layer in a single request (3 separate runs)
          • msmith and jmckenna to examine styling for one sheet (Barcelona, sheet# 420)
        • each base and best run will test data in raw projection (ETRS89 + UTM28/29/30/31) and then reprojected on-the-fly to the Google Mercator projection
        • threads (number of concurrent requests) will be: 1-2-4-8-16-32-64
        • US Army Corps is proposing to provide 4 desktop machines. 2 identical for testing ( win/lin ) and 1 for jmeter and 1 for databases
          • msmith will find out availability of 2-cpu machines this week
  • Wed June 2nd @ 15:00:00 UTC
    • Agenda:
      • team representative introductions
      • Establish this year's 'Rules of Engagement' (previous RoE)
      • Discuss dataset to be used (including how to share the large dataset, for running local tests)
      • Discuss server infrastructure
      • Discuss possible changes to the test script parameters
      • Set next meeting date
    • Summary: (log)
      • Attendance:
        • Jeff McKenna, MapServer (jmckenna)
        • Cédric Briançon - Constellation (cedricbr)
        • Michael Smith - Oracle Mapviewer and Oracle connections in MapServer (msmith_)
        • Zac Spitzer - MapGuide (zacspitzer)
        • Martin Daly - Cadcorp (mpdaly)
        • Anne-Sophie Collignon - ERDAS (ascollignon)
        • Marco Hugentobler - QGIS mapserver (marco___)
        • Andrea Aime - GeoServer (aaime)
        • Dimitri Monie - ERDAS (dmonie)
        • Frank Warmerdam - MapServer, possibly Ingres as well (FrankW)
        • Iván Sánchez - provide geodata from Spanish sources and help out Mapnik (IvanSanchez)
        • Dane Springmeyer - Mapnik (springmeyer)
        • Johann Sorel - GeotoolKit / Constellation (Eclesia)
        • Adrian Custer - Constellation (acuster)
        • Pirmin Kalberer - QGIS mapserver (pirmin_k)
        • Trevor Wekel - MapGuide (trevorw)
        • Daniel Morissette - MapServer (danmo)
      • Discussion:
        • All agreed to this year's "Rules of Engagement"
          • All parties must contribute any changes that they make to their software for this exercise, back to their community. Note that the changes don't have to be contributed before the conference, just in a reasonable period of time.
          • Comparisons will be made of the best available version of the software, be it a formal release or a development version.
          • Two tests will be run: one 'baseline' test with the data in its raw format (with spatial indexes), and another 'best effort' test where 'the sky is the limit' for what changes you want to make to the data (change format, generalize, etc)
          • Teams must document all steps they did to manipulate the data/server for both the 'baseline' and 'best effort' tests. If a team does not document the steps on this wiki then that team's test results will not be used.
          • Data formats to be used will be shapefiles for vectors, and uncompressed geotiffs for rasters.
          • WMS output formats to be used will be png8 and png24 where possible
        • Dataset
          • Iván Sánchez Ortega from OSGeo-es is willing to provide local Spain datasets
          • data is for non-commercial use only
          • 10 GB of shapefiles
          • 100 GB of uncompressed rasters
        • Server infrastructure
          • possible hosts are msmith (US Army Corps) or Skygone (http://www.skygoneinc.com/)
          • need two identical servers, one running Unix and another Windows, plus a client machine
          • specs could be: quad core, 8GB of memory, 1TB hard drive
          • need fast pipe to server, as large datasets will be transferred
        • Next meeting date
          • all agreed to use same day and time next week, but limit the meeting length to one hour

Sample Dataset Styling

Mapping Server GetMap SLD
MapServer all layers --
settlement settlement-sld.xml
building building-sld.xml
industry industry-sld.xml
contour lines contour-sld.xml
motorway motorway-sld.xml
road road-sld.xml
ramp ramp-sld.xml
track track-sld.xml
point labels with geometry point-geom-sld.xml
point labels without geometry point-nogeom-sld.xml


Scale dependent rules checking requests

These requests show the behavior of scale dependent styling around the critical scales. The geographic area requested is always the same:

BBOX=0.58671954345704,40.73922127533,0.64684991455078,40.773670967102

The image size changes instead to alter the scale:

  • roughly 1:29k: WIDTH=824&HEIGHT=472
  • roughly 1:31k: WIDTH=771&HEIGHT=442
  • roughly 1:49k: WIDTH=488&HEIGHT=280
  • roughly 1.51k: WIDTH=469&HEIGHT=269

The table allows to compare the various servers output. The GeoServer links use a vendor option to get the actual scale, as computed by the server, displayed at the bottom/right of the map.

Server 1:29k 1:31k 1:49k 1:51k
Constellation-SDI 1:29k 1:31k 1:49k 1:51k
GeoServer 1:29k 1:31k 1:49k 1:51k
Mapnik 1:29k 1:31k 1:49k 1:51k
MapServer 1:29k 1:31k 1:49k 1:51k
MapViewer 1:29k 1:31k 1:49k 1:51k
GeognoSIS 1:29k 1:31k 1:49k 1:51k
QGIS mapserver 1:29k 1:31k 1:49k 1:51k
ERDAS APOLLO 1:29k 1:31k 1:49k 1:51k

Benchmarking setup

Tests are going to be run using JMeter, using a progression of 1, 2, 4, 8, 16, 32, and 64 threads, each thread group doing 100, 200, 200, 400, 400, 800 requests respectively, for a total of 2200 requests. The requests bounds and sizes are going to be picked up from a csv file generated by a random generator script.

The scripts to be run for the baseline tests, and repeated for the best effort one, are:

  • raster data, JPEG output, EPSG:25831, scales between 1:1M and 1:10k
  • raster data, JPEG output, EPSG:3857, scales between 1:1M and 1:10k
  • vector data, PNG24 output, EPSG:4326, scales between 1:300k and 1:1k
  • vector data, PNG24 output, EPSG:3875, scales between 1:300k and 1:1k
  • raster + vector, JPEG output, EPSG:25831, scales between 1:300k and 1:1k
  • raster + vector, JPEG output, EPSG:3785, scales between 1:300k and 1:1k

The areas to be tested are:

  • 6 E, 38 N, -1 E, 43 N for vector tests
  • 372360,4557880,484490,4631460 for raster tests

The raster layer in the baseline test is going to be the mosaic of GeoTIFF files Frank prepared out of the ECW files on the Linux server.

The vector data set is composed of a stack of individual layers to be stacked in the following order (bottom to top):

  • settlements
  • contour-0
  • contour-1
  • contour-2
  • contour-3
  • contour-4
  • contour-5
  • contour-6
  • contour-7
  • building
  • industry
  • track
  • ramp
  • road
  • motorway
  • point-labels-for-geometry
  • point-labels-no-geometry

The best effort will use its own custom set of layers (e.g., it's likely contours will be merged into one, and so on)

Live Benchmark WMS GetMap Requests

Note: sample bbox's fixed on Aug 12 to fit the proper aspect ratio of an 800/600 image request (springmeyer). Previous bbox for barcelona request was '1.8,41,2.4,42', new one used below is: '1.43333333333,41.0,2.76666666667,42.0'. Previous request for focused view was '2.1076723642349,41.407828508849,2.1178733654021,41.414271246429', new one is '2.10767236423,41.4072245022,2.1178733654,41.4148752531'. This was done to sidestep a deficiency in mapnik for affine transformation of geometries according to the WMS spec when the image w/h aspect does not match the bbox aspect, but was agreed upon as useful for these demo links by jeff and andrea in IRC.

MapServer

GeoServer

Mapnik

Constellation-SDI

Oracle MapViewer

Cadcorp GeognoSIS

QGIS mapserver

ERDAS APOLLO

Windows 64bit Server

Starting and stopping the various servers

  • GeoServer on the Linux box:
    • cd /benchmarking/geoserver
    • starting: /benchmarking/geoserver/start_geoserver.sh
    • stopping gracefully: /benchmarking/geoserver/stop_geoserver.sh
    • check it's really dead: ps aux | grep GEOSERVER . If it hasn't stopped gracefully use kill -9 <pid> to terminate the process
  • MapServer and QGIS Mapserver on the Linux box (both are running in the same Apache instance):
    • starting: /opt/mapserver/bin/apachectl start
    • stopping: /opt/mapserver/bin/apachectl stop
  • MapServer on Windows box:
    • Command prompt (right-click "Run as Administrator")
    • cd \ms4w
    • apache-stop.bat
    • apache-start.bat
  • Mapnik:
    • paleoserver (standalone daemon):
      • stopping: /opt/mapnik/paleoserver_stop.sh
      • starting: /opt/mapnik/paleoserver_start.sh
    • mod_mapnik_wms (runs within apache):
    • starting: /opt/mapnik/mod_mapnik_start.sh
    • stopping: /opt/mapnik/mod_mapnik_stop.sh
  • Mapviewer:
    • cd /benchmarking/mapviewer
    • starting: /opt/mapviewer/start_mv.sh
    • stopping: /opt/mapviewer/stop_mv.sh
    • check it's really dead: ps aux | grep java | grep mapviewer . If it hasn't stopped gracefully use kill -9 <pid> to terminate the process
  • Cadcorp GeognoSIS
    • 7.0
      • Command line (with "Run as Administrator")
        • starting: net start geognosis-70
        • stopping: net stop geognosis-70
      • Or use services.msc, service name geognosis-70
    • 7.1
      • Same as 7.0, but with "-71" suffix
  • Erdas Windows Server
    • APOLLO SDI (vector services)
      • Command Line (with "Run as Administrator")
        • starting : cd C:\opt\ERDAS\APOLLOSDI\tomcat\bin\startup.bat
        • stopping : cd C:\opt\ERDAS\APOLLOSDI\tomcat\bin\shutdown.bat
      • check the java process for erdas user has been killed
    • APOLLO IWS (raster services)
      • Open IIS (Control Panel\Administrative Tools --> Internet Information Services (IIS) Manager)
        • starting : select under "Site" "Default Web Site" --> Manage Web Site : Start
        • Stopping : select under "Site" "Default Web Site" --> Manage Web Site : Stop
  • Constellation on the Linux box (you must be logged in as constellation user, do not launch it as root !):
    • starting: /opt/constellation/apache-tomcat-6.0.28/bin/startup.sh
    • stopping: /opt/constellation/apache-tomcat-6.0.28/bin/shutdown.sh
    • check it's really dead: ps aux | grep constellation . If it hasn't stopped gracefully use kill -9 <pid> to terminate the process

Database Machine:

  • Oracle Database
    • Login to database machine and sudo to user oracle
      • sudo su - oracle
      • Starting: lsnrctl start; dbstart
      • Stopping: lsnrctl stop; dbshut
  • PostgreSQL Database
    • Login to database machine and as root do:
      • Starting: sudo /etc/init.d/postgresql start
      • Stopping: sudo /etc/init.d/postgresql stop

List of Software Enhancements

GeoServer

  • support DBF larger than 2GB
  • avoid reading the Z dimension when flat geometries are all that's needed
  • generally improve shapefile reading: don't open the shp and dbf file if the spatial index says there is no data to read, bbox based feature skipping during filtering, limit number of disk reads to the bare minimum
  • perform fast rectangular clipping of geometries before sending them to the renderer
  • direct rendering path for raster to avoid the java2d bottlenecks
  • improved .qix index file generation based on node load factor instead of tree depth, node collapsing for degenerate linear chains
  • light parallelization of the renderer so that feature reading and rendering can be performed in parallel
  • better metadata caching (feature type structure and the like)

MapServer

  • large DBF support (ticket)
  • improving labels on curved lines (ticket)
  • handling label precision (ticket)
  • improving Oracle GeoRaster GDAL driver (ticket)

Constellation-SDI

Detailed in the Constellation-SDI page.

Cadcorp GeognoSIS

Detailed in the Cadcorp notes page.

ERDAS APOLLO

For APOLLO IWS :

  • Upgrade to GDAL 1.7.2
  • Direct access to GDAL for Geotiff reader
  • Improved the mosaicing of TIF datasets to remove seam lines

For APOLLO SDI :

  • Tomcat 6 and Java 6: improved performances over Tomcat 5.5 and Java 5 Rendering :
  • Clash management for contour labels
  • Multipath rendering optimisation
  • Low level code optimisation
  • New option for shape index in memory

Mapnik

Detailed at: Benchmarking_2010/Mapnik_notes#Improvements

List of Performance Results

Constellation-SDI

Detailed in the Constellation-SDI page.

Final Presentation

http://www.slideshare.net/gatewaygeomatics.com/wms-performance-shootout-2010

External Related Links


Personal tools