<HTML> <HEAD> <META NAME="COPYRIGHT" CONTENT="Copyright 1997-2005, All Rights Reserved"> <META NAME="DOCNUMBER" CONTENT="CUPS-SPS-1.1"> <META NAME="Author" CONTENT="Easy Software Products"> <TITLE>CUPS Software Performance Specification</TITLE> </HEAD> <BODY> <H1>Scope</H1> <H2>Identification</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.1.</P> <P>For the purposes of comparison, all figures are for the Linux Intel platform. Memory utilization on other platforms should be similar. <EMBED SRC="system-overview.shtml"> <H2>Document Overview</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> <EMBED SRC="references.shtml"> <H1>Programs</H1> <P>The following table describes the average memory, disk, and CPU usage of each program in CUPS. <P>The base memory column shows the initial memory requirements for each program, including any shared libraries that are provided by CUPS. <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>The temp files column indicates whether any temporary files are created. <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 WIDTH="80%" BORDER="1"> <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> <H1>Scheduler Objects</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>The following table provides the memory and disk cost associated with each server object. <CENTER><TABLE WIDTH="80%" BORDER="1"> <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> <EMBED SRC="glossary.shtml"> </BODY> </HTML>