On Wed, Dec 21, 2022 at 08:14:14PM +0530, Gk Gk wrote: > Hi All, > > I am trying to get guest VM's disk statistics using a libvirt python > library as follows: > --- > raw_xml = domain.XMLDesc(0) > for disk in doc.getElementsByTagName('disk'): > disk_data = disk.getElementsByTagName('target') > --- > > The above code is yielding the following stats for two disks inside the VM: > -- > disk_name=sda > read_req=34137,read_bytes=445358592,write_req=2405970,write_bytes=24943391744 > disk_name=sdb > read_req=34357,read_bytes=450754048,write_req=2405984,write_bytes=24943465472 > --- > > The write_bytes divided by 1024 yields 24358853 kB. > But when I compare the above statistics from the iostat data shown from > inside the VM, I see a stark difference between the two results as shown > below: > > --- > root@sample:~# iostat > Linux 4.15.0-101-generic (sample) 12/21/2022 _x86_64_ (1 CPU) > > avg-cpu: %user %nice %system %iowait %steal %idle > 0.27 0.00 0.03 0.02 0.01 99.68 > > Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn > sda 0.24 0.04 11.87 400052 121844120 > sdb 0.00 0.00 1.19 5269 12223752 > ---- > > Why is there a huge difference in the number of bytes read and written for > the two disks as reported by libvirt ? Please explain. Note that libvirt reports data that starts from when the virtual machine was created. The guest OS reports data that starts from when the kernel booted. IOW, if you have a running guest, and reboot it several times, the guest OS values will keep getting reset back to 0 on each boot, but the libvirt values will accumulate, until a hard poweroff. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|