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.
For the purposes of comparison, all figures are for the Linux Intel platform. Memory utilization on other platforms should be similar.
CUPS provides a portable printing layer for UNIX®-based operating systems. It has been developed by Easy Software Products to promote a standard printing solution for all UNIX vendors and users. CUPS provides the System V and Berkeley command-line interfaces.
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.
CUPS includes an image file RIP that supports printing of image files to non-PostScript printers. A customized version of GNU Ghostscript 7.05 for CUPS called ESP Ghostscript is available separately to support printing of PostScript files within the CUPS driver framework. Sample drivers for Dymo, EPSON, HP, and OKIDATA printers are included that use these filters.
Drivers for thousands of printers are provided with our ESP Print Pro software, available at:
http://www.easysw.com/printpro/
CUPS is licensed under the GNU General Public License and GNU Library General Public License. Please contact Easy Software Products for commercial support and "binary distribution" rights.
This software performance specification is organized into the following sections:
The following CUPS documentation is referenced by this document:
The following non-CUPS documents are referenced by this document:
The following table describes the average memory, disk, and CPU usage of each program in CUPS.
The base memory column shows the initial memory requirements for each program, including any shared libraries that are provided by CUPS.
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.
The temp files column indicates whether any temporary files are created.
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.
Backends | ||||
---|---|---|---|---|
Program | Base Memory | Max Memory | Temp Files | CPU Usage |
ipp | 91k | 256k | Up to size of print file | Low |
lpd | 89k | 89k | Up to size of print file | Low |
parallel | 85k | 85k | Up to size of print file | Low |
serial | 85k | 85k | Up to size of print file | Low |
socket | 85k | 85k | Up to size of print file | Low |
usb | 85k | 85k | Up to size of print file | Low |
CGIs | ||||
Program | Base Memory | Max Memory | Temp Files | CPU Usage |
admin.cgi | 107k | 256k | Up to size of PPD file | Medium |
classes.cgi | 95k | Size of class objects | None | Medium |
jobs.cgi | 93k | Size of job objects | None | Medium |
printers.cgi | 95k | Size of printer objects | None | Medium |
Command-Line Programs | ||||
Program | Base Memory | Max Memory | Temp Files | CPU Usage |
accept | 88k | 128k | None | Low |
cancel | 88k | 128k | None | Low |
disable | 88k | 128k | None | Low |
enable | 88k | 128k | None | Low |
lp | 90k | 256k | None | Low |
lpadmin | 148k | 256k | None | Low |
lpc | 86k | Size of job and printer objects | None | Medium |
lpinfo | 89k | Size of device and PPD objects | None | Medium |
lpmove | 88k | 128k | None | Low |
lpoptions | 89k | 128k | None | Low |
lppasswd | 90k | 90k | None | Low |
lpq | 87k | Size of job objects | None | Medium |
lpr | 87k | 256k | None | Low |
lprm | 84k | 128k | None | Low |
lpstat | 119k | Size of job, printer, and class objects | None | Medium |
reject | 88k | 128k | None | Low |
Daemons | ||||
Program | Base Memory | Max Memory | Temp Files | CPU Usage |
cups-lpd | 92k | 256k | One file per control or data file from client | Low |
cupsd | 308k | See Scheduler Requirements | See Scheduler Requirements | Medium |
cups-polld | 84k | Size of printer and class objects | None | Low |
Filters | ||||
Program | Base Memory | Max Memory | Temp Files | CPU Usage |
hpgltops | 263k | 320k | None | Medium |
imagetops | 628k | 10M | Swap file for uncompressed image data | Medium |
imagetoraster | 652k | 10M | Swap file for uncompressed image data | High |
pstops | 775k | 840k | Up to size of print file | Medium |
pstoraster | 4M | 14M | Swap file for command lists | High |
rastertoepson | 693k | 1M | None | Low |
rastertohp | 690k | 1M | None | Low |
texttops | 638k | 4*cols*rows | None | Low |
The cupsd
program is the CUPS scheduler process. It
manages many interdependent server objects that are used to manage and
print files to printers.
The following table provides the memory and disk cost associated with each server object.
Object | Memory Per | Disk Per |
---|---|---|
Browse ACL | 1k | 120 |
Browse Poll | 24 | 80 |
Browse Relay | 28 | 80 |
Certificate | 76 | 32 |
Class | 9k | 200 |
Client | 13k | - |
Device | 256 | - |
Job | 2k | 1k + size of document files |
Location ACL | 1k | 120 |
MIME Filter | 268 | 80 |
MIME Type | 340 | 80 |
PPD | 200 | 656 |
Printer | 11k | 32k |