virtlogd spinning on 100% CPU with the latest libvirt

Andrea Bolognani abologna at redhat.com
Tue Feb 18 19:34:53 UTC 2020


[Dropped Peter from CC. Please don't CC individual developers
 unless they've explicitly requested that you do so.]

On Mon, 2020-02-17 at 17:50 +0000, Richard W.M. Jones wrote:
> Build libvirt from git (ccf7567329f).
> 
> Using the libvirt ‘run’ script, run something like
> libguestfs-test-tool.  I think basically any command which runs a
> guest will do.  NB These commands are all run as NON-root:
> 
>   killall libvirtd lt-libvirtd virtlogd lt-virtlogd
>   ./build/run libguestfs-test-tool
> 
> Now there will be a lt-virtlogd process using 100% of CPU:
> 
>     PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND  
> 2572972 rjones    20   0   47880  16256  14516 R 100.0   0.1   0:19.27 lt-virt+ 

It's actually worse than that: not only virtlogd usese an
unwarranted amount of CPU, but it also keeps the log file for the
domain busy, thus preventing the same domain from being started
again:

  $ virsh start alpine
  Domain alpine started

  $ virsh destroy alpine
  Domain alpine destroyed

  $ virsh start alpine
  error: Failed to start domain alpine
  error: can't connect to virtlogd: Cannot open log file: '/var/log/libvirt/qemu/alpine.log': Device or resource busy

  $ sudo lsof | grep alpine.log
  virtlogd  146845                      root   16w      REG              253,0     35103   17195654 /var/log/libvirt/qemu/alpine.log
  $

Restarting virtlogd makes thing operational again:

  $ sudo systemctl restart virtlogd
  $ virsh start alpine
  Domain alpine started

  $

My guess is that virtlogd doesn't realize the QEMU process is gone,
and sits there spinning forever waiting for some output that will
never arrive.

-- 
Andrea Bolognani / Red Hat / Virtualization




More information about the libvir-list mailing list