| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> |
| <HTML> |
| <HEAD> |
| <TITLE>CUPS Software Performance Specification</TITLE> |
| <META NAME="author" CONTENT="Easy Software Products"> |
| <META NAME="copyright" CONTENT="Copyright 1997-2003, All Rights Reserved"> |
| <META NAME="docnumber" CONTENT="CUPS-SPS-1.2"> |
| <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-1"> |
| <STYLE TYPE="text/css"><!-- |
| BODY { font-family: serif } |
| H1 { font-family: sans-serif } |
| H2 { font-family: sans-serif } |
| H3 { font-family: sans-serif } |
| H4 { font-family: sans-serif } |
| H5 { font-family: sans-serif } |
| H6 { font-family: sans-serif } |
| SUB { font-size: smaller } |
| SUP { font-size: smaller } |
| PRE { font-family: monospace } |
| --></STYLE> |
| </HEAD> |
| <BODY> |
| <CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="431" HEIGHT="511"><BR> |
| <H1>CUPS Software Performance Specification</H1></A><BR> |
| CUPS-SPS-1.2<BR> |
| Easy Software Products<BR> |
| Copyright 1997-2003, All Rights Reserved<BR> |
| </CENTER> |
| <HR> |
| <H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1> |
| <BR> |
| <BR><B><A HREF="#1">1 Scope</A></B> |
| <UL> |
| <LI><A HREF="#1_1">1.1 Identification</A></LI> |
| <LI><A HREF="#1_2">1.2 System Overview</A></LI> |
| <LI><A HREF="#1_3">1.3 Document Overview</A></LI> |
| </UL> |
| <B><A HREF="#2">2 References</A></B> |
| <UL> |
| <LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI> |
| <LI><A HREF="#2_2">2.2 Other Documents</A></LI> |
| </UL> |
| <B><A HREF="#3">3 Programs</A></B> |
| <BR> |
| <BR><B><A HREF="#4">4 Scheduler Objects</A></B> |
| <BR> |
| <BR><B><A HREF="#5">A Glossary</A></B> |
| <UL> |
| <LI><A HREF="#5_1">A.1 Terms</A></LI> |
| <LI><A HREF="#5_2">A.2 Acronyms</A></LI> |
| </UL> |
| <HR> |
| <H1><A NAME="1">1 Scope</A></H1> |
| <H2><A NAME="1_1">1.1 Identification</A></H2> |
| <P>This software performance specification provides an analysis of the |
| memory, disk, and processor utilitization of each program in the Common |
| UNIX Printing System ("CUPS") Version 1.2.</P> |
| <P>For the purposes of comparison, all figures are for the Linux Intel |
| platform. Memory utilization on other platforms should be similar.</P> |
| <H2><A NAME="1_2">1.2 System Overview</A></H2> |
| <P>CUPS provides a portable printing layer for UNIX®-based operating |
| systems. It has been developed by<A HREF="http://www.easysw.com"> Easy |
| Software Products</A> to promote a standard printing solution for all |
| UNIX vendors and users. CUPS provides the System V and Berkeley |
| command-line interfaces.</P> |
| <P>CUPS uses the Internet Printing Protocol ("IPP") as the basis for |
| managing print jobs and queues. The Line Printer Daemon ("LPD") Server |
| Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are |
| also supported with reduced functionality. CUPS adds network printer |
| browsing and PostScript Printer Description ("PPD") based printing |
| options to support real-world printing under UNIX.</P> |
| <P>CUPS also includes a customized version of GNU Ghostscript (currently |
| based off GNU Ghostscript 5.50) and an image file RIP that are used to |
| support non-PostScript printers. Sample drivers for HP and EPSON |
| printers are included that use these filters.</P> |
| <H2><A NAME="1_3">1.3 Document Overview</A></H2> |
| <P>This software performance specification is organized into the |
| following sections:</P> |
| <UL> |
| <LI>1 - Scope</LI> |
| <LI>2 - References</LI> |
| <LI>3 - Programs</LI> |
| <LI>4 - Scheduler Objects</LI> |
| <LI>A - Glossary</LI> |
| </UL> |
| <H1><A NAME="2">2 References</A></H1> |
| <H2><A NAME="2_1">2.1 CUPS Documentation</A></H2> |
| <P>The following CUPS documentation is referenced by this document:</P> |
| <UL> |
| <LI>CUPS-CMP-1.2: CUPS Configuration Management Plan</LI> |
| <LI>CUPS-IDD-1.2: CUPS System Interface Design Description</LI> |
| <LI>CUPS-IPP-1.2: CUPS Implementation of IPP</LI> |
| <LI>CUPS-SAM-1.2.x: CUPS Software Administrators Manual</LI> |
| <LI>CUPS-SDD-1.2: CUPS Software Design Description</LI> |
| <LI>CUPS-SPM-1.2.x: CUPS Software Programming Manual</LI> |
| <LI>CUPS-SSR-1.2: CUPS Software Security Report</LI> |
| <LI>CUPS-STP-1.2: CUPS Software Test Plan</LI> |
| <LI>CUPS-SUM-1.2.x: CUPS Software Users Manual</LI> |
| <LI>CUPS-SVD-1.2: CUPS Software Version Description</LI> |
| </UL> |
| <H2><A NAME="2_2">2.2 Other Documents</A></H2> |
| <P>The following non-CUPS documents are referenced by this document:</P> |
| <UL> |
| <LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf"> |
| Adobe PostScript Printer Description File Format Specification, Version |
| 4.3.</A></LI> |
| <LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf"> |
| Adobe PostScript Language Reference, Third Edition.</A></LI> |
| <LI>IPP: Job and Printer Set Operations</LI> |
| <LI>IPP/1.1: Encoding and Transport</LI> |
| <LI>IPP/1.1: Implementers Guide</LI> |
| <LI>IPP/1.1: Model and Semantics</LI> |
| <LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line Printer |
| Daemon Protocol</A></LI> |
| <LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design Goals |
| for an Internet Printing Protocol</A></LI> |
| <LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale |
| for the Structure of the Model and Protocol for the Internet Printing |
| Protocol</A></LI> |
| <LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping |
| between LPD and IPP Protocols</A></LI> |
| <LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext |
| Transfer Protocol -- HTTP/1.1</A></LI> |
| <LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP |
| Authentication: Basic and Digest Access</A> Authentication</LI> |
| </UL> |
| <H1><A NAME="3">3 Programs</A></H1> |
| <P>The following table describes the average memory, disk, and CPU usage |
| of each program in CUPS.</P> |
| <P>The base memory column shows the initial memory requirements for each |
| program, including any shared libraries that are provided by CUPS.</P> |
| <P>The max memory column shows the maximum amount of memory that will be |
| used by the program based upon the default configuration settings |
| supplied with CUPS.</P> |
| <P>The temp files column indicates whether any temporary files are |
| created.</P> |
| <P>The CPU usage column specifies a relative CPU usage by the program |
| under normal conditions, either low, medium, or high. Low usage |
| indicates that the program will never use more than 33% of the |
| available CPU time. Medium usage indicates the program will use as much |
| as 66% of the available CPU time. High usage indicates the program uses |
| 66% or more of the available CPU time. |
| <CENTER> |
| <TABLE BORDER="1" WIDTH="80%"> |
| <TR><TH COLSPAN="3">Backends</TH></TR> |
| <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp |
| Files</TH><TH>CPU Usage</TH></TR> |
| <TR><TD>ipp</TD><TD>91k</TD><TD>256k</TD><TD>Up to size of print file</TD><TD> |
| Low</TD></TR> |
| <TR><TD>lpd</TD><TD>89k</TD><TD>89k</TD><TD>Up to size of print file</TD><TD> |
| Low</TD></TR> |
| <TR><TD>parallel</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print |
| file</TD><TD>Low</TD></TR> |
| <TR><TD>serial</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD> |
| Low</TD></TR> |
| <TR><TD>socket</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD> |
| Low</TD></TR> |
| <TR><TD>usb</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD> |
| Low</TD></TR> |
| <TR><TH COLSPAN="3">CGIs</TH></TR> |
| <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp |
| Files</TH><TH>CPU Usage</TH></TR> |
| <TR><TD>admin.cgi</TD><TD>107k</TD><TD>256k</TD><TD>Up to size of PPD |
| file</TD><TD>Medium</TD></TR> |
| <TR><TD>classes.cgi</TD><TD>95k</TD><TD>Size of class objects</TD><TD> |
| None</TD><TD>Medium</TD></TR> |
| <TR><TD>jobs.cgi</TD><TD>93k</TD><TD>Size of job objects</TD><TD>None</TD><TD> |
| Medium</TD></TR> |
| <TR><TD>printers.cgi</TD><TD>95k</TD><TD>Size of printer objects</TD><TD> |
| None</TD><TD>Medium</TD></TR> |
| <TR><TH COLSPAN="3">Command-Line Programs</TH></TR> |
| <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp |
| Files</TH><TH>CPU Usage</TH></TR> |
| <TR><TD>accept</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>cancel</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>disable</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>enable</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lp</TD><TD>90k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lpadmin</TD><TD>148k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lpc</TD><TD>86k</TD><TD>Size of job and printer objects</TD><TD> |
| None</TD><TD>Medium</TD></TR> |
| <TR><TD>lpinfo</TD><TD>89k</TD><TD>Size of device and PPD objects</TD><TD> |
| None</TD><TD>Medium</TD></TR> |
| <TR><TD>lpmove</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lpoptions</TD><TD>89k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lppasswd</TD><TD>90k</TD><TD>90k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lpq</TD><TD>87k</TD><TD>Size of job objects</TD><TD>None</TD><TD> |
| Medium</TD></TR> |
| <TR><TD>lpr</TD><TD>87k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lprm</TD><TD>84k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>lpstat</TD><TD>119k</TD><TD>Size of job, printer, and class |
| objects</TD><TD>None</TD><TD>Medium</TD></TR> |
| <TR><TD>reject</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TH COLSPAN="3">Daemons</TH></TR> |
| <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp |
| Files</TH><TH>CPU Usage</TH></TR> |
| <TR><TD>cups-lpd</TD><TD>92k</TD><TD>256k</TD><TD>One file per control |
| or data file from client</TD><TD>Low</TD></TR> |
| <TR><TD>cupsd</TD><TD>308k</TD><TD>See Scheduler Requirements</TD><TD> |
| See Scheduler Requirements</TD><TD>Medium</TD></TR> |
| <TR><TD>cups-polld</TD><TD>84k</TD><TD>Size of printer and class objects</TD><TD> |
| None</TD><TD>Low</TD></TR> |
| <TR><TH COLSPAN="3">Filters</TH></TR> |
| <TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp |
| Files</TH><TH>CPU Usage</TH></TR> |
| <TR><TD>hpgltops</TD><TD>263k</TD><TD>320k</TD><TD>None</TD><TD>Medium</TD> |
| </TR> |
| <TR><TD>imagetops</TD><TD>628k</TD><TD>10M</TD><TD>Swap file for |
| uncompressed image data</TD><TD>Medium</TD></TR> |
| <TR><TD>imagetoraster</TD><TD>652k</TD><TD>10M</TD><TD>Swap file for |
| uncompressed image data</TD><TD>High</TD></TR> |
| <TR><TD>pstops</TD><TD>775k</TD><TD>840k</TD><TD>Up to size of print |
| file</TD><TD>Medium</TD></TR> |
| <TR><TD>pstoraster</TD><TD>4M</TD><TD>14M</TD><TD>Swap file for command |
| lists</TD><TD>High</TD></TR> |
| <TR><TD>rastertoepson</TD><TD>693k</TD><TD>1M</TD><TD>None</TD><TD>Low</TD> |
| </TR> |
| <TR><TD>rastertohp</TD><TD>690k</TD><TD>1M</TD><TD>None</TD><TD>Low</TD></TR> |
| <TR><TD>texttops</TD><TD>638k</TD><TD>4*cols*rows</TD><TD>None</TD><TD> |
| Low</TD></TR> |
| </TABLE> |
| </CENTER> |
| </P> |
| <H1><A NAME="4">4 Scheduler Objects</A></H1> |
| <P>The <CODE>cupsd</CODE> program is the CUPS scheduler process. It |
| manages many interdependent server objects that are used to manage and |
| print files to printers.</P> |
| <P>The following table provides the memory and disk cost associated with |
| each server object. |
| <CENTER> |
| <TABLE BORDER="1" WIDTH="80%"> |
| <TR><TH>Object</TH><TH>Memory Per</TH><TH>Disk Per</TH></TR> |
| <TR><TD>Browse ACL</TD><TD>1k</TD><TD>120</TD></TR> |
| <TR><TD>Browse Poll</TD><TD>24</TD><TD>80</TD></TR> |
| <TR><TD>Browse Relay</TD><TD>28</TD><TD>80</TD></TR> |
| <TR><TD>Certificate</TD><TD>76</TD><TD>32</TD></TR> |
| <TR><TD>Class</TD><TD>9k</TD><TD>200</TD></TR> |
| <TR><TD>Client</TD><TD>13k</TD><TD>-</TD></TR> |
| <TR><TD>Device</TD><TD>256</TD><TD>-</TD></TR> |
| <TR><TD>Job</TD><TD>2k</TD><TD>1k + size of document files</TD></TR> |
| <TR><TD>Location ACL</TD><TD>1k</TD><TD>120</TD></TR> |
| <TR><TD>MIME Filter</TD><TD>268</TD><TD>80</TD></TR> |
| <TR><TD>MIME Type</TD><TD>340</TD><TD>80</TD></TR> |
| <TR><TD>PPD</TD><TD>200</TD><TD>656</TD></TR> |
| <TR><TD>Printer</TD><TD>11k</TD><TD>32k</TD></TR> |
| </TABLE> |
| </CENTER> |
| </P> |
| <H1 TYPE="A" VALUE="1"><A NAME="5">A Glossary</A></H1> |
| <H2><A NAME="5_1">A.1 Terms</A></H2> |
| <DL> |
| <DT>C</DT> |
| <DD>A computer language.</DD> |
| <DT>parallel</DT> |
| <DD>Sending or receiving data more than 1 bit at a time.</DD> |
| <DT>pipe</DT> |
| <DD>A one-way communications channel between two programs.</DD> |
| <DT>serial</DT> |
| <DD>Sending or receiving data 1 bit at a time.</DD> |
| <DT>socket</DT> |
| <DD>A two-way network communications channel.</DD> |
| </DL> |
| <H2><A NAME="5_2">A.2 Acronyms</A></H2> |
| <DL> |
| <DT>ASCII</DT> |
| <DD>American Standard Code for Information Interchange</DD> |
| <DT>CUPS</DT> |
| <DD>Common UNIX Printing System</DD> |
| <DT>ESC/P</DT> |
| <DD>EPSON Standard Code for Printers</DD> |
| <DT>FTP</DT> |
| <DD>File Transfer Protocol</DD> |
| <DT>HP-GL</DT> |
| <DD>Hewlett-Packard Graphics Language</DD> |
| <DT>HP-PCL</DT> |
| <DD>Hewlett-Packard Page Control Language</DD> |
| <DT>HP-PJL</DT> |
| <DD>Hewlett-Packard Printer Job Language</DD> |
| <DT>IETF</DT> |
| <DD>Internet Engineering Task Force</DD> |
| <DT>IPP</DT> |
| <DD>Internet Printing Protocol</DD> |
| <DT>ISO</DT> |
| <DD>International Standards Organization</DD> |
| <DT>LPD</DT> |
| <DD>Line Printer Daemon</DD> |
| <DT>MIME</DT> |
| <DD>Multimedia Internet Mail Exchange</DD> |
| <DT>PPD</DT> |
| <DD>PostScript Printer Description</DD> |
| <DT>SMB</DT> |
| <DD>Server Message Block</DD> |
| <DT>TFTP</DT> |
| <DD>Trivial File Transfer Protocol</DD> |
| </DL> |
| </BODY> |
| </HTML> |