One of the best methods to measure ECS data access latency is to use logging feature on a Load Balancer. We discuss some details of the method in that post. Brocade vTM Load Balanced is used.
- Enable Request Logging feature on the Virtual Server used to provide S3 access.
- Specify a Custom log format.
- I use the following format: %h, %t %{host}i, %r, %s,%b, %B, %R
Fields used: %h - the client's IP address %t - time when the last byte was sent to the client %{host}i - the value of a “host” header in the HTTP request %r - first line of the HTTP request %s - status code of HTTP response (e.g. 200) %b - number of bytes sent to the client %B - number of bytes received from the client %R - total time from the first byte of client request until complete response has been sent to client, in seconds
- In my tests COSbench is used as a load generator.
- Read-only, Write-only or mixed-up profiles with different object sizes can be used.
- vTM logs are collected for every single S3 request.
- GET requests represent read access pattern. PUT requests stand for write.
- Response time is measured in seconds.
- When the test is finished, we can download logs.
Note: if you have several clustered traffic managers, log files can be stored on any of them. Check other traffic managers if you don’t see log file on the one where you viewing transaction logs.
- vTM request logs are just a CSV file in the format we specified.
10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, GET /mycontainers4/myobjects9 HTTP/1.1, 200,10000412, 413, 0.083358 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, GET /mycontainers7/myobjects9 HTTP/1.1, 200,10000412, 413, 0.123842 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, PUT /mycontainers6/myobjects3 HTTP/1.1, 200,407, 10000439, 0.203151 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, GET /mycontainers3/myobjects9 HTTP/1.1, 200,10000412, 413, 0.136064 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, GET /mycontainers1/myobjects9 HTTP/1.1, 200,10000411, 413, 0.109284 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, PUT /mycontainers1/myobjects2 HTTP/1.1, 200,407, 10000439, 0.279045 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, GET /mycontainers4/myobjects8 HTTP/1.1, 200,10000412, 413, 0.102256 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, PUT /mycontainers6/myobjects10 HTTP/1.1, 200,407, 10000440, 0.238226 10.10.10.1, [21/Apr/2017:16:08:03 +0200], 10.100.100.10:9020, GET /mycontainers8/myobjects5 HTTP/1.1, 200,10000412, 413, 0.188673
- We can import CSV log into Excel and analyze it applying different filters and calculating an average, min and max.