summaryrefslogtreecommitdiff
path: root/doc/Performance.html
blob: 340cec02a0f93ae9af7ff06c1175b4c60f4b2928 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<!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>
    You can examine individual variables using<br>
    <br>
    &nbsp;&nbsp;&nbsp; echo %VARIABLE_NAME%<br>
    <br>
    or see all of them using<br>
    <br>
    &nbsp;&nbsp; set<br>
    <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>
    You can examine individual variables using<br>
    <br>
    &nbsp;&nbsp;&nbsp; echo $VARIABLE_NAME<br>
    <br>
    or see all of them using<br>
    <br>
    &nbsp;&nbsp; set<br>
    <br>
    <br>
    <br>
  </body>
</html>