4d8160873db93f0b7b9e3ca8cc40839466d91f4d
[virt-top.git] / src / virt-top.pod
1 =head1 NAME
2
3 virt-top - 'top'-like utility for virtualization stats
4
5 =head1 SUMMARY
6
7 virt-top [-options]
8
9 =head1 DESCRIPTION
10
11 virt-top is a L<top(1)>-like utility for showing stats of virtualized
12 domains.  Many keys and command line options are the same as for
13 ordinary I<top>.
14
15 It uses libvirt so it is capable of showing stats across a variety of
16 different virtualization systems.
17
18 =head1 OPTIONS
19
20 =over 4
21
22 =item B<-1>
23
24 Display physical CPUs by default (instead of domains).
25
26 Under each domain column, two numbers are shown.  The first is
27 the percentage of the physical CPU used by the domain and the
28 hypervisor together.  The second is the percentage used by just
29 the domain.
30
31 When virt-top is running, use the I<1> key to toggle
32 between physical CPUs and domains display.
33
34 =item B<-2>
35
36 Display network interfaces by default (instead of domains).
37 When virt-top is running, use the I<2> key to toggle
38 between network interfaces and domains display.
39
40 =item B<-3>
41
42 Display block devices (virtual disks) by default (instead of domains).
43 When virt-top is running, use the I<3> key to toggle
44 between block devices and domains display.
45
46 =item B<-b>
47
48 Batch mode.  In this mode keypresses are ignored.
49
50 =item B<-c uri> or B<--connect uri>
51
52 Connect to the libvirt URI given.
53
54 To connect to QEMU/KVM you would normally do I<-c qemu:///system>
55
56 To connect to Xen on the same host, do I<-c xen:///>
57
58 To connect to libvirtd on a remote machine you would normally do
59 I<-c qemu://host/system>
60
61 If this option is not given then virt-top connects by default
62 to whatever is the default hypervisor for libvirt, although
63 this can be overridden by setting environment variables.
64
65 See the libvirt documentation at L<http://libvirt.org/uri.html>
66 for further information.
67
68 =item B<-d delay>
69
70 Set the delay between screen updates in seconds.
71 The default is 3.0 seconds.  You can change this
72 while virt-top is running by pressing either I<s> or I<d> key.
73
74 =item B<-n iterations>
75
76 Set the number of iterations to run.  The default
77 is to run continuously.
78
79 =item B<-o sort>
80
81 Set the sort order to one of:
82 B<cpu> (sort by %CPU used),
83 B<mem> (sort by total memory),
84 B<time> (sort by total time),
85 B<id> (sort by domain ID),
86 B<name> (sort by domain name),
87 B<netrx> (sort by network received bytes),
88 B<nettx> (sort by network transmitted bytes),
89 B<blockrdrq> (sort by block device [disk] read requests),
90 B<blockwrrq> (sort by block device [disk] write requests).
91
92 While virt-top is running you can change the sort
93 order using keys I<P> (cpu), I<M> (memory),
94 I<T> (total time), I<N> (domain ID),
95 I<F> (interactively select the sort field).
96
97 =item B<-s>
98
99 Secure mode.  Currently this does nothing.
100
101 =item B<--hist-cpu secs>
102
103 Set the time in seconds between updates of the historical
104 %CPU at the top right of the display.
105
106 =item B<--csv file.csv>
107
108 Write the statistics to file I<file.csv>.  First a header is written
109 showing the statistics being recorded in each column, then one line is
110 written for each screen update.  The CSV file can be loaded directly
111 by most spreadsheet programs.
112
113 Currently the statistics which this records vary between releases of
114 virt-top (but the column headers will stay the same, so you can use
115 those to process the CSV file).
116
117 Not every version of virt-top supports CSV output - it depends how the
118 program was compiled (see I<README> file in the source distribution
119 for details).
120
121 To save space you can compress your CSV files (if your shell supports
122 this feature, eg. I<bash>):
123
124  virt-top --csv >(gzip -9 > output.csv.gz)
125
126 You can use a similar trick to split the CSV file up.  In this example
127 the CSV file is split every 1000 lines into files called
128 I<output.csv.00>, I<output.csv.01> etc.
129
130  virt-top --csv >(split -d -l 1000 - output.csv.)
131
132 =item B<--no-csv-cpu>
133
134 Disable domain CPU stats in CSV output.
135
136 =item B<--no-csv-mem>
137
138 Disable domain memory stats in CSV output.
139
140 =item B<--no-csv-block>
141
142 Disable domain block device stats in CSV output.
143
144 =item B<--no-csv-net>
145
146 Disable domain network interface stats in CSV output.
147
148 =item B<--debug filename>
149
150 Send debug and error messages to I<filename>.
151 To send error messages to syslog you can do:
152
153  virt-top --debug >(logger -t virt-top)
154
155 See also REPORTING BUGS below.
156
157 =item B<--init-file filename>
158
159 Read I<filename> as the init file instead of the default which is
160 I<$HOME/.virt-toprc>.  See also INIT FILE below.
161
162 =item B<--no-init-file>
163
164 Do not read any init file.
165
166 =item B<--script>
167
168 Script mode.  There will be no user interface.  This is most useful
169 when used together with the I<--csv> and I<-n> options.
170
171 =item B<--stream>
172
173 Stream mode.  All output is sent to stdout.  This can be used from
174 shell scripts etc.  There is no user interface.
175
176 =item B<--block-in-bytes>
177
178 Show I/O statistics in Bytes. Default is shown in the number of Requests.
179
180 =item B<--end-time time>
181
182 The program will exit at the I<time> given.
183
184 The time may be given in one of the following formats:
185
186 =over 4
187
188 =item I<YYYY-MM-DD HH:MM:SS>
189
190 End time is the date and time given.
191
192 =item I<HH:MM:SS>
193
194 End time is the time given, today.
195
196 =item I<+HH:MM:SS>
197
198 End time is HH hours, MM minutes, SS seconds in the future (counted
199 from the moment that program starts).
200
201 =item I<+secs>
202
203 End time is I<secs> seconds in the future.
204
205 =back
206
207 For example to run the program for 3 minutes you could do:
208
209  virt-top --end-time +00:03:00
210
211 or:
212
213  virt-top --end-time +180
214
215 Not every version of virt-top supports this option - it depends how the
216 program was compiled (see I<README> file in the source distribution
217 for details).
218
219 =item B<--help>
220
221 Display usage summary.
222
223 =item B<--version>
224
225 Display version number and exit.
226
227 =back
228
229 =head1 KEYS
230
231 Note that keys are case sensitive.  For example use upper-case I<P>
232 (shift P) to sort by %CPU.  I<^> before a key means a Ctrl key, so
233 I<^L> is Ctrl L.
234
235 =over 4
236
237 =item I<space> or I<^L>
238
239 Updates the display.
240
241 =item I<q>
242
243 Quits the program.
244
245 =item I<h>
246
247 Displays help.
248
249 =item I<s> or I<d>
250
251 Change the delay between screen updates.
252
253 =item I<B>
254
255 Toggle Block I/O statistics so they are shown in either bytes or requests.
256
257 =item I<0> (number 0)
258
259 Show the normal list of domains display.
260
261 =item I<1> (number 1)
262
263 Toggle into showing physical CPUs.  If pressed
264 again toggles back to showing domains (the normal
265 display).
266
267 =item I<2>
268
269 Toggle into showing network interfaces.  If pressed
270 again toggles back to showing domains.
271
272 =item I<3>
273
274 Toggle into showing block devices (virtual disks).  If pressed again
275 toggles back to showing domains.
276
277 =item I<P>
278
279 Sort by %CPU.
280
281 =item I<M>
282
283 Sort by total memory.  Note that this shows the total memory
284 allocated to the guest, not the memory being used.
285
286 =item I<T>
287
288 Sort by total time.
289
290 =item I<N>
291
292 Sort by domain ID.
293
294 =item I<F>
295
296 Select the sort field interactively (there are other
297 sort fields you can choose using this key).
298
299 =item I<W>
300
301 This creates or overwrites the init file with the current settings.
302
303 This key is disabled if I<--no-init-file> was specified on the
304 command line or if I<overwrite-init-file false> is given in
305 the init file.
306
307 =back
308
309 =head1 INIT FILE
310
311 When virt-top starts up, it reads initial settings from the
312 file I<.virt-toprc> in the user's home directory.
313
314 The name of this file may be overridden using the I<--init-file
315 filename> command line option or may be disabled entirely using
316 I<--no-init-file>.
317
318 The init file has a simple format.  Blank lines and comments
319 beginning with I<#> are ignored.  Everything else is a set of
320 I<key value> pairs, described below.
321
322 =over 4
323
324 =item B<display> I<task|pcpu|block|net>
325
326 Sets the major display mode to one of I<task> (tasks, the
327 default), I<pcpu> (physical CPUs), I<block> (block devices),
328 or I<net> (network interfaces).
329
330 =item B<delay> I<secs>
331
332 Sets the delay between display updates in seconds.
333
334 =item B<hist-cpu> I<secs>
335
336 Sets the historical CPU delay in seconds.
337
338 =item B<iterations> I<n>
339
340 Sets the number of iterations to run before we exit.  Setting
341 this to I<-1> means to run continuously.
342
343 =item B<sort> I<cpu|mem|time|id|name|...>
344
345 Sets the sort order.  The option names are the same as for
346 the command line I<-o> option.
347
348 =item B<connect> I<uri>
349
350 Sets the default connection URI.
351
352 =item B<debug> I<filename>
353
354 Sets the default filename to use for debug and error messages.
355
356 =item B<csv> I<filename>
357
358 Enables CSV output to the named file.
359
360 =item B<csv-cpu> I<true|false>
361
362 Enable or disable domain CPU stats in CSV output.
363
364 =item B<csv-mem> I<true|false>
365
366 Enable or disable domain memory stats in CSV output.
367
368 =item B<csv-block> I<true|false>
369
370 Enable or disable domain block device stats in CSV output.
371
372 =item B<csv-net> I<true|false>
373
374 Enable or disable domain network interface stats in CSV output.
375
376 =item B<batch> I<true|false>
377
378 Sets batch mode.
379
380 =item B<secure> I<true|false>
381
382 Sets secure mode.
383
384 =item B<script> I<true|false>
385
386 Sets script mode.
387
388 =item B<stream> I<true|false>
389
390 Sets stream mode.
391
392 =item B<block-in-bytes> I<true|false>
393
394 Show block device statistics in bytes.
395
396 =item B<end-time> I<time>
397
398 Set the time at which the program exits.  See above for the
399 time formats supported.
400
401 =item B<overwrite-init-file> I<false>
402
403 If set to I<false> then the I<W> key will not overwrite the
404 init file.
405
406 =back
407
408 Note that in the current implementation, options specified in
409 the init file override options specified on the command line.
410 This is a bug and this behaviour may change in the future.
411
412 =head1 COLUMN HEADINGS
413
414 =over 4
415
416 =item B<%CPU>
417
418 Percentage of CPU used.  As with L<top(1)>, 100% means that
419 all physical CPUs are being fully used.
420
421 =item B<DEVICE>
422
423 The block device name.
424
425 =item B<DOMAIN>
426
427 =item B<NAME>
428
429 The name of the libvirt domain.
430
431 =item B<ID>
432
433 The libvirt domain ID.
434
435 =item B<INTERFACE>
436
437 The network interface name.
438
439 =item B<%MEM>
440
441 The percentage of host memory assigned to the guest.
442
443 =item B<PHYCPU>
444
445 The physical CPU.
446
447 =item B<RDBY>
448
449 Disk bytes read since last displayed.
450
451 =item B<RDRQ>
452
453 Disk read requests since last displayed.
454
455 =item B<RXBY>
456
457 Network bytes received since last displayed.
458
459 =item B<RXPK>
460
461 Network packets received since last displayed.
462
463 =item B<S>
464
465 The state of the domain, one of:
466
467 =over 4
468
469 =item B<?>
470
471 Unknown.
472
473 =item B<R>
474
475 Running.
476
477 =item B<S>
478
479 Blocked.
480
481 =item B<P>
482
483 Paused.
484
485 =item B<D>
486
487 =item B<O>
488
489 Shutdown.
490
491 =item B<X>
492
493 Crashed.
494
495 =back
496
497 =item B<TIME>
498
499 Total CPU time used.
500
501 =item B<TXBY>
502
503 Network bytes transmitted since last displayed.
504
505 =item B<TXPK>
506
507 Network packets transmitted since last displayed.
508
509 =item B<WRBY>
510
511 Disk bytes written since last displayed.
512
513 =item B<WRRQ>
514
515 Disk write requests since last displayed.
516
517 =back
518
519 =head1 NOTES
520
521 =head2 Block I/O statistics
522
523 This I/O value is the amount of I/O since the previous iteration
524 of virt-top. To calculate speed of I/O, you should divide
525 the number by delay secs.
526
527 =head2 NETWORK RX BYTES AND PACKETS
528
529 Libvirt/virt-top has no way to know that a packet transmitted to a
530 guest was received (eg. if the guest is not listening).  In the
531 network RX stats, virt-top reports the packets transmitted to the
532 guest, on the basis that the guest might receive them.
533
534 In particular this includes broadcast packets.  Because of the way
535 that Linux bridges work, if the guest is connected to a bridge, it
536 will probably see a steady "background noise" of RX packets even when
537 the network interface is idle or down.  These are caused by STP
538 packets generated by the bridge.
539
540 =head2 DEBUGGING LIBVIRT ISSUES
541
542 virt-top tries to turn libvirt errors into informative messages.
543 However if libvirt initialization fails then this is not possible.
544 Instead you will get an obscure error like:
545
546  libvir: error : Unknown failure
547  Fatal error: exception Libvirt.Virterror(...)
548
549 To see the cause of libvirt errors in more detail, enable libvirt
550 debugging by setting this environment variable:
551
552  export LIBVIRT_DEBUG=1
553
554 =head1 SEE ALSO
555
556 L<top(1)>,
557 L<virsh(1)>,
558 L<http://www.libvirt.org/ocaml/>,
559 L<http://www.libvirt.org/>,
560 L<http://people.redhat.com/~rjones/>,
561 L<http://caml.inria.fr/>
562
563 =head1 AUTHORS
564
565 Richard W.M. Jones <rjones @ redhat . com>
566
567 =head1 COPYRIGHT
568
569 (C) Copyright 2007-2012 Red Hat Inc., Richard W.M. Jones
570 http://libvirt.org/
571
572 This program is free software; you can redistribute it and/or modify
573 it under the terms of the GNU General Public License as published by
574 the Free Software Foundation; either version 2 of the License, or
575 (at your option) any later version.
576
577 This program is distributed in the hope that it will be useful,
578 but WITHOUT ANY WARRANTY; without even the implied warranty of
579 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
580 GNU General Public License for more details.
581
582 You should have received a copy of the GNU General Public License
583 along with this program; if not, write to the Free Software
584 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
585
586 =head1 REPORTING BUGS
587
588 Bugs can be viewed on the Red Hat Bugzilla page:
589 L<https://bugzilla.redhat.com/>.
590
591 If you find a bug in virt-top, please follow these steps to report it:
592
593 =over 4
594
595 =item 1. Check for existing bug reports
596
597 Go to L<https://bugzilla.redhat.com/> and search for similar bugs.
598 Someone may already have reported the same bug, and they may even
599 have fixed it.
600
601 =item 2. Capture debug and error messages
602
603 Run
604
605  virt-top --debug virt-top.log
606
607 and keep I<virt-top.log>.  It contains error messages which you
608 should submit with your bug report.
609
610 =item 3. Get version of virt-top and version of libvirt.
611
612 Use:
613
614  virt-top --version
615
616 If you can get the precise version of libvirt you are using
617 then that too is helpful.
618
619 =item 4. Submit a bug report.
620
621 Go to L<https://bugzilla.redhat.com/> and enter a new bug.
622 Please describe the problem in as much detail as possible.
623
624 Remember to include the version numbers (step 3) and the debug
625 messages file (step 2).
626
627 =item 5. Assign the bug to rjones @ redhat.com
628
629 Assign or reassign the bug to B<rjones @ redhat.com> (without the
630 spaces).  You can also send me an email with the bug number if you
631 want a faster response.
632
633 =back