From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I38AQ-00087j-5a for qemu-devel@nongnu.org; Tue, 26 Jun 2007 06:21:02 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I38AP-00086A-3U for qemu-devel@nongnu.org; Tue, 26 Jun 2007 06:21:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I38AO-00085q-Vx for qemu-devel@nongnu.org; Tue, 26 Jun 2007 06:21:01 -0400 Received: from mx1.actcom.co.il ([192.114.47.64] helo=smtp1.actcom.co.il) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1I38AO-0002r3-EE for qemu-devel@nongnu.org; Tue, 26 Jun 2007 06:21:00 -0400 Received: from [10.0.0.13] (line25-90.adsl.actcom.co.il [192.115.25.90]) by smtp1.actcom.co.il (8.13.3/8.13.3) with ESMTP id l5QAKpmk010319 for ; Tue, 26 Jun 2007 13:20:55 +0300 Message-ID: <4680E7BB.80408@codefidence.com> Date: Tue, 26 Jun 2007 13:17:31 +0300 From: Gilad Ben-Yossef MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] starting qemu vnc session on a pre-allocated port References: <467E6C25.3010908@codefidence.com> <467E7AB0.1000909@codemonkey.ws> <467EE5E0.5010605@codefidence.com> <467EF2D6.90501@codemonkey.ws> <467F7CC6.6000207@codefidence.com> <467FAD19.4000404@codemonkey.ws> In-Reply-To: <467FAD19.4000404@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Anthony Liguori wrote: > Here are the reasons why the Unix domain socket approach is superior: > > Sharing a file descriptor implies a parent/child relationship. True. > It also > implies that the daemon will be running for the entire lifetime of the > VM. No. In fact, running an extra daemon for the entire life time of the VM is exactly what I'm trying to avoid (one of the things, anyway). Now I see why you think the unix domain socket option solves the problem already. Our use case is actully a little different. Let me explain: The machine running qemu has a web based interface to start VMs. A user asks for a new VM to start by browsing to a URL. The CGI implmenting that URL will start a new qemu instance, send to the user web browser an HTML page with a JAVA VNC viewer embedded and terminate. Here is the problem: the HTML page needs to have the port number for the JAVA VNC viewer to connect to embedded in it. Of course, the CGI can pick a free port and ask qemu to start the VNC server on it, but it means CGI needs to maintain a list of free/used port ranges in some shared data structue, track the qemu instance to know when it is termianted and the port is free again and of course, hope that not non related proccess will snatch a port in the port range and generally duplicate the ifnormation the operating system already has on free/in use ports. In our suggested solution, our CGI simply opens a listening socket on an ethermal port, letting the OS do the allocation, hands the file descriptor to qemu to use and *terminates* (after sending the HTML page). No long running daemons. Having a daemon sit around just to shove the data from the Unix domain socket to the TCP socket and back and needing to track it and all really puts an ugly dent on the whole idea and, more important - I think what we are doing is a rather general concept, certainly not unique to us (just look at qemudo, only of course, they got it wrong... :-) Hope this explains things a little better. > Since VM's are meant to run for very long periods of time, this is > quite limiting. By utilizing a domain socket, you gain the ability to > record on disk the state of the daemon and then restart. The layer of > redirection also allows you to let your uses change the VNC server > properties while the VM is running (so you change the listening vnc > display from localhost:3 to :22 without restarting the VM). All the above are really nice to have, but nit with the cost of extra management overhead, as explained above. Also, our VM life time is typically 15 minutes long... :-) > Plus, live migration has no hope of working if you're passing file > descriptors on the command line as they're meaningless once you've > migrated. That, I have no answer for. What do you do with the Unix domain socket? open it by path/filename on the new machines? Gilad -- Gilad Ben-Yossef Codefidence. A name you can trust(tm) http://www.codefidence.com Phone: +972.3.7515563 ext. 201 | Cellular: +972.52.8260388 SIP: gilad@pbx.codefidence.com | Fax: +972.3.7515503 Lacking fins or tail the gefilte fish swims with great difficulty. -- A Jewish Haiku