# CUPS Software Performance Specification

CUPS-SPS-1.1
Easy Software Products
Copyright 1997-2003, All Rights Reserved

# Table of Contents

1 Scope

- 1.1 Identification
- 1.2 System Overview
- 1.3 Document Overview

2 References

- 2.1 CUPS Documentation
- 2.2 Other Documents

3 Programs
4 Scheduler Objects
A Glossary

- A.1 Terms
- A.2 Acronyms

# 1 Scope

## 1.1 Identification

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.

## 1.2 System Overview

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.

## 1.3 Document Overview

This software performance specification is organized into the following sections:

- 1 - Scope
- 2 - References
- 3 - Programs
- 4 - Scheduler Objects
- A - Glossary

# 2 References

## 2.1 CUPS Documentation

The following CUPS documentation is referenced by this document:

- CUPS-CMP-1.1: CUPS Configuration Management Plan
- CUPS-IDD-1.1: CUPS System Interface Design Description
- CUPS-IPP-1.1: CUPS Implementation of IPP
- CUPS-SAM-1.1.x: CUPS Software Administrators Manual
- CUPS-SDD-1.1: CUPS Software Design Description
- CUPS-SPM-1.1.x: CUPS Software Programming Manual
- CUPS-SSR-1.1: CUPS Software Security Report
- CUPS-STP-1.1: CUPS Software Test Plan
- CUPS-SUM-1.1.x: CUPS Software Users Manual
- CUPS-SVD-1.1: CUPS Software Version Description

## 2.2 Other Documents

The following non-CUPS documents are referenced by this document:

- Adobe PostScript Printer Description File Format Specification, Version 4.3.
- Adobe PostScript Language Reference, Third Edition.
- IPP/1.1: Implementers Guide
- RFC 1179, Line Printer Daemon Protocol
- RFC 2396, Uniform Resource Identifiers (URI): Generic Syntax
- RFC 2567, Design Goals for an Internet Printing Protocol
- RFC 2568, Rationale for the Structure of the Model and Protocol for the Internet Printing Protocol
- RFC 2569, Mapping between LPD and IPP Protocols
- RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1
- RFC 2617, HTTP Authentication: Basic and Digest Access Authentication
- RFC 2910, IPP/1.1: Encoding and Transport
- RFC 2911, IPP/1.1: Model and Semantics
- RFC 3380, IPP: Job and Printer Set Operations

# 3 Programs

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

# 4 Scheduler Objects

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

# A Glossary

## A.1 Terms

C
  A computer language.
parallel
  Sending or receiving data more than 1 bit at a time.
pipe
  A one-way communications channel between two programs.
serial
  Sending or receiving data 1 bit at a time.
socket
  A two-way network communications channel.

## A.2 Acronyms

ASCII
  American Standard Code for Information Interchange
CUPS
  Common UNIX Printing System
ESC/P
  EPSON Standard Code for Printers
FTP
  File Transfer Protocol
HP-GL
  Hewlett-Packard Graphics Language
HP-PCL
  Hewlett-Packard Page Control Language
HP-PJL
  Hewlett-Packard Printer Job Language
IETF
  Internet Engineering Task Force
IPP
  Internet Printing Protocol
ISO
  International Standards Organization
LPD
  Line Printer Daemon
MIME
  Multimedia Internet Mail Exchange
PPD
  PostScript Printer Description
SMB
  Server Message Block
TFTP
  Trivial File Transfer Protocol