<html><body>
<p><font size="2" face="sans-serif">My guess is the object data need to be transmitted to Swift cluster before the status code returned.</font><br>
<font size="2" face="sans-serif">It can't be returned immediately before 2/3 I/O completed. Otherwise it is not consistent to tell client</font><br>
<font size="2" face="sans-serif">it succeed.</font><br>
<br>
<font size="2" face="sans-serif">-Edward Zhang</font><br>
<br>
<br>
<img width="16" height="16" src="cid:1__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt="Inactive hide details for Shrinand Javadekar ---2014-06-24 ÏÂÎç 03:12:14---Shrinand Javadekar <shrinand@maginatics.com>"><font size="2" color="#424282" face="sans-serif">Shrinand Javadekar ---2014-06-24 ÏÂÎç 03:12:14---Shrinand Javadekar <shrinand@maginatics.com></font><br>
<br>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td style="background-image:url(cid:2__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com); background-repeat: no-repeat; " width="40%">
<ul style="padding-left: 72pt"><font size="1" face="sans-serif"><b>Shrinand Javadekar <shrinand@maginatics.com></b></font><font size="1" face="sans-serif"> </font>
<p><font size="1" face="sans-serif">2014-06-24 ÏÂÎç 03:05</font></ul>
</td><td width="60%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="1%"><img width="58" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""><br>
<div align="right"><font size="1" face="sans-serif">To</font></div></td><td width="100%"><img width="1" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""><br>

<ul style="padding-left: 7pt"><font size="1" face="sans-serif">"openstack@lists.openstack.org" <openstack@lists.openstack.org></font></ul>
</td></tr>

<tr valign="top"><td width="1%"><img width="58" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""><br>
<div align="right"><font size="1" face="sans-serif">cc</font></div></td><td width="100%"><img width="1" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""><br>
</td></tr>

<tr valign="top"><td width="1%"><img width="58" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""><br>
<div align="right"><font size="1" face="sans-serif">Subject</font></div></td><td width="100%"><img width="1" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""><br>

<ul style="padding-left: 7pt"><font size="1" face="sans-serif">[Openstack] [Swift] PUT requests sensitive to latency?</font></ul>
</td></tr>
</table>

<table border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="58"><img width="1" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""></td><td width="336"><img width="1" height="1" src="cid:3__=C7BBF792DFBB525E8f9e8a93df938@cn.ibm.com" border="0" alt=""></td></tr>
</table>
</td></tr>
</table>
<br>
<tt><font size="2">Hi,<br>
<br>
I have a single node swift cluster. I measured the time taken to<br>
complete a PUT request that originated from three different client<br>
machines. Each client was writing a single 256K byte object.<br>
<br>
Note that the time measured was only the time taken on the Swift<br>
cluster itself. I started the timer after the request was received by<br>
the swift proxy-server process and stopped it when that method<br>
returned an HTTP status to the client. This is not the time on the<br>
client side and therefore *ideally* should not be affected by the<br>
latency between the client and the Swift cluster.<br>
<br>
However, it appears that the above is not true. The time required to<br>
complete the request is related to the latency between the client and<br>
swift cluster.<br>
<br>
Here are the results:<br>
<br>
* Client 1:<br>
Ping time 28ms<br>
PUT request time: ~180 ms<br>
<br>
* Client 2:<br>
Ping time 4 ms<br>
PUT request time: ~35 ms<br>
<br>
* Client 3:<br>
Ping time 0.04 ms<br>
PUT request time: ~10 ms<br>
<br>
Details about the experiment:<br>
<br>
* This is a single node Swift installation (not devstack) and uses<br>
SSDs to store metadata as well as data. This is just a test setup. In<br>
production, we won't have SSDs for storing data.<br>
* The above numbers are average of 50 PUT requests.<br>
* The Swift cluster was not being used for anything else during the experiment.<br>
* The client used was the jclouds library written in java. I had<br>
disable a config option that used the Expect 100-Continue header; i.e.<br>
the requests were not using the Expect 100-Continue header.<br>
* I tried increasing the size of the following options in the<br>
proxy-server.conf and restarting Swift.<br>
disk_chunk_size = 262144<br>
network_chunk_size = 262144<br>
...<br>
[app:proxy-server]<br>
object_chunk_size = 262144<br>
client_chunk_size = 262144<br>
<br>
However, this didn't show any improvement in the time required for PUT requests.<br>
<br>
Am I missing anything? Does Swift require an extra round trip from the<br>
client for completing PUT requests? Any ways of avoiding that?<br>
<br>
Thanks in advance.<br>
-Shri<br>
<br>
_______________________________________________<br>
Mailing list: </font></tt><tt><font size="2"><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a></font></tt><tt><font size="2"><br>
Post to     : openstack@lists.openstack.org<br>
Unsubscribe : </font></tt><tt><font size="2"><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a></font></tt><tt><font size="2"><br>
<br>
</font></tt><br>
</body></html>