<br><br><div class="gmail_quote">2012/7/21 Paulo Ricardo Motta Gomes <span dir="ltr"><<a href="mailto:pauloricardomg@gmail.com" target="_blank">pauloricardomg@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Have you monitored the cpu utilization of the proxy server and the storage nodes? I did similar tests with Swift and the proxy server exhausted its capacity with a only few concurrent requests for very small objects.</blockquote>
<div><br></div><div>Maximum CPU utilization on Proxy is reached to 100% on all cores at beginning. and 60~70 % on storage nodes. </div><div>It seems up and down in a periodical duration. I did several system tunings , such as sysctl , ulimit etc... The concurrency request could be 500+  for 4K size though.    </div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>

</div><div>If you notice object servers are not overloaded, but proxy is overloaded, a solution might be to have more proxy servers if you hav<br></div></blockquote><div><br></div><div>Result still same with multiple proxy servers(2-4) . and each powerful swift-bench clients for each proxy node.  Also , I did a test by swift-benc's direct client function to a particular node . I found there's a closed result .  Once more objects been uploaded . The </div>
</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_quote"><div><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">for</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">chunk</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">in</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(0,134,179);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">iter</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">(</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">lambda</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">:</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">reader</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">(</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(153,153,153);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">self</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">.</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">network_chunk_size</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">),</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(221,17,68);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">''</span><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">): </span></div>
</div></blockquote></blockquote><div class="gmail_quote"><div><span style="background-color:rgb(255,255,255);margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">take lots of time periodically. </span></div>
<div>  </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br></div><div>It seems a problem of overload, since there are only 4 servers in the system and a large level of concurrency. Have you tried slowly increasing the number of concurrency to find the point where the problem starts? This point may be the capacity of your system.</div>
</div></blockquote><div><br></div><div>Last week , I got more servers from another HW providers with more CPU/RAM/DISKs . 12 Disks in each storage node.  This deployment of swift cluster keep in better performance for longer time. Unfortunately , after 15,000,000 object . The performance reduced to half and the Failure appeared.  </div>
<div>I concerned about that if the (total number objs/disk numbers) = ?  will cause such affect in large deployment.(aka. cloud storage provider , telecom , bank etc.)  </div><div><br></div><div>Really confusing  ......</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>

<div><br></div><div>Also, are you using persistent connections to the proxy server to send the object? If so, maybe try to renew them once in a while. </div></div></blockquote><div><br></div><div>Renew connections for each round in swift-bench as I know.</div>
<div><br></div><div>Well , swift-bench create a connection pool with concurrency = x   connections . I think that connections been renew in every round.</div><div><br></div><div>Something strange is that the performance back to beginning while I flush all data on storage nodes. (whatever by format disk / r m ) </div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br></div><div>Cheers,</div><div><br>Paulo</div></div></blockquote><div>Thanks for your reply </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br><div class="gmail_quote">

2012/7/20 Kuo Hugo <span dir="ltr"><<a href="mailto:tonytkdk@gmail.com" target="_blank">tonytkdk@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="h5">

Hi Sam , and all openstacker<div><br></div><div>This is Hugo . I'm facing an issue about the performance 
<em style="line-height:16px;color:rgb(221,75,57);font-style:normal;font-family:arial,sans-serif">degradation</em>  of swift . </div><div>I tried to figure out the problem of the issue which I faced in recent days.  </div>



<div><br></div><div>Environment :</div><div>Swift version : master branch . latest code.</div><div>Tried on Ubuntu 12.04/11.10  </div><div>1 Swift-proxy : 32GB-ram / CPU 4*2 / 1Gb NIC*2</div><div>3 Storage-nodes : each for 32GB-ram / CPU 4*2 / 2TB*7 / 1Gb NIC*2</div>



<div><br></div><div>storage nodes runs only main workers(object-server , container-server , account-server)</div><div><br></div><div>I'm in testing with 4K size objects by swift-bench.</div><div><br></div><div>Per round bench.conf</div>



<div>object_size = 4096</div><div>Concurrency : 200</div><div>Object number: 200000</div><div>Containers : 200</div><div>no delete objects ..</div><div><br></div><div>At beginning , everything works fine in my environment.  The average speed of PUT is reached to 1200/s . </div>



<div>After several rounds test . I found that the performance is down to 300~400/s </div><div>And after more rounds , failures appeared  , and ERROR in proxy's log as followed </div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">



<div><div><font color="#999999">Jul 20 18:44:54 angryman-proxy-01 proxy-server ERROR with Object server <a href="http://192.168.100.101:36000/DISK5" target="_blank">192.168.100.101:36000/DISK5</a> re: Trying to get final status of PUT to /v1/AUTH_admin/9cbb3f9336b34019a6e7651adfc06a86_51/87b48a3474c7485c95aeef95c6911afb: </font><font color="#cc0000">Timeout (10s)</font><font color="#999999"> (txn: txb4465d895c9345be95d81632db9729af) (client_ip: 172.168.1.2)</font></div>



</div><div><div><font color="#999999">Jul 20 18:44:54 angryman-proxy-01 proxy-server ERROR with Object server <a href="http://192.168.100.101:36000/DISK4" target="_blank">192.168.100.101:36000/DISK4</a> re: Trying to get final status of PUT to /v1/AUTH_admin/9cbb3f9336b34019a6e7651adfc06a86_50/7405e5824cff411f8bb3ecc7c52ffd5a: </font><font color="#cc0000">Timeout (10s)</font><font color="#999999"> (txn: txe0efab51f99945a7a09fa664b821777f) (client_ip: 172.168.1.2)</font></div>



</div><div><div><font color="#999999">Jul 20 18:44:55 angryman-proxy-01 proxy-server ERROR with Object server <a href="http://192.168.100.101:36000/DISK5" target="_blank">192.168.100.101:36000/DISK5</a> re: Trying to get final status of PUT to /v1/AUTH_admin/9cbb3f9336b34019a6e7651adfc06a86_33/f322f4c08b124666bf7903812f4799fe: </font><font color="#cc0000">Timeout (10s)</font><font color="#999999"> (txn: tx8282ecb118434f828b9fb269f0fb6bd0) (client_ip: 172.168.1.2)</font></div>



</div></blockquote><div><br></div><div>After trace the code of object-server swift/obj/server.py and insert a timer on <a href="https://github.com/openstack/swift/blob/master/swift/obj/server.py#L591" target="_blank">https://github.com/openstack/swift/blob/master/swift/obj/server.py#L591</a></div>



<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span style="margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap"><br>



</span></div><div><span style="margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">for</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">chunk</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">in</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">iter</span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">(</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">lambda</span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">:</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">reader</span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">(</span><span style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">self</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">.</span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">network_chunk_size</span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">),</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap;background-color:rgb(255,255,204)"> </span><span style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">''</span><span style="margin:0px;padding:0px;border:0px;color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13.333333969116211px;line-height:17.77777862548828px;white-space:pre-wrap">):</span></div>



</blockquote><div><br></div><div>Seems that the reader sometimes took a lot of time for receiving data from wsgi.input. Not every request , it looks like has a time of periods. </div><div><br></div><div>So that I check the history of Swift , I saw your commit <a href="https://github.com/openstack/swift/commit/783f16035a8e251d2138eb5bbaa459e9e4486d90" target="_blank">https://github.com/openstack/swift/commit/783f16035a8e251d2138eb5bbaa459e9e4486d90</a></div>



<div> . That's the only one which close to my issue.  So that I hope that there's some suggestions for me. </div><div><br></div><div>My considerations :</div><div><br></div><div>1. Does it possible  caused by greenio switch ?</div>



<div><br></div><div>2. Does it related to the number of objects existing on storage disks ? </div><div><br></div><div>3. Did someone play with swift by small size + fast client request ? </div><div><br></div><div>4. I found that the performance would never back to 1200/s . The only way to do is flush all data from disk. Once disk cleaned , the performance get back to  the best one. </div>



<div><br></div><div>5. I re-read entire workflow of object server to handle a PUT request , I don't understand the reason why that the number of objects will affect reading wsgi.input data. With 4K size objects. no need to be chunked as I know. </div>



<div><br></div><div><br></div><div>The time consumed by <font color="#cc0000"><b><span style="font-size:13.333333969116211px;margin:0px;padding:0px;border:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:17.77777862548828px;white-space:pre-wrap">reader</span><span style="font-size:13.333333969116211px;margin:0px;padding:0px;border:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:17.77777862548828px;white-space:pre-wrap">(</span><span style="font-size:13.333333969116211px;margin:0px;padding:0px;border:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:17.77777862548828px;white-space:pre-wrap">self</span><span style="font-size:13.333333969116211px;margin:0px;padding:0px;border:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:17.77777862548828px;white-space:pre-wrap">.</span><span style="font-size:13.333333969116211px;margin:0px;padding:0px;border:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:17.77777862548828px;white-space:pre-wrap">network_chunk_size</span><span style="font-size:13.333333969116211px;margin:0px;padding:0px;border:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:17.77777862548828px;white-space:pre-wrap">)</span></b></font></div>



<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font color="#999999">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 0.001391</font></div>



</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font color="#999999">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 0.001839</font></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">



<div><font color="#999999">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 0.00164</font></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font color="#999999">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 0.002786</font></div>



</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font color="#cc0000">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 2.716707</font></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">



<div><font color="#cc0000">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 1.005659</font></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font color="#999999">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 0.055982</font></div>



</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font color="#999999">Jul 20 17:09:36 angryman-storage-01 object-server Reader: 0.002205</font></div></blockquote></blockquote><div><br></div>



<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#999999">Jul 20 18:39:14 angryman-storage-01 object-server WTF: 0.000968</font></div>



</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#999999">Jul 20 18:39:14 angryman-storage-01 object-server WTF: 0.001328</font></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">



<div><div><font color="#cc0000">Jul 20 18:39:14 angryman-storage-01 object-server WTF: 10.003368</font></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#999999">Jul 20 18:39:14 angryman-storage-01 object-server WTF: 0.001243</font></div>



</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#999999">Jul 20 18:39:14 angryman-storage-01 object-server WTF: 0.001562</font></div></div></blockquote></blockquote>



<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#999999">Jul 20 17:52:41 angryman-storage-01 object-server WTF: 0.001067</font></div>



</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#cc0000">Jul 20 17:52:41 angryman-storage-01 object-server WTF: 13.804413</font></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">



<div><div><font color="#cc0000">Jul 20 17:52:41 angryman-storage-01 object-server WTF: 5.301166</font></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#999999">Jul 20 17:52:41 angryman-storage-01 object-server WTF: 0.001167</font></div>



</div></blockquote></blockquote><div><br></div><div><br></div><div> </div><div>Would it be a bug of eventlet or SWIFT ?   Please feel free to let me know that should I file a bug for Swift . </div><div><br></div><div>Appreciate ~</div>


<span><font color="#888888">
<div><div><br></div>-- <br><div>+Hugo Kuo+</div><div><a href="mailto:tonytkdk@gmail.com" target="_blank">tonytkdk@gmail.com<br></a></div><div><a href="mailto:tonytkdk@gmail.com" target="_blank">+</a>886 935004793</div><br>




</div>
</font></span><br></div></div>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Paulo Ricardo</div><div><br></div>-- <br><span>European Master in Distributed Computing<i></i></span><span style="font-family:arial,sans-serif;line-height:15px"><i style="font-style:normal"><br>


Royal Institute of Technology - <i style="font-style:normal">KTH</i><br></i></span><div><span style="font-family:arial,sans-serif;line-height:15px"><i style="font-style:normal"><i style="font-style:normal">Instituto Superior Técnico - IST</i></i></span></div>


<div><span style="font-family:arial,sans-serif;line-height:15px"><i style="font-style:normal"><i style="font-style:normal"><a href="http://paulormg.com" target="_blank">http://paulormg.com</a></i></i></span></div><br>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>+Hugo Kuo+</div><div><a href="mailto:tonytkdk@gmail.com" target="_blank">tonytkdk@gmail.com<br></a></div><div><a href="mailto:tonytkdk@gmail.com" target="_blank">+</a>886 935004793</div>
<br>