Tag: benchmark

Profiling application LLC cache misses under Linux using Perf Events.

Posted by – Wednesday 2011-11-30

In this post we will see how to do some profiling under Ubuntu Linux using Perf Events, present in the kernel since version 2.6.31 [1, 2]. In particular, we will estimate the rate of Last Level Cache (LLC) misses that a Java application has.

There are GIS applications that are computing power hungry; among them applications processing LiDAR data are an example, because the volume of the input data is usually huge. The efficient usage of the processor caches can boost execution time. Given the high penalty processor cache misses have, identifying application areas causing too much cache misses is very important.

1. Installation of Perf Events

Fortunately, Ubuntu Linux offers Perf Events (PE) in the form of binary packages. By using the command apt-get, installation is straighforward:

$ sudo apt-get install linux-tools-common linux-tools-2.6.38-13

Two notes about installation. First, before attempting installation check that the kernel you are using is recent enough: Perf Events [note 1] is available since Linux version 2.6.31. Second, install a version of the package linux-tools matching your kernel version.

More…

Efficient LiDAR data bulk load in a PostGIS database.

Posted by – Sunday 2011-02-06

In this post we will see how to efficiently perform data bulk load in a spatial PostGIS database running in a Linux environment, coming the data from an airborne LiDAR survey.

Spatial databases can be used to store data collected in remote sensing Light Detection and Ranging[1] (LiDAR) surveys. LiDAR technology has many applications is forestry, where it is used in the generation Digital Terrain Models and Digital Surface Models[2], estimation of forest fuel variables…

In an airborne LiDAR survey, a LiDAR sensor emits laser pulses towards ground. Laser pulses are reflected when reaching obstacles as trees or the ground and, after a time elapse, echoes are received by the sensor, which records elapsed time and echo intensity. In addition, this kind of sensors have a kinematic Global Positioning System[3] (GPS) and an Inertial Measurement Unit[4] (IMU) that continuously registers the spatial position of the aircraft. Thus, high precision geo-referenced elevation and laser reflection intensity data is collected.

LiDAR surveys produce high volume of data. For instance, as of 2010 a commercial airborne LiDAR survey provided 12 points per square meter, which sums 120,000 points for an area as small as a hectare.

Thus, the problem of efficiently loading LiDAR data in a spatial database arises. The obvious approach, using INSERT queries, will work, but at the expense of consuming a lot of time. In sections 1, 2 and 3 we will see how to achieve efficient bulk data load in PostGIS by using the command COPY[5]. In section 4 some benchmarking is done, comparing the perfomance of data loading with COPY and INSERT.

More…

Benchmarking TileCache’s metatiling.

Posted by – Saturday 2010-12-04

In WMS cache systems, metatiling consists on requesting larger tiles than ‘regular’ tile size – for us, 256×256 pixels -, and then splitting them into tiles of regular size. TileCache has this feature, and it can be used to dramatically speed up the WMS cache seeding process.

In the first section we will see how to enable TileCache metatiling in a Debian server. In the second section we will see a benchmark showing that speed up in the seeding process, and a simple method to get the best metatile size. Finally, in the third section we see how to avoid two frequent errors when using an instance of MapServer as Web Map Service (WMS) server.

1. Enabling metatiling

In TileCache metatiling is enabled in the configuration file – tilecache.cfg – and must be done in every layer we want to take advantage of this feature. Below a configuration file snippet is shown:

[cache]
type=Disk
base=/path/to/wms-cache/directory/

[municipalities]
debug=yes
type=WMSLayer
url=http://myserver/sdi-lugo?service=WMS&transparent=true
extension=png
size=256,256
bbox=580000,4688000,680000,4850000
layers=municipios
srs=EPSG:23029
extent_type=loose
maxResolution=285
levels=10
metaTile=yes
metaSize=15,15

More…