DOOL(1) DOOL(1) NAME dool - versatile tool for generating system resource statistics SYNOPSIS dool [-afv] [options..] [delay [count]] DESCRIPTION Dool is a versatile replacement for vmstat, iostat and ifstat. Dool overcomes some of the limitations and adds some extra features. Dool allows you to view all of your system resources instantly, 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). Dool also 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. 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. 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. 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) -- enable (external) plugins by plugin name, see PLUGINS for options 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 --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 PLUGINS While anyone can create their own dool plugins (and contribute them) dool ships with a number of plugins already that extend its capabilities greatly. Here is an overview of the plugins dool ships with: --battery battery in percentage (needs ACPI) --battery-remain battery remaining in hours, minutes (needs ACPI) --cpufreq CPU frequency in percentage (needs ACPI) --dbus number of dbus connections (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 --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 ARGUMENTS delay is the delay in seconds between each update count is the number of updates to display before exiting The default delay is 1 and count is unspecified (unlimited) INTERMEDIATE UPDATES When invoking dool with a delay greater than 1 and without the --noupdate option, it will show intermediate updates, ie. the first time a 1 sec average, the second update a 2 second average, etc. until the delay has been reached. So in case you specified a delay of 10, the 9 intermediate updates are NOT snapshots, they are averages over the time that passed since the last final update. The end result is that you get a 10 second average on a new line, just like with vmstat. 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: 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 Since it is practically impossible to test dool on every possible permutation of kernel, python or distribution version, I need 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. 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, e.g. if you have a black-on-white terminal: 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) Xorg related tools 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 Scott Baker 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 1.1.0 June 2023 DOOL(1)