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 <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. 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>
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->System->Advanced->Environment Variables..<br>
<br>
in either user or system variables.<br>
<br>
You can examine individual variables using<br>
<br>
echo %VARIABLE_NAME%<br>
<br>
or see all of them using<br>
<br>
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>
export ARGYLL_REV_CACHE_MULT=1.5<br>
or<br>
set ARGYLL_REV_CACHE_MULT=1.5<br>
or<br>
ARGYLL_REV_CACHE_MULT=1.5<br>
<br>
and may need separately exporting, something like:<br>
<br>
export ARGYLL_REV_CACHE_MULT<br>
<br>
Generally it should be configured in the shell start-up
script,
if you
want the setting to be used<br>
for every session.<br>
<br>
You can examine individual variables using<br>
<br>
echo $VARIABLE_NAME<br>
<br>
or see all of them using<br>
<br>
set<br>
<br>
<br>
<br>
</body>
</html>
|