ruven / iipsrv

iipsrv is an advanced high-performance feature-rich image server for web-based streamed viewing and zooming of ultra high-resolution images.
https://iipimage.sourceforge.io
GNU General Public License v3.0
293 stars 115 forks source link

Tracking Issue for IIP Performance Statistics #118

Open beaudet opened 7 years ago

beaudet commented 7 years ago

This issue can be appended with various performance tests being conducted against the IIP server. Perhaps the following format can be used:

Date of Test:

Server Description (cores, memory, cpu model, etc.):

Tool used for performance testing and / or command line:

Data file description / sample of data file contents

Testing Procedure (for replication):

IIP release or branch build & date built + configuration, e.g. Kakadu, OpenJPEG, PNG, etc.:

Results:

beaudet commented 7 years ago

Date: 5/12/2017 Server: 2.3 GHz Xeon x 8 cores, 24 GB RAM / Memcache 6GB Cache / Varnish 4GB malloc cache / proxy to varnish for all requests not received from localhost Tool: siege with 8 concurrent users and no delay, 900 requests total per user with file containing 900 unique URLs, each retrieving a 400x400 JPG from a wide variety of art object images, some of which are as large as 30k pixels in the longest dimension, but most of which are between 3000 and 4000 pixels in the longest dimension. Pyramidal TIFF sources generated with vips im_vips2tiff $targetFile $sourcefile$fileExt:jpeg:90,tile:256x256,pyramid

Example Line from Data File: http://server-name/iiif/public/objects/5/0/7/9/1/50791-primary-0-nativeres.ptif/full/400,/0/default.png

IIP Build: Custom build from github.com/beaudet/iipsrv/nga_prod branch incorporating IIIF url support, lanczos filter, caching enhancements, png output support, icc profile enhancement, and oversampling enhancements

IIP Config: FcgidInitialEnv MEMCACHED_SERVERS "localhost:11211" FcgidInitialEnv MEMCACHED_TIMEOUT 300 FcgidInitialEnv ALLOW_UPSCALING 0 FcgidInitialEnv LOGFILE "/var/log/iipsrv/iipsrv.log" FcgidInitialEnv VERBOSITY 1 FcgidInitialEnv FILESYSTEM_PREFIX "/my/secret/image/prefix/" FcgidInitialEnv JPEG_QUALITY 90 FcgidInitialEnv MAX_CVT 8192 FcgidInitialEnv MAX_HEADERS_IN_METADATA_CACHE 10000 FcgidInitialEnv MAX_IMAGE_CACHE_SIZE 0 FcgidInitialEnv DISABLE_PRIMARY_MEMCACHE 0 FcgidInitialEnv INTERPOLATION 2 <-- Lanczos FcgidInitialEnv OVERSAMPLING_FACTOR 1.5 FcgidInitialEnv IIIF_PREFIX "/iiif" FcgidInitialEnv RETAIN_SOURCE_ICC_PROFILE 1

Testing Procedure:

  1. on image server: service httpd restart; service memcached restart; service varnish restart;
  2. on load generating server: siege -c 8 -d 0 -r 900 -f jpg400x400.txt
  3. repeat siege test to compare memcache performance against varnish cache MALLOC performance

Results:

Conclusions:

despite this https://www.varnish-cache.org/docs/trunk/phk/ssl_again.html

there might actually be hope here: https://www.varnish-software.com/plus/ssl-tls-support/ and therefore here https://github.com/varnish/hitch

beaudet commented 7 years ago

I reran the May 12 test listed above with varnish and the IIP primary cache as well as the image tile cache disabled and with 8 users as well as 1 user. I then enabled tile caching only to assess the effectiveness of that option alone.

Results and Conclusions:

beaudet commented 7 years ago

Ruven has indicated that native Intel Lanczos code is being successfully integrated into IIP and provides an additional 7-8x speedup w.r.t. the resampling operations. That processing is perhaps 40% of the total time handling a non-cached requests, so I would expect it to speed up IIP by a factor of perhaps 2x once that's in place.