Hi Sam , and all openstacker<div><br></div><div>This is Hugo . I'm facing an issue about the performance 
<em style="color:rgb(221,75,57);font-style:normal;font-family:arial,sans-serif;line-height:16px;background-color:rgb(255,255,255)">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">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">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">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">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 class="k" 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"><br>
</span></div><div><span class="k" 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">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;background-color:rgb(255,255,204)"> </span><span class="n" 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">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;background-color:rgb(255,255,204)"> </span><span class="ow" 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">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;background-color:rgb(255,255,204)"> </span><span class="nb" 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">iter</span><span class="p" 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">(</span><span class="k" 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">lambda</span><span class="p" 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">:</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;background-color:rgb(255,255,204)"> </span><span class="n" 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">reader</span><span class="p" 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">(</span><span class="bp" 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">self</span><span class="o" 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">.</span><span class="n" 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">network_chunk_size</span><span class="p" 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">),</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;background-color:rgb(255,255,204)"> </span><span class="s" 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">''</span><span class="p" 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">):</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">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 class="n" 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">reader</span><span class="p" 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">(</span><span class="bp" 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">self</span><span class="o" 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">.</span><span class="n" 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">network_chunk_size</span><span class="p" 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">)</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>
<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>