A user reported that her system had been running abysmally slow for quite awhile. I scanned the system for malware, but found none. Instead, I found the problem to be a multitude of
hpboid.exe
and hpbpro.exe
processes running on the system. I've
seen this problem before and
many others have experienced the same problem. The processes are associated
with an HP printer - this user shares an HP printer, which is connected by USB
to her system, with others on her Local Area Network (LAN). It appears that
they are created when someone sends output to the printer associated with
the processes.
Below shows the number I found once when I checked to see how many of each of these processes was running. I've seen even more instances of the processes running at other times. They consume memory and, when a significant number of them accumulate, they can slow a system significantly.
C:\Documents and Settings\Administrator>tasklist /fi "imagename eq hpboid.exe" Image Name PID Session Name Session# Mem Usage ========================= ====== ================ ======== ============ HPBOID.EXE 4044 Console 0 532 K HPBOID.EXE 3152 Console 0 572 K HPBOID.EXE 3748 Console 0 580 K HPBOID.EXE 1340 Console 0 560 K HPBOID.EXE 3712 Console 0 576 K HPBOID.EXE 1984 Console 0 576 K HPBOID.EXE 760 Console 0 780 K HPBOID.EXE 3412 Console 0 772 K HPBOID.EXE 3772 Console 0 776 K HPBOID.EXE 2756 Console 0 776 K HPBOID.EXE 1372 Console 0 740 K HPBOID.EXE 5636 Console 0 796 K HPBOID.EXE 4200 Console 0 2,308 K HPBOID.EXE 5472 Console 0 2,324 K HPBOID.EXE 960 Console 0 2,316 K HPBOID.EXE 836 Console 0 2,312 K C:\Documents and Settings\Administrator>tasklist /fi "imagename eq hpbpro.exe" Image Name PID Session Name Session# Mem Usage ========================= ====== ================ ======== ============ HPBPRO.EXE 2460 Console 0 552 K HPBPRO.EXE 1476 Console 0 568 K HPBPRO.EXE 4028 Console 0 584 K HPBPRO.EXE 2708 Console 0 776 K HPBPRO.EXE 5056 Console 0 2,384 K
I created a batch file, kill_hp_processes.bat to deal with the problem.
@echo off
REM Name: kill_hp_processes.bat
REM Created by: Jim Cameron
REM Created on: July 9, 2010
REM Last updated: July 16, 2010
REM Version: 1.2
REM Description:
REM Check for errant HP processes: hpboid and hpbpro.exe.
REM These processes can start and never end until the system
REM is rebooted. When they accumulate they can consume
REM significant amounts of memory and potentially CPU cycles
REM reaching the point where the system's performance is
REM considerably degraded.
REM Specify log file
set log="c:\kill_hp_processes.log"
REM Put the date and time in the log file
echo %date% %time% >> %log%
REM List the hpboid.exe processes running.
tasklist /fi "imagename eq hpboid.exe" >> %log%
REM Count the number of hpboid.exe processes running.
for /f "delims=" %%a in ('tasklist /fi "imagename eq hpboid.exe" ^| find /c /i "hpboid.exe"') do set numprocesses=%%a
echo.
echo Number of hpboid.exe processes running: %numprocesses% >> %log%
if %numprocesses$ NEQ 0 taskkill /f /fi "imagename eq hpboid.exe"
REM List the hpbpro.exe processes running.
tasklist /fi "imagename eq hpbpro.exe" >> %log%
REM Count the number of hpbpro.exe processes running.
for /f "delims=" %%a in ('tasklist /fi "imagename eq hpbpro.exe" ^| find /c /i "hpbpro.exe"') do set numprocesses=%%a
echo.
echo Number of hpbpro.exe processes running: %numprocesses% >> %log%
if %numprocesses$ NEQ 0 taskkill /f /fi "imagename eq hpbpro.exe"
REM put a blank line in the file to separate the entries added at this time
REM from those that will be added at a later time.
echo.
I log the killing of the errant HP processes to see how many are killed every time the batch job runs. Log file entries for a particular instance of the batch file running are shown below:
Fri 07/16/2010 15:00:00.71 Image Name PID Session Name Session# Mem Usage ========================= ====== ================ ======== ============ HPBOID.EXE 4044 Console 0 532 K HPBOID.EXE 3152 Console 0 572 K HPBOID.EXE 3748 Console 0 580 K HPBOID.EXE 1340 Console 0 560 K HPBOID.EXE 3712 Console 0 576 K HPBOID.EXE 1984 Console 0 576 K HPBOID.EXE 760 Console 0 780 K HPBOID.EXE 3412 Console 0 772 K HPBOID.EXE 3772 Console 0 776 K HPBOID.EXE 2756 Console 0 776 K HPBOID.EXE 1372 Console 0 740 K HPBOID.EXE 5636 Console 0 796 K HPBOID.EXE 4200 Console 0 2,308 K HPBOID.EXE 5472 Console 0 2,324 K HPBOID.EXE 960 Console 0 2,316 K HPBOID.EXE 836 Console 0 2,312 K Number of hpboid.exe processes running: 16 Image Name PID Session Name Session# Mem Usage ========================= ====== ================ ======== ============ HPBPRO.EXE 2460 Console 0 552 K HPBPRO.EXE 1476 Console 0 568 K HPBPRO.EXE 4028 Console 0 584 K HPBPRO.EXE 2708 Console 0 776 K HPBPRO.EXE 5056 Console 0 2,384 K Number of hpbpro.exe processes running: 5
I used the Windows at
command to schedule the process to
run at 11:00 AM and 3:00 PM on weekdays to kill any instances of the two
processes. I used the at
command twice since when I first had
it running only at 3:00 PM, too many of the processes were accumulating
during the day before the batch job ran. I use progra~1
for the "program files" directory, when submitting the batch job to run
with the at
command, because that is a "shorthand" version that
Windows understands for that directory, which allows me not to worry about
spaces in the directory name.
C:\Documents and Settings\Administrator\My Documents>at 11:00 /every:M,T,W,Th,F c:\progra~1\utility\kill_hp_processes.bat Added a new job with job ID = 5 C:\Documents and Settings\Administrator\My Documents>at Status ID Day Time Command Line ------------------------------------------------------------------------------- 4 Each M T W Th F 3:00 PM c:\progra~1\utility\kill_hp_processes.bat 5 Each M T W Th F 11:00 AM c:\progra~1\utility\kill_hp_processes.bat
References:
-
Multiple Hbpoid.exe and Hpbpro.exe Processes Running
Date: October 23, 2008
MoonPoint Support -
HPBPRO.EXE & HPBOID.EXE
Date: February 12, 2007
Hewlett-Packard Development Company, L.P.