summaryrefslogtreecommitdiff
path: root/doc/Performance.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/Performance.html')
-rw-r--r--doc/Performance.html106
1 files changed, 106 insertions, 0 deletions
diff --git a/doc/Performance.html b/doc/Performance.html
new file mode 100644
index 0000000..b69f5ae
--- /dev/null
+++ b/doc/Performance.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+ <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR"
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Argyll Performance Tuning</title>
+</head>
+<body>
+<h2>
+<u>Performance Tuning</u></h2>
+<br>
+Some operations in Argyll can be particularly slow, so it is worth
+examining ways of improving performance, or trading memory consumption
+for performance.<br>
+<h3>Creating Device Links and Profiles<br>
+</h3>
+In creating device links or the B2A tables of profiles, the execution
+time is often dominated by the inversion of forward
+color lookup values. An in-memory cache is employed to speed up this
+operation, by keeping computed values in case they can be used more
+than once. The amount of memory used for caching these values is
+pre-set within the inversion code, and by default is set to use half of
+the available RAM on the system, with a minimum of 50 Mbytes.<br>
+<br>
+The reverse cache size can be changed by setting an environment
+variable
+<span style="font-weight: bold;">ARGYLL_REV_CACHE_MULT</span> to a
+number greater or less than than 1.0 This will multiply the size of the
+cache by that number (i.e. 1.5 would increase the cache size by 50%,
+0.5 would halve it).<br>
+<br>
+If you find that <span style="font-weight: bold;">colprof</span>
+or&nbsp; <span style="font-weight: bold;">collink</span>
+are working very slowly, but that your CPU's are nearly idle, then this
+is a sign of disk swapping, and that too much memory is being
+requested.&nbsp; This can be because other applications are also using
+memory, or Argyll's default setting tries to use more memory than is
+actually available. You can try shutting down other applications when
+this happens, or you can <span style="font-weight: bold;">lower</span>
+the amount of memory Argyll uses by setting <span
+ style="font-weight: bold;">ARGYLL_REV_CACHE_MULT</span> to a value
+less than 1.0 (ie. try 0.5). <br>
+<br>
+If you have a lot of memory available, you can try increasing the
+cache size to use more of the available RAM (particularly if you get a
+"Warning - Reverse Cell Cache exhausted,
+processing in chunks" message during processing), but if you set it to
+a value too near 2.0 you risk disk swapping, which can slow progress to
+a crawl.<br>
+<br>
+If you have a lot of memory available, then a second adjustment that
+can make a great difference to the time taken
+in creating B2A tables is the resolution of the inverse lookup
+acceleration grid. The finer the grid, the less searching is needed to
+locate the input colorspace values that
+correspond to a target output color value, but the greater the memory
+used in this
+structure, and the greater the setup time needed to initialize the
+acceleration grid. The <span style="font-weight: bold;">ARGYLL_REV_ACC_GRID_RES_MULT</span>
+environment variable can alter the default resolution by a scale
+factor. A value of 0.5 for instance, would halve the resolution
+(typically meaning 1/8 th. the total number of grid entries and
+memory), while a value of 2.0 would double it, typically resulting in 8
+times the memory usage. Increasing the resolution too much will reduce
+the available memory for the reverse cache, and greatly increase setup
+time.<br>
+<br>
+<h3>Setting an environment variable:</h3>
+<br>
+To set an environment variable an MSWindows DOS shell, either use set,
+e.g.;<br>
+<br>
+&nbsp;&nbsp;&nbsp; set ARGYLL_REV_CACHE_MULT=1.5<br>
+<br>
+which will set the value for that session, or set it in<br>
+<br>
+Control Panel-&gt;System-&gt;Advanced-&gt;Environment Variables..<br>
+<br>
+in either user or system variables.<br>
+<br>
+For OS X or Linux, the exact procedure will depend on the shell you are
+running, but<br>
+is usually something like:<br>
+<br>
+&nbsp;&nbsp;&nbsp; export ARGYLL_REV_CACHE_MULT=1.5<br>
+or<br>
+&nbsp;&nbsp;&nbsp; set ARGYLL_REV_CACHE_MULT=1.5<br>
+or<br>
+&nbsp;&nbsp;&nbsp; ARGYLL_REV_CACHE_MULT=1.5<br>
+<br>
+and may need separately exporting, something like:<br>
+<br>
+&nbsp;&nbsp;&nbsp; export ARGYLL_REV_CACHE_MULT<br>
+<br>
+Generally it should be configured in the shell start-up script,&nbsp;
+if you
+want the setting to be used<br>
+for every session.<br>
+<br>
+<br>
+</body>
+</html>