DOOL(1)

๐Ÿ“ฆ version 1.3.8, in arch rolling, nixos 26.05, nixpkgs unstable

okay bestie, welcome to the DOOL(1) manual page for dool, the versatile tool for generating system resource statistics ๐Ÿ’…โœจ

๐ŸŽ€ NAME ๐ŸŽ€

dool โ€” versatile tool for generating system resource statistics. That's the whole assignment, and she eats every time ๐Ÿ’–

๐ŸŒธ SYNOPSIS ๐ŸŒธ

dool [-afv] [options..] [delay [count]]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Okay so dool is a versatile replacement for vmstat, iostat and ifstat. She overcomes some of the limitations and adds some extra features โ€” not me showing up with the glow-up ๐Ÿ”ฅ

dool lets you view all of your system resources instantly. Like, you can eg. compare disk usage in combination with interrupts from your IDE controller, or compare the network bandwidth numbers directly with the disk throughput (in the same interval). Bestie, same interval is the moment ๐Ÿ‘‘

Also, dool cleverly gives you the most detailed information in columns and clearly indicates in what magnitude and unit the output is displayed. Less confusion, less mistakes, more efficient. Periodt ๐Ÿ’…

dool is unique in letting you aggregate block device throughput for a certain diskset or network bandwidth for a group of interfaces, ie. you can see the throughput for all the block devices that make up a single filesystem or storage system. That's main character energy for your storage ๐Ÿซถ

And yes, dool allows its data to be directly written to a CSV file to be imported and used by OpenOffice, Gnumeric or Excel to create graphs. Graphs? Obsessed ๐Ÿ“ˆโœจ

๐Ÿ’œ OPTIONS ๐Ÿ’œ

  • -c, --cpu โ€” enable cpu stats (system, user, idle, wait), for more CPU related stats also see --cpu-adv and --cpu-use
  • -C 0,3,total โ€” include cpu0, cpu3 and total (when using -c/--cpu); use all to show all CPUs
  • -d, --disk โ€” enable disk stats (read, write), for more disk related stats look into the other --disk plugins
  • -D total,sda โ€” include total and sda (when using --disk)
  • --diskset diskset_name:dev1,dev2,dev3,etc... โ€” group several disks together and report aggregate stats (when using --disk)
  • -g, --page โ€” enable page stats (page in, page out)
  • -i, --int โ€” enable interrupt stats
  • -I 5,10 โ€” include interrupt 5 and 10 (when using -i/--int)
  • -l, --load โ€” enable load average stats (1 min, 5 mins, 15mins)
  • -m, --mem โ€” enable memory stats (used, buffers, cache, free); for more memory related stats also try --mem-adv and --swap
  • -n, --net โ€” enable network stats (receive, send)
  • -N eth1,total โ€” include eth1 and total (when using -n/--net)
  • -p, --proc โ€” enable process stats (runnable, uninterruptible, new)
  • -r, --io โ€” enable I/O request stats (read, write requests)
  • -s, --swap โ€” enable swap stats (used, free)
  • -S swap1,total โ€” include swap1 and total (when using -s/--swap)
  • -t, --time โ€” enable time/date output
  • -T, --epoch โ€” enable time counter (seconds since epoch)
  • -y, --sys โ€” enable system stats (interrupts, context switches)
  • --aio โ€” enable aio stats (asynchronous I/O)
  • --cpu-adv โ€” enable advanced cpu stats
  • --cpu-use โ€” enable only cpu usage stats
  • --fs, --filesystem โ€” enable filesystem stats (open files, inodes)
  • --ipc โ€” enable ipc stats (message queue, semaphores, shared memory)
  • --lock โ€” enable file lock stats (posix, flock, read, write)
  • --mem-adv โ€” enable advanced memory stats
  • --raw โ€” enable raw stats (raw sockets)
  • --socket โ€” enable socket stats (total, tcp, udp, raw, ip-fragments)
  • --tcp โ€” enable tcp stats (listen, established, syn, time_wait, close)
  • --udp โ€” enable udp stats (listen, active)
  • --unix โ€” enable unix stats (datagram, stream, listen, active)
  • --vm โ€” enable vm stats (hard pagefaults, soft pagefaults, allocated, free)
  • --vm-adv โ€” enable advance vm stats (steal, scanK, scanD, pgoru, astll)
  • --zones โ€” enable zoneinfo stats (d32F, d32H, normF, normH)
  • --<plugin-name> โ€” enable (external) plugins by plugin name, see PLUGINS for options
  • --list โ€” list the internal and external plugin names
  • -a, --all โ€” equals -cdngy (default)
  • -f, --full โ€” expand -C, -D, -I, -N and -S discovery lists
  • -v, --vmstat โ€” equals -pmgdsc -D total
  • --bits โ€” force bits for values expressed in bytes
  • --bytes โ€” force bytes for values expressed in bits
  • --float โ€” force float values on screen (mutual exclusive with --integer)
  • --integer โ€” force integer values on screen (mutual exclusive with --float)
  • --color โ€” force 256 color output (default)
  • --color16 โ€” force 16 color
  • --bw, --blackonwhite โ€” change colors for white background terminal
  • --nocolor โ€” disable colors
  • --noheaders โ€” disable repetitive headers
  • --noupdate โ€” disable intermediate updates when delay > 1
  • --output file โ€” write CSV output to file
  • --display โ€” output tabular data to the display. Useful in conjunction with --output to display on screen and write to a file at the same time
  • --dstat โ€” enable legacy Dstat output mode
  • --profile โ€” show profiling statistics when exiting dool
  • --ascii โ€” output table data in ascii instead of ANSI

Possible internal stats are:

aio, cpu, cpu24, cpu-adv, cpu-use, disk, disk24, disk24-old, epoch, fs, int, int24, io, ipc, load, lock, mem, mem-adv, net, page, page24, proc, raw, socket, swap, swap-old, sys, tcp, time, udp, unix, vm, vm-adv, zones

๐Ÿ”Œ PLUGINS โœจ

okay so bestie, here's the tea: literally anyone can make their own dool plugins (and contribute them back, we love a community moment ๐Ÿ’–). but dool already ships with a whole squad of plugins that highkey extend what it can do. here's the full rundown, no skips, no cuts:

  • --battery โ€” battery percentage (needs ACPI)
  • --battery-remain โ€” how much battery you got left, in hours and minutes (needs ACPI)
  • --cpufreq โ€” CPU frequency, as a percentage (needs ACPI)
  • --dbus โ€” how many dbus connections are out here (needs python-dbus)
  • --disk-avgqu โ€” average queue length of the requests that were issued to the device
  • --disk-avgrq โ€” average size (in sectors) of the requests that were issued to the device
  • --disk-svctm โ€” average service time (in milliseconds) for I/O requests that were issued to the device
  • --disk-tps โ€” number of transfers per second that were issued to the device
  • --disk-util โ€” percentage of CPU time during which I/O requests were issued to the device (bandwidth utilization for the device)
  • --disk-wait โ€” average time (in milliseconds) for I/O requests issued to the device to be served
  • --dool โ€” show dool cputime consumption and latency
  • --dool-cpu โ€” show dool advanced cpu usage
  • --dool-ctxt โ€” show dool context switches
  • --dool-mem โ€” show dool advanced memory usage
  • --fan โ€” fan speed (needs ACPI)
  • --freespace โ€” per filesystem disk usage
  • --gpfs โ€” GPFS read/write I/O (needs mmpmon)
  • --gpfs-ops โ€” GPFS filesystem operations (needs mmpmon)
  • --helloworld โ€” Hello world example dool plugin
  • --innodb-buffer โ€” show innodb buffer stats
  • --innodb-io โ€” show innodb I/O stats
  • --innodb-ops โ€” show innodb operations counters
  • --lustre โ€” show lustre I/O throughput
  • --lnet โ€” show lustre network I/O stats
  • --md-status โ€” show software raid (md) progress and speed
  • --memcache-hits โ€” show the number of hits and misses from memcache
  • --mysql5-cmds โ€” show the MySQL5 command stats
  • --mysql5-conn โ€” show the MySQL5 connection stats
  • --mysql5-innodb โ€” show the MySQL5 innodb stats
  • --mysql5-io โ€” show the MySQL5 I/O stats
  • --mysql5-keys โ€” show the MySQL5 keys stats
  • --mysql-io โ€” show the MySQL I/O stats
  • --mysql-keys โ€” show the MySQL keys stats
  • --net-packets โ€” show the number of packets received and transmitted
  • --nfs3 โ€” show NFS v3 client operations
  • --nfs3-ops โ€” show extended NFS v3 client operations
  • --nfsd3 โ€” show NFS v3 server operations
  • --nfsd3-ops โ€” show extended NFS v3 server operations
  • --nfsd4-ops โ€” show extended NFS v4 server operations
  • --nfsstat4 โ€” show NFS v4 stats
  • --ntp โ€” show NTP time from an NTP server
  • --postfix โ€” show postfix queue sizes (needs postfix)
  • --power โ€” show power usage
  • --proc-count โ€” show total number of processes
  • --qmail โ€” show qmail queue sizes (needs qmail)
  • --redis โ€” show redis stats
  • --rpc โ€” show RPC client calls stats
  • --rpcd โ€” show RPC server calls stats
  • --sendmail โ€” show sendmail queue size (needs sendmail)
  • --snmp-cpu โ€” show CPU stats using SNMP from DOOL_SNMPSERVER
  • --snmp-load โ€” show load stats using SNMP from DOOL_SNMPSERVER
  • --snmp-mem โ€” show memory stats using SNMP from DOOL_SNMPSERVER
  • --snmp-net โ€” show network stats using SNMP from DOOL_SNMPSERVER
  • --snmp-net-err โ€” show network errors using SNMP from DOOL_SNMPSERVER
  • --snmp-sys โ€” show system stats (interrupts and context switches) using SNMP from DOOL_SNMPSERVER
  • --snooze โ€” show number of ticks per second
  • --squid โ€” show squid usage statistics
  • --test โ€” show test plugin output
  • --thermal โ€” system temperature sensors
  • --top-bio โ€” show most expensive block I/O process
  • --top-bio-adv โ€” show most expensive block I/O process (incl. pid and other stats)
  • --top-childwait โ€” show process waiting for child the most
  • --top-cpu โ€” show most expensive CPU process
  • --top-cpu-adv โ€” show most expensive CPU process (incl. pid and other stats)
  • --top-cputime โ€” show process using the most CPU time (in ms)
  • --top-cputime-avg โ€” show process with the highest average timeslice (in ms)
  • --top-int โ€” show most frequent interrupt
  • --top-io โ€” show most expensive I/O process
  • --top-io-adv โ€” show most expensive I/O process (incl. pid and other stats)
  • --top-latency โ€” show process with highest total latency (in ms)
  • --top-latency-avg โ€” show process with the highest average latency (in ms)
  • --top-mem โ€” show process using the most memory
  • --top-oom โ€” show process that will be killed by OOM the first
  • --utmp โ€” show number of utmp connections (needs python-utmp)
  • --vm-cpu โ€” show VMware CPU stats from hypervisor
  • --vm-mem โ€” show VMware memory stats from hypervisor
  • --vm-mem-adv โ€” show advanced VMware memory stats from hypervisor
  • --vmk-hba โ€” show VMware ESX kernel vmhba stats
  • --vmk-int โ€” show VMware ESX kernel interrupt stats
  • --vmk-nic โ€” show VMware ESX kernel port stats
  • --vz-cpu โ€” show CPU usage per OpenVZ guest
  • --vz-io โ€” show I/O usage per OpenVZ guest
  • --vz-ubc โ€” show OpenVZ user beancounters
  • --wifi โ€” wireless link quality and signal to noise ratio
  • --zfs-arc โ€” show ZFS arc stats
  • --zfs-l2arc โ€” show ZFS l2arc stats
  • --zfs-zil โ€” show ZFS zil stats

like, that's the whole menu bestie, go wild ๐Ÿ“


๐Ÿงฎ ARGUMENTS ๐Ÿ’…

  • delay โ€” the delay in seconds between each update
  • count โ€” the number of updates to display before exiting

the default delay is 1, and count is unspecified (which means unlimited, she just goes and goes ๐Ÿ‘‘


โณ INTERMEDIATE UPDATES ๐ŸŒธ

okay so this is such a cute detail. when you invoke dool with a delay greater than 1 and you don't pass the --noupdate option, it shows you intermediate updates โ€” like, the first time it's a 1 sec average, the second update is a 2 second average, etc., all the way until it hits your delay.

so if you specified a delay of 10, those 9 intermediate updates are NOT snapshots, bestie โ€” they're averages over the time that passed since the last final update. the end result? you get a 10 second average on a new line, just like with vmstat. iconic behavior honestly โœจ


๐ŸŽ€ EXAMPLES ๐Ÿซถ

using dool to relate disk-throughput with network-usage (eth0), total CPU-usage and system counters:

dool -dnyc -N eth0 -C total -f 5

checking dool's behaviour and the system impact of dool (yes she's self-aware, main character energy):

dool -taf --debug

using the time plugin together with cpu, net, disk, system, load, proc and top_cpu plugins:

dool -tcndylp --top-cpu

this is identical to

dool --time --cpu --net --disk --sys --load --proc --top-cpu

using dool to relate advanced cpu stats with interrupts per device:

dool -t --cpu-adv -yif

๐Ÿ’€ BUGS ๐Ÿ˜ญ

so real talk: since it is practically impossible to test dool on every possible permutation of kernel, python or distribution version, the maintainer needs your help and your feedback to fix the remaining problems. if you have improvements or bugreports, please send them to: dag@wieers.com[1]

๐Ÿ“Œ Note please see the TODO file for known bugs and future plans. (iykyk ๐Ÿ‘€)

๐Ÿ“ FILES ๐ŸŽ€

paths that may contain external dool_*.py plugins:

~/.dool/
(path of binary)/plugins/
/usr/share/dool/
/usr/local/share/dool/

๐ŸŒˆ ENVIRONMENT VARIABLES ๐Ÿฆ‹

dool will read additional command line arguments from the environment variable DOOL_OPTS. you can use this to configure dool's default behavior โ€” like, say, if you have a black-on-white terminal (we don't judge, but likeโ€ฆ okay we kinda do ๐Ÿ™ˆ):

export DOOL_OPTS="--bw --noupdate"

other internal or external plugins have their own environment variables to influence their behavior, e.g.

DOOL_NTPSERVER

DOOL_MYSQL
DOOL_MYSQL_HOST
DOOL_MYSQL_PORT
DOOL_MYSQL_SOCKET
DOOL_MYSQL_USER
DOOL_MYSQL_PWD

DOOL_SNMPSERVER
DOOL_SNMPCOMMUNITY

DOOL_SQUID_OPTS

DOOL_TIMEFMT

๐Ÿ‘€ SEE ALSO ๐Ÿ’œ

๐Ÿš€ Performance tools

htop(1), ifstat(1), iftop(8), iostat(1), mpstat(1), netstat(8), nfsstat(8), perf(1), powertop(1), rtacct(8), top(1), vmstat(8), xosview(1)

๐Ÿ” Process tracing

lslk(8), lsof(8), ltrace(1), pidstat(1), pmap(1), ps(1), pstack(1), strace(1)

๐Ÿงš Binary debugging

ldd(1), file(1), nm(1), objdump(1), readelf(1)

๐Ÿง  Memory usage tools

free(1), memusage, memusagestat, ps_mem(1), slabtop(1), smem(8)

๐Ÿงพ Accounting tools

acct(2), dump-acct(8), dump-utmp(8), lastcomm(1), sa(8)

๐Ÿ”ง Hardware debugging tools

dmidecode(8), ifinfo(1), lsdev(1), lshal(1), lshw(1), lsmod(8), lspci(8), lsusb(8), numactl(8), smartctl(8), turbostat(8), x86info(1)

๐Ÿ“ฌ Application debugging

mailstats(8), qshape(1)

xdpyinfo(1), xrestop(1)

๐ŸŒŸ Other useful info

collectl(1), proc(5), procinfo(8)


๐Ÿ‘‘ AUTHOR ๐Ÿ’–

dool is maintained by Scott Baker scott@perturb.org[2]

homepage at https://github.com/scottchiefbaker/dool

dstat originally written by Dag Wieers dag@wieers.com[1]

homepage at http://dag.wieers.com/home-made/dstat/

this manpage was initially written by Andrew Pollock apollock@debian.org[3] for the Debian GNU/Linux system.


๐Ÿ‘‘ AUTHOR (yes, again, she said it twice and she's right) โญ

Scott Baker <scott@perturb.org>

  • Author.

๐Ÿ“ NOTES ๐ŸŽ€

  1. dag@wieers.com mailto:dag@wieers.com
  2. scott@perturb.org mailto:scott@perturb.org
  3. apollock@debian.org mailto:apollock@debian.org

and that's the whole page bestie, you ate that ๐Ÿซถ this lil beauty is 1.3.0, dated October 2024, and it lives at DOOL(1) โ€” go forth and monitor your little heart out ๐Ÿ’…โœจ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from