1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
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 }
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>
26 Easy Software Products
<BR>
27 Copyright
1997-
2003, All Rights Reserved
<BR>
30 <H1 ALIGN=
"CENTER"><A NAME=
"CONTENTS">Table of Contents
</A></H1>
32 <BR><B><A HREF=
"#1">1 Scope
</A></B>
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>
38 <B><A HREF=
"#2">2 References
</A></B>
40 <LI><A HREF=
"#2_1">2.1 CUPS Documentation
</A></LI>
41 <LI><A HREF=
"#2_2">2.2 Other Documents
</A></LI>
43 <B><A HREF=
"#3">3 Programs
</A></B>
45 <BR><B><A HREF=
"#4">4 Scheduler Objects
</A></B>
47 <BR><B><A HREF=
"#5">A Glossary
</A></B>
49 <LI><A HREF=
"#5_1">A
.1 Terms
</A></LI>
50 <LI><A HREF=
"#5_2">A
.2 Acronyms
</A></LI>
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 (
"CUPS
") 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
®-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 (
"IPP
") as the basis for
67 managing print jobs and queues. The Line Printer Daemon (
"LPD
") Server
68 Message Block (
"SMB
"), and AppSocket (a.k.a. JetDirect) protocols are
69 also supported with reduced functionality. CUPS adds network printer
70 browsing and PostScript Printer Description (
"PPD
") 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>
81 <LI>2 - References
</LI>
83 <LI>4 - Scheduler Objects
</LI>
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>
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>
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>
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
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
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>
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
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.
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>
150 <TR><TD>lpd
</TD><TD>89k
</TD><TD>89k
</TD><TD>Up to size of print file
</TD><TD>
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>
156 <TR><TD>socket
</TD><TD>85k
</TD><TD>85k
</TD><TD>Up to size of print file
</TD><TD>
158 <TR><TD>usb
</TD><TD>85k
</TD><TD>85k
</TD><TD>Up to size of print file
</TD><TD>
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>
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>
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>
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>
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>
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
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>
249 <H1 TYPE=
"A" VALUE=
"1"><A NAME=
"5">A Glossary
</A></H1>
250 <H2><A NAME=
"5_1">A
.1 Terms
</A></H2>
253 <DD>A computer language.
</DD>
255 <DD>Sending or receiving data more than
1 bit at a time.
</DD>
257 <DD>A one-way communications channel between two programs.
</DD>
259 <DD>Sending or receiving data
1 bit at a time.
</DD>
261 <DD>A two-way network communications channel.
</DD>
263 <H2><A NAME=
"5_2">A
.2 Acronyms
</A></H2>
266 <DD>American Standard Code for Information Interchange
</DD>
268 <DD>Common UNIX Printing System
</DD>
270 <DD>EPSON Standard Code for Printers
</DD>
272 <DD>File Transfer Protocol
</DD>
274 <DD>Hewlett-Packard Graphics Language
</DD>
276 <DD>Hewlett-Packard Page Control Language
</DD>
278 <DD>Hewlett-Packard Printer Job Language
</DD>
280 <DD>Internet Engineering Task Force
</DD>
282 <DD>Internet Printing Protocol
</DD>
284 <DD>International Standards Organization
</DD>
286 <DD>Line Printer Daemon
</DD>
288 <DD>Multimedia Internet Mail Exchange
</DD>
290 <DD>PostScript Printer Description
</DD>
292 <DD>Server Message Block
</DD>
294 <DD>Trivial File Transfer Protocol
</DD>