CUPS 1.3.6 - performance issue in Solaris

angelb angelb at bugarin.us
Tue Mar 25 15:32:48 PDT 2008


Here are some stats of CUPS 1.3.6 running in Solaris.

First, a brief stats on CUPS 1.3.5 followed by CUPS 1.3.6.

CUPS 1.3.5:

# grep VERSION cups-config
VERSION="1.3.5"
APIVERSION="1.3"

With LogLevel debug2:
# grep LogLevel cupsd.conf
LogLevel debug2

# timex lpstat -p|wc

real       22.88
user        3.07
sys         0.11

    2708   29788  167960

With LogLevel info:
# grep LogLevel cupsd.conf
LogLevel info

# timex lpstat -p|wc

real        3.69
user        2.97
sys         0.09

    2708   29788  167960


CUPS 1.3.6:
# grep VERSION cups-config
VERSION="1.3.6"
APIVERSION="1.3"

With LogLevel debug2:
sapts01f# grep LogLevel cupsd.conf
LogLevel debug2

# timex lpstat -p|wc
Command terminated abnormally.    <---- I've control-break out

real    14:10.63  <---- running for 14minutes
user       18.87
sys         3.75

Executing truss while lpstat is running, it looks like it's stuck in a
loop:

...
brk(0x052E2780)                                 = 0
brk(0x052E4780)                                 = 0
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
brk(0x052E4780)                                 = 0
brk(0x052E6780)                                 = 0
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
time()                                          = 1206482265
recv(5, " I\017 d o c u m e n t -".., 2048, 0)  = 2028
brk(0x052E6780)                                 = 0
brk(0x052E8780)                                 = 0
...


Stop cupsd and then restart to create the remote.cache file,
the lpstat then completed sooner(not faster):

# /etc/abinit.d/cups stop
Stopping the CUPS IPP Print System.

# /etc/abinit.d/cups start
CUPS IPP Print System starting.
#
# timex lpstat -p|wc

real       23.11
user        3.01
sys         0.10


With LogLevel info:
# grep LogLevel cupsd.conf
LogLevel info

# timex lpstat -p|wc

real        3.70
user        2.98
sys         0.09

    2708   29788  167960


Conclusion:
CUPS 1.3.6 appears to have the same issues I've encountered in CUPS
1.3.5. Two unrelated objects appears to affect CUPS 1.3 performance
and they are the remote.cache and LogLevel.

When a client starts for the first time, and LogLevel is set at debug2,
and the client have completed polling server for the printers list,
when running an lpstat, it goes into what appears to be a loop.
However, after stoping and starting cupsd, it creates the remote.cache
file and then the lpstat command comes back after ~23seconds.

Now, when LogLevel is set to info(whether remote.cache exist or not),
the lpstat command comes bakup after ~3seconds.


I have another Solaris system that I'll be testing CUPS 1.3.6 and see
if I can duplicate the issues. I'm not optimistic CUPS 1.3.6 will be
any different since I've installed CUPS 1.3.5 on both Solaris boxes,
they both had the same issues.


Thanks,
Angel




More information about the cups mailing list