Hi,

I am using libvirt for qemu/kvm. I have following questions in terms of save and restore (Version 0.6.2):

1) As I checked the libvirt code, restore command is asynchronous. There is a macro called VIR_EXEC_NONBLOCK but there is no macro called VIR_EXEC_BLOCK. Is it possible to execute the restore in blocking mode so that I can measure the whole restore time?

2) I tried to measure the time spent to save the VM. I am executing save command and getting a timing. However when I execute the following operations in order I got an error right after script issues the restore operation (No delay between them):

"save->restore->save"

... the error is:

20:19:02.478: error : internal error Unable to open monitor path /dev/pts/3
libvir: QEMU error : internal error Unable to open monitor path /dev/pts/3
20:19:02.478: error : internal error unable to start guest: char device redirected to /dev/pts/3
inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
inet_listen: FAILED

libvir: QEMU error : internal error unable to start guest: char device redirected to /dev/pts/3
inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
inet_listen: FAILED
20:19:02.482: error : operation failed: failed to start VM
libvir: QEMU error : operation failed: failed to start VM
error: Failed to restore domain from /path/to/the/save/file
error: operation failed: failed to start VM

(You can find the detailed error report in the attachement when LIBVIRT_DEBUG flag is 1)

I think that some of the cleanup is non-blocking which are cleanup of pty device and vncserver. However, I am not sure if destroying the qemu process is asynchronous??

P.S.: If I put one second delay between first save and restore, there is no error. Save and restore work fine.

Thanks,

Erkan Unal
20:26:07.506: debug : virInitialize:287 : register drivers
20:26:07.506: debug : virRegisterDriver:660 : registering Test as driver 0
20:26:07.506: debug : virRegisterNetworkDriver:560 : registering Test as 
network driver 0
20:26:07.506: debug : virRegisterStorageDriver:591 : registering Test as 
storage driver 0
20:26:07.506: debug : virRegisterDeviceMonitor:622 : registering Test as device 
driver 0
20:26:07.506: debug : virRegisterDriver:660 : registering Xen as driver 1
20:26:07.506: debug : virRegisterDriver:660 : registering OPENVZ as driver 2
20:26:07.506: debug : virRegisterDriver:660 : registering remote as driver 3
20:26:07.506: debug : virRegisterNetworkDriver:560 : registering remote as 
network driver 1
20:26:07.506: debug : virRegisterStorageDriver:591 : registering remote as 
storage driver 1
20:26:07.506: debug : virRegisterDeviceMonitor:622 : registering remote as 
device driver 1
20:26:07.506: debug : virConnectOpenAuth:1089 : name=qemu:///session, 
auth=0x7fa21cbae660, flags=0
20:26:07.506: debug : do_open:909 : name "qemu:///session" to URI components:
  scheme qemu
    opaque (null)
      authority (null)
        server (null)
          user (null)
            port 0
              path /session

              20:26:07.506: debug : do_open:919 : trying driver 0 (Test) ...
              20:26:07.506: debug : do_open:925 : driver 0 Test returned 
DECLINED
              20:26:07.506: debug : do_open:919 : trying driver 1 (Xen) ...
              20:26:07.506: debug : do_open:925 : driver 1 Xen returned DECLINED
              20:26:07.506: debug : do_open:919 : trying driver 2 (OPENVZ) ...
              20:26:07.506: debug : do_open:925 : driver 2 OPENVZ returned 
DECLINED
              20:26:07.506: debug : do_open:919 : trying driver 3 (remote) ...
              20:26:07.506: debug : remoteOpen:974 : Auto-remote UNIX socket
              20:26:07.506: debug : remoteOpen:992 : Auto-spawn user daemon 
instance
              20:26:07.506: debug : doRemoteOpen:511 : proceeding with name = 
qemu:///session
              20:26:07.507: debug : call:6473 : Doing call 66 (nil)
              20:26:07.507: debug : call:6543 : We have the buck 66 
0x7fa21bdb5010 0x7fa21bdb5010
              20:26:07.507: debug : processCallRecvLen:6131 : Got length, now 
need 36 total (32 more)
              20:26:07.507: debug : processCalls:6399 : Giving up the buck 66 
0x7fa21bdb5010 (nil)
              20:26:07.507: debug : call:6574 : All done with our call 66 (nil) 
0x7fa21bdb5010
              20:26:07.507: debug : call:6473 : Doing call 1 (nil)
              20:26:07.507: debug : call:6543 : We have the buck 1 0xf86d80 
0xf86d80
              20:26:07.509: debug : processCallRecvLen:6131 : Got length, now 
need 28 total (24 more)
              20:26:07.509: debug : processCalls:6399 : Giving up the buck 1 
0xf86d80 (nil)
              20:26:07.509: debug : call:6574 : All done with our call 1 (nil) 
0xf86d80
              20:26:07.509: debug : doRemoteOpen:822 : Adding Handler for 
remote events
              20:26:07.509: debug : doRemoteOpen:829 : virEventAddHandle 
failed: No addHandleImpl defined. continuing without events.
              20:26:07.509: debug : do_open:925 : driver 3 remote returned 
SUCCESS
              20:26:07.509: debug : do_open:945 : network driver 0 Test 
returned DECLINED
              20:26:07.509: debug : do_open:945 : network driver 1 remote 
returned SUCCESS
              20:26:07.509: debug : do_open:967 : storage driver 0 Test 
returned DECLINED
              20:26:07.509: debug : do_open:967 : storage driver 1 remote 
returned SUCCESS
              20:26:07.510: debug : do_open:988 : node driver 0 Test returned 
DECLINED
              20:26:07.510: debug : do_open:988 : node driver 1 remote returned 
SUCCESS
              20:26:07.510: debug : virDomainRestore:2012 : conn=0xf82430, 
from=/path/to/save/file
              20:26:07.510: debug : call:6473 : Doing call 54 (nil)
              20:26:07.510: debug : call:6543 : We have the buck 54 0xf86d80 
0xf86d80
              20:26:07.625: error : internal error Unable to open monitor path 
/dev/pts/3
              libvir: QEMU error : internal error Unable to open monitor path 
/dev/pts/3
              20:26:07.625: error : internal error unable to start guest: char 
device redirected to /dev/pts/3
              inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
              inet_listen: FAILED

              libvir: QEMU error : internal error unable to start guest: char 
device redirected to /dev/pts/3
              inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
              inet_listen: FAILED
              20:26:07.629: error : operation failed: failed to start VM
              libvir: QEMU error : operation failed: failed to start VM
              20:26:07.629: debug : processCallRecvLen:6131 : Got length, now 
need 160 total (156 more)
              20:26:07.629: debug : processCalls:6399 : Giving up the buck 54 
0xf86d80 (nil)
              20:26:07.629: debug : call:6574 : All done with our call 54 (nil) 
0xf86d80
              error: Failed to restore domain from /path/to/save/file
              error: operation failed: failed to start VM

              20:26:07.629: debug : virConnectClose:1107 : conn=0xf82430
              20:26:07.629: debug : call:6473 : Doing call 2 (nil)
              20:26:07.629: debug : call:6543 : We have the buck 2 0xf86d80 
0xf86d80
              20:26:07.629: debug : processCallRecvLen:6131 : Got length, now 
need 28 total (24 more)
              20:26:07.629: debug : processCalls:6399 : Giving up the buck 2 
0xf86d80 (nil)
              20:26:07.629: debug : call:6574 : All done with our call 2 (nil) 
0xf86d80
              20:26:07.629: debug : virUnrefConnect:210 : unref connection 
0xf82430 1
              20:26:07.629: debug : virReleaseConnect:171 : release connection 
0xf82430

--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to