Load cups into easysw/current.
[thirdparty/cups.git] / doc / sps.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
2 <HTML>
3 <HEAD>
4 <TITLE>CUPS Software Performance Specification</TITLE>
5 <META NAME="author" CONTENT="Easy Software Products">
6 <META NAME="copyright" CONTENT="Copyright 1997-2003, All Rights Reserved">
7 <META NAME="docnumber" CONTENT="CUPS-SPS-1.2">
8 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-1">
9 <STYLE TYPE="text/css"><!--
10 BODY { font-family: serif }
11 H1 { font-family: sans-serif }
12 H2 { font-family: sans-serif }
13 H3 { font-family: sans-serif }
14 H4 { font-family: sans-serif }
15 H5 { font-family: sans-serif }
16 H6 { font-family: sans-serif }
17 SUB { font-size: smaller }
18 SUP { font-size: smaller }
19 PRE { font-family: monospace }
20 --></STYLE>
21 </HEAD>
22 <BODY>
23 <CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="431" HEIGHT="511"><BR>
24 <H1>CUPS Software Performance Specification</H1></A><BR>
25 CUPS-SPS-1.2<BR>
26 Easy Software Products<BR>
27 Copyright 1997-2003, All Rights Reserved<BR>
28 </CENTER>
29 <HR>
30 <H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
31 <BR>
32 <BR><B><A HREF="#1">1 Scope</A></B>
33 <UL>
34 <LI><A HREF="#1_1">1.1 Identification</A></LI>
35 <LI><A HREF="#1_2">1.2 System Overview</A></LI>
36 <LI><A HREF="#1_3">1.3 Document Overview</A></LI>
37 </UL>
38 <B><A HREF="#2">2 References</A></B>
39 <UL>
40 <LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
41 <LI><A HREF="#2_2">2.2 Other Documents</A></LI>
42 </UL>
43 <B><A HREF="#3">3 Programs</A></B>
44 <BR>
45 <BR><B><A HREF="#4">4 Scheduler Objects</A></B>
46 <BR>
47 <BR><B><A HREF="#5">A Glossary</A></B>
48 <UL>
49 <LI><A HREF="#5_1">A.1 Terms</A></LI>
50 <LI><A HREF="#5_2">A.2 Acronyms</A></LI>
51 </UL>
52 <HR>
53 <H1><A NAME="1">1 Scope</A></H1>
54 <H2><A NAME="1_1">1.1 Identification</A></H2>
55 <P>This software performance specification provides an analysis of the
56  memory, disk, and processor utilitization of each program in the Common
57  UNIX Printing System (&quot;CUPS&quot;) Version 1.2.</P>
58 <P>For the purposes of comparison, all figures are for the Linux Intel
59  platform. Memory utilization on other platforms should be similar.</P>
60 <H2><A NAME="1_2">1.2 System Overview</A></H2>
61 <P>CUPS provides a portable printing layer for UNIX&reg;-based operating
62  systems. It has been developed by<A HREF="http://www.easysw.com"> Easy
63  Software Products</A> to promote a standard printing solution for all
64  UNIX vendors and users. CUPS provides the System V and Berkeley
65  command-line interfaces.</P>
66 <P>CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
67  managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
68  Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
69  also supported with reduced functionality. CUPS adds network printer
70  browsing and PostScript Printer Description (&quot;PPD&quot;) based printing
71  options to support real-world printing under UNIX.</P>
72 <P>CUPS also includes a customized version of GNU Ghostscript (currently
73  based off GNU Ghostscript 5.50) and an image file RIP that are used to
74  support non-PostScript printers. Sample drivers for HP and EPSON
75  printers are included that use these filters.</P>
76 <H2><A NAME="1_3">1.3 Document Overview</A></H2>
77 <P>This software performance specification is organized into the
78  following sections:</P>
79 <UL>
80 <LI>1 - Scope</LI>
81 <LI>2 - References</LI>
82 <LI>3 - Programs</LI>
83 <LI>4 - Scheduler Objects</LI>
84 <LI>A - Glossary</LI>
85 </UL>
86 <H1><A NAME="2">2 References</A></H1>
87 <H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
88 <P>The following CUPS documentation is referenced by this document:</P>
89 <UL>
90 <LI>CUPS-CMP-1.2: CUPS Configuration Management Plan</LI>
91 <LI>CUPS-IDD-1.2: CUPS System Interface Design Description</LI>
92 <LI>CUPS-IPP-1.2: CUPS Implementation of IPP</LI>
93 <LI>CUPS-SAM-1.2.x: CUPS Software Administrators Manual</LI>
94 <LI>CUPS-SDD-1.2: CUPS Software Design Description</LI>
95 <LI>CUPS-SPM-1.2.x: CUPS Software Programming Manual</LI>
96 <LI>CUPS-SSR-1.2: CUPS Software Security Report</LI>
97 <LI>CUPS-STP-1.2: CUPS Software Test Plan</LI>
98 <LI>CUPS-SUM-1.2.x: CUPS Software Users Manual</LI>
99 <LI>CUPS-SVD-1.2: CUPS Software Version Description</LI>
100 </UL>
101 <H2><A NAME="2_2">2.2 Other Documents</A></H2>
102 <P>The following non-CUPS documents are referenced by this document:</P>
103 <UL>
104 <LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
105 Adobe PostScript Printer Description File Format Specification, Version
106  4.3.</A></LI>
107 <LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
108 Adobe PostScript Language Reference, Third Edition.</A></LI>
109 <LI>IPP: Job and Printer Set Operations</LI>
110 <LI>IPP/1.1: Encoding and Transport</LI>
111 <LI>IPP/1.1: Implementers Guide</LI>
112 <LI>IPP/1.1: Model and Semantics</LI>
113 <LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line Printer
114  Daemon Protocol</A></LI>
115 <LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design Goals
116  for an Internet Printing Protocol</A></LI>
117 <LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
118  for the Structure of the Model and Protocol for the Internet Printing
119  Protocol</A></LI>
120 <LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
121  between LPD and IPP Protocols</A></LI>
122 <LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
123  Transfer Protocol -- HTTP/1.1</A></LI>
124 <LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
125  Authentication: Basic and Digest Access</A> Authentication</LI>
126 </UL>
127 <H1><A NAME="3">3 Programs</A></H1>
128 <P>The following table describes the average memory, disk, and CPU usage
129  of each program in CUPS.</P>
130 <P>The base memory column shows the initial memory requirements for each
131  program, including any shared libraries that are provided by CUPS.</P>
132 <P>The max memory column shows the maximum amount of memory that will be
133  used by the program based upon the default configuration settings
134  supplied with CUPS.</P>
135 <P>The temp files column indicates whether any temporary files are
136  created.</P>
137 <P>The CPU usage column specifies a relative CPU usage by the program
138  under normal conditions, either low, medium, or high. Low usage
139  indicates that the program will never use more than 33% of the
140  available CPU time. Medium usage indicates the program will use as much
141  as 66% of the available CPU time. High usage indicates the program uses
142  66% or more of the available CPU time.
143 <CENTER>
144 <TABLE BORDER="1" WIDTH="80%">
145 <TR><TH COLSPAN="3">Backends</TH></TR>
146 <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
147  Files</TH><TH>CPU Usage</TH></TR>
148 <TR><TD>ipp</TD><TD>91k</TD><TD>256k</TD><TD>Up to size of print file</TD><TD>
149 Low</TD></TR>
150 <TR><TD>lpd</TD><TD>89k</TD><TD>89k</TD><TD>Up to size of print file</TD><TD>
151 Low</TD></TR>
152 <TR><TD>parallel</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print
153  file</TD><TD>Low</TD></TR>
154 <TR><TD>serial</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD>
155 Low</TD></TR>
156 <TR><TD>socket</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD>
157 Low</TD></TR>
158 <TR><TD>usb</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD>
159 Low</TD></TR>
160 <TR><TH COLSPAN="3">CGIs</TH></TR>
161 <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
162  Files</TH><TH>CPU Usage</TH></TR>
163 <TR><TD>admin.cgi</TD><TD>107k</TD><TD>256k</TD><TD>Up to size of PPD
164  file</TD><TD>Medium</TD></TR>
165 <TR><TD>classes.cgi</TD><TD>95k</TD><TD>Size of class objects</TD><TD>
166 None</TD><TD>Medium</TD></TR>
167 <TR><TD>jobs.cgi</TD><TD>93k</TD><TD>Size of job objects</TD><TD>None</TD><TD>
168 Medium</TD></TR>
169 <TR><TD>printers.cgi</TD><TD>95k</TD><TD>Size of printer objects</TD><TD>
170 None</TD><TD>Medium</TD></TR>
171 <TR><TH COLSPAN="3">Command-Line Programs</TH></TR>
172 <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
173  Files</TH><TH>CPU Usage</TH></TR>
174 <TR><TD>accept</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
175 <TR><TD>cancel</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
176 <TR><TD>disable</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
177 <TR><TD>enable</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
178 <TR><TD>lp</TD><TD>90k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR>
179 <TR><TD>lpadmin</TD><TD>148k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR>
180 <TR><TD>lpc</TD><TD>86k</TD><TD>Size of job and printer objects</TD><TD>
181 None</TD><TD>Medium</TD></TR>
182 <TR><TD>lpinfo</TD><TD>89k</TD><TD>Size of device and PPD objects</TD><TD>
183 None</TD><TD>Medium</TD></TR>
184 <TR><TD>lpmove</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
185 <TR><TD>lpoptions</TD><TD>89k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
186 <TR><TD>lppasswd</TD><TD>90k</TD><TD>90k</TD><TD>None</TD><TD>Low</TD></TR>
187 <TR><TD>lpq</TD><TD>87k</TD><TD>Size of job objects</TD><TD>None</TD><TD>
188 Medium</TD></TR>
189 <TR><TD>lpr</TD><TD>87k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR>
190 <TR><TD>lprm</TD><TD>84k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
191 <TR><TD>lpstat</TD><TD>119k</TD><TD>Size of job, printer, and class
192  objects</TD><TD>None</TD><TD>Medium</TD></TR>
193 <TR><TD>reject</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
194 <TR><TH COLSPAN="3">Daemons</TH></TR>
195 <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
196  Files</TH><TH>CPU Usage</TH></TR>
197 <TR><TD>cups-lpd</TD><TD>92k</TD><TD>256k</TD><TD>One file per control
198  or data file from client</TD><TD>Low</TD></TR>
199 <TR><TD>cupsd</TD><TD>308k</TD><TD>See Scheduler Requirements</TD><TD>
200 See Scheduler Requirements</TD><TD>Medium</TD></TR>
201 <TR><TD>cups-polld</TD><TD>84k</TD><TD>Size of printer and class objects</TD><TD>
202 None</TD><TD>Low</TD></TR>
203 <TR><TH COLSPAN="3">Filters</TH></TR>
204 <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
205  Files</TH><TH>CPU Usage</TH></TR>
206 <TR><TD>hpgltops</TD><TD>263k</TD><TD>320k</TD><TD>None</TD><TD>Medium</TD>
207 </TR>
208 <TR><TD>imagetops</TD><TD>628k</TD><TD>10M</TD><TD>Swap file for
209  uncompressed image data</TD><TD>Medium</TD></TR>
210 <TR><TD>imagetoraster</TD><TD>652k</TD><TD>10M</TD><TD>Swap file for
211  uncompressed image data</TD><TD>High</TD></TR>
212 <TR><TD>pstops</TD><TD>775k</TD><TD>840k</TD><TD>Up to size of print
213  file</TD><TD>Medium</TD></TR>
214 <TR><TD>pstoraster</TD><TD>4M</TD><TD>14M</TD><TD>Swap file for command
215  lists</TD><TD>High</TD></TR>
216 <TR><TD>rastertoepson</TD><TD>693k</TD><TD>1M</TD><TD>None</TD><TD>Low</TD>
217 </TR>
218 <TR><TD>rastertohp</TD><TD>690k</TD><TD>1M</TD><TD>None</TD><TD>Low</TD></TR>
219 <TR><TD>texttops</TD><TD>638k</TD><TD>4*cols*rows</TD><TD>None</TD><TD>
220 Low</TD></TR>
221 </TABLE>
222 </CENTER>
223 </P>
224 <H1><A NAME="4">4 Scheduler Objects</A></H1>
225 <P>The <CODE>cupsd</CODE> program is the CUPS scheduler process. It
226  manages many interdependent server objects that are used to manage and
227  print files to printers.</P>
228 <P>The following table provides the memory and disk cost associated with
229  each server object.
230 <CENTER>
231 <TABLE BORDER="1" WIDTH="80%">
232 <TR><TH>Object</TH><TH>Memory Per</TH><TH>Disk Per</TH></TR>
233 <TR><TD>Browse ACL</TD><TD>1k</TD><TD>120</TD></TR>
234 <TR><TD>Browse Poll</TD><TD>24</TD><TD>80</TD></TR>
235 <TR><TD>Browse Relay</TD><TD>28</TD><TD>80</TD></TR>
236 <TR><TD>Certificate</TD><TD>76</TD><TD>32</TD></TR>
237 <TR><TD>Class</TD><TD>9k</TD><TD>200</TD></TR>
238 <TR><TD>Client</TD><TD>13k</TD><TD>-</TD></TR>
239 <TR><TD>Device</TD><TD>256</TD><TD>-</TD></TR>
240 <TR><TD>Job</TD><TD>2k</TD><TD>1k + size of document files</TD></TR>
241 <TR><TD>Location ACL</TD><TD>1k</TD><TD>120</TD></TR>
242 <TR><TD>MIME Filter</TD><TD>268</TD><TD>80</TD></TR>
243 <TR><TD>MIME Type</TD><TD>340</TD><TD>80</TD></TR>
244 <TR><TD>PPD</TD><TD>200</TD><TD>656</TD></TR>
245 <TR><TD>Printer</TD><TD>11k</TD><TD>32k</TD></TR>
246 </TABLE>
247 </CENTER>
248 </P>
249 <H1 TYPE="A" VALUE="1"><A NAME="5">A Glossary</A></H1>
250 <H2><A NAME="5_1">A.1 Terms</A></H2>
251 <DL>
252 <DT>C</DT>
253 <DD>A computer language.</DD>
254 <DT>parallel</DT>
255 <DD>Sending or receiving data more than 1 bit at a time.</DD>
256 <DT>pipe</DT>
257 <DD>A one-way communications channel between two programs.</DD>
258 <DT>serial</DT>
259 <DD>Sending or receiving data 1 bit at a time.</DD>
260 <DT>socket</DT>
261 <DD>A two-way network communications channel.</DD>
262 </DL>
263 <H2><A NAME="5_2">A.2 Acronyms</A></H2>
264 <DL>
265 <DT>ASCII</DT>
266 <DD>American Standard Code for Information Interchange</DD>
267 <DT>CUPS</DT>
268 <DD>Common UNIX Printing System</DD>
269 <DT>ESC/P</DT>
270 <DD>EPSON Standard Code for Printers</DD>
271 <DT>FTP</DT>
272 <DD>File Transfer Protocol</DD>
273 <DT>HP-GL</DT>
274 <DD>Hewlett-Packard Graphics Language</DD>
275 <DT>HP-PCL</DT>
276 <DD>Hewlett-Packard Page Control Language</DD>
277 <DT>HP-PJL</DT>
278 <DD>Hewlett-Packard Printer Job Language</DD>
279 <DT>IETF</DT>
280 <DD>Internet Engineering Task Force</DD>
281 <DT>IPP</DT>
282 <DD>Internet Printing Protocol</DD>
283 <DT>ISO</DT>
284 <DD>International Standards Organization</DD>
285 <DT>LPD</DT>
286 <DD>Line Printer Daemon</DD>
287 <DT>MIME</DT>
288 <DD>Multimedia Internet Mail Exchange</DD>
289 <DT>PPD</DT>
290 <DD>PostScript Printer Description</DD>
291 <DT>SMB</DT>
292 <DD>Server Message Block</DD>
293 <DT>TFTP</DT>
294 <DD>Trivial File Transfer Protocol</DD>
295 </DL>
296 </BODY>
297 </HTML>