Speeding up printing

opensuse v11.2 linux 2.6.31.12-0.2-desktop x86_64

We have a networked Kyocera cs-3050 printer. When I print something to it, the Print window hangs for about a minute while the printer process queries the printer. This would be acceptable if it did happen EVERY TIME I printed a document.

Is there some way to have the printer driver cache the information instead of asking for it every time?

What it is more likely doing is processing your document into printer friendly format known as preprocess rendering. Unless you are always printing the identical pages or wish to manually send your jobs through the filtering program (which takes the same amount of time by the way) I would suspect the answer is no it can’t be sped up. Another possibility is that other tasks are running that have higher presidence than the printer or that your print jobs priority is lower than you may like.

Two possibilities:

  1. If you are using mDNS to locate the printer, it will be faster if you specify the domain name or the IP address.

  2. It’s rendering the page like techwiz03 says. You may be able to arrange the CUPS queue so that it the rendering is done in the background by handing it off to a CUPS server (even though it’s on the same machine). Can’t comment without details.

What it is more likely doing is processing your document into printer friendly format known as preprocess rendering.

What leads me to think that it is querying the printer is that there are three tabs in the Print window during the delay period, then suddenly there are 7 tabs when it is done.

I would suspect the answer is no it can’t be sped up.

That so sucks.

Possible that it is querying the printer, but usually it does nothing to/from the printer until the page is rendered. In trying to understand your problem, is it just the delay as it finalizes how you want the job printed before you can continue with the program you are printing from?

I have noticed this latency too when printing to network printers, and usually more noticeable when using generic postscript drivers. (I’ve always put that down to more data being transmitted than when using the native printer language, but I could be wrong here). It’s never concerned me, as I just get on with the next task and let CUPS do its thing.

to understand your problem, is it just the delay as it finalizes how you want the job printed before you can continue with the program you are printing from?

The delay begins as soon as the printer options window opens. I can do nothing in that window – choose pages, set double-sided, set number of pages per sheet, print – until the delay ends. Once the delay is over and I have chosen my options, printing itself proceeds quickly.

Ok this seems to indicate that it is waiting for printer specific info so as to determine what options etc can be used. Rendering won’t start until after you have choosen how you want it printed.

Ok this seems to indicate that it is waiting for printer specific info so as to determine what options etc can be used.

Okay. This brings us back to the original question: Is there a way to have the printer information cached so there is not the long delay every time?

Haven’t experienced this particular problem, but following this thread with interest. CUPS is very configurable, so I’m sure there’s an answer to this.

This reference mentions some of the cupsd.conf options available:

cupsd.conf - Documentation - CUPS

It may be possible to tune CUPS for better printing performance. In particular, I noticed a policy setting ‘Get-Printer-Attributes’ that may be relevant.

Maybe a good idea to post your /etc/cups/cupsd.conf

Maybe a good idea to post your /etc/cups/cupsd.conf

#
# "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $"
#
#   Sample configuration file for the Common UNIX Printing System (CUPS)
#   scheduler.  See "man cupsd.conf" for a complete description of this
#   file.
#

# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel info

# Administrator user group...
SystemGroup sys root


# Only listen for connections from the local machine.
Listen localhost:631
Listen /var/run/cups/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all

# Default authentication type, when authentication is required...
DefaultAuthType Basic

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 127.0.0.2
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Encryption Required
  Order allow,deny
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job-related operations must be done by the owner or an administrator...
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

DefaultPolicy default

# easy is a very relaxed policy
<Policy easy>
  # Job-related operations must be done by the owner or an administrator...
  <Limit All>
    Satisfy any
    Order allow,deny
  </Limit>
</Policy>

# paranoid is a very restricted policy
<Policy paranoid>
  # Job-related operations must be done by the owner
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
    Require user @OWNER
    Allow from 127.0.0.0/8
    Order deny,allow
  </Limit>
  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Allow from 127.0.0.0/8
    Order deny,allow
  </Limit>

  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Allow from 127.0.0.0/8
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER
    Allow from 127.0.0.0/8
    Order deny,allow
  </Limit>

  <Limit All>
    Require user @OWNER @SYSTEM
    Allow from 127.0.0.0/8
    Order deny,allow
  </Limit>
</Policy>

#
# End of "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $".
#

After searching arounf the internet, this is starting to look like a bug. For example, I found this Ubuntu bug report which described problems similar to yours, although it seemed to relate to gtk apps. It was mentioned the cupsd.conf could be edited like this

Workaround:
For now you may disable cups to listen on “/var/run/cups/cups.sock” by commenting the line including it in cupsd.conf and leave only “Listen localhost:631” line.

It might be worth a trying this workaround (by commenting out the line mentioned) and see whether that makes any difference for you. At the very least, it may be necessary to send a bug report.

I have a feeling that the behaviour depends on whether this printer queue is set up as a remote queue or a local queue. The difference is that in the former case a print command goes directly to the remote printer and hence has to wait for the printer to become active, while in the latter case, it is stored and forwarded, and the waiting is invisible to you. To check this you would have to look at how you set it up. It would be stored in printers.conf.

I have a feeling that the behaviour depends on whether this printer queue is set up as a remote queue or a local queue. The difference is that in the former case a print command goes directly to the remote printer and hence has to wait for the printer to become active, while in the latter case, it is stored and forwarded, and the waiting is invisible to you. To check this you would have to look at how you set it up. It would be stored in printers.conf.

I’ve been wondering what may be unique to the OP’s remote printer setup. (I have found using a direct IP address better than when name resolution is used for example). However, the OP says there is a delay even before print job is sent, while the printer option dialogue becomes available (if I understand correctly). (I have seen reports that this is a Qt 4 print dialogue issue with remote printers).