Spot Bottle


Command line resource monitor for spotting bottlenecks. Displays disk, network, CPU, RAM, and process bottleneck information.

The purpose of this program is to get an idea of where a system performance bottleneck is coming from, whether that be hard drive related, bandwidth related, or something else. The program attempts to give the name of the process which is most likely to be causing a bottleneck.

I have this running all of the time in the corner of my screen so I can always see network and disk activity. I propose shrinking the command prompt text size from 8×12 to 6×8, in the Font tab of the Properties window.


SPOTBOTTLE [/T seconds] [/L logfile] /TSV /H

  • /T Indicates the time delay between data collection is given, in seconds. Defaults to 1 second. May be a decimal.
  • /L Indicates an output logfile name is given. Warning: No write buffer is used. Use a large [/T seconds].
  • /TSV Tab Separated Values. Disables smart formatting for tabs instead.
  • /H Displays this usage/help text.

Data Collected:

  • Disk% — Percent Disk Read/Write Time for the physical disk most in use. Internally calculated for all physical disks and then the highest is displayed to catch a disk-related bottleneck. Hard disk drives are often the cause of a slow computer.
  • Download — Bytes downloaded, summed across all network interfaces.
  • Upload — Bytes uploaded, summed across all network interfaces.
  • CPU% — Percent Processor Usage Time, averaged across all processor cores.
  • RAM% — Percent Physical RAM used.

Bottleneck Cause Key:

  • CPU: Indicates CPU bottleneck. Displays the estimated percent CPU time the process used.
  • RIO: Indicates Read-bytes I/O bottleneck. Used as an estimation to determine per-process download bytes.
  • WIO: Indicates Write-bytes I/O bottleneck. Used as an estimation to determine per-process upload bytes.
  • TIO: Indicates Total-bytes I/O bottleneck. Used as an estimation to determine per-process percent disk usage.

Data Collection Note:

This program uses the Windows Performance Counters API, which by default does not track process IDs (PIDs) along with process names. This will cause gaps in the displayed data when a new process is created or destroyed, because process names are not unique. To enable tracking of PIDs, run this program once as an administrator and the setting will be enabled if not already set. Further calls to this program will not require administrator rights.

Example Usage:



SPOTBOTTLE /T 10 /L C:\logfile.txt /TSV


Written in C++. Only uses Windows API.

Source Code



Spot Bottle v2.0

Release Date: 2017-04-11

Additions in version 2.0:

  • Track PIDs and process raw values to prevent data gaps.
  • Configure the PDH library to display PIDs if ran as administrator.
  • Command line arguments added:
    • Change time delay from 1 second to user-specified.
    • Output to logfile.
    • Output tab separated values.
  • More wide character support.

Source Code: source.zipsource.gar.gz

Spot Bottle v1.0

Release Date: 2017-02-19
Initial working release. Completely rewritten from code I wrote a long time ago.
Source Code: source.zipsource.tar.gz

Leave a Reply

Your email address will not be published.