Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
linux:benchmark [2006/11/03 16:32] a |
linux:benchmark [2010/08/18 14:57] (current) a |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | apt-get install contest dbench stress tiobench | + | ====== Benchmarking process / IO / latency ====== |
| + | |||
| + | links: | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | apt-get install contest dbench stress tiobench | ||
| FIXME | FIXME | ||
| Line 5: | Line 11: | ||
| http:// | http:// | ||
| + | |||
| + | ===== Unix Benchmarking ===== | ||
| + | see: http:// | ||
| + | Download: [[http:// | ||
| + | # gunzip -dvc unixbench-4.1.0-wht.tar.gz | tar xvf - | ||
| + | # cd unixbench-4.1.0-wht | ||
| + | # make | ||
| + | # ./Run | ||
| + | |||
| + | Please download and run it on your dedicated or VPS. Then post your result here for discussion. Thanks! | ||
| + | |||
| + | ===== IO test ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | < | ||
| + | / | ||
| + | \--(# | ||
| + | /dev/sda3, 23 GB, 512B blocks: 66.1 IOs/s, 33 kB/s | ||
| + | /dev/sda3, 23 GB, 1024B blocks: 65.7 IOs/s, 65 kB/s | ||
| + | /dev/sda3, 23 GB, 2 kB blocks: 64.9 IOs/s, 129 kB/s | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | <code python|f iotest-2008-10-15.py> | ||
| + | # | ||
| + | # | ||
| + | # Copyright (c) 2008 Benjamin Schweizer. All rights reserved. | ||
| + | # | ||
| + | # Redistribution and use in source and binary forms, with or without | ||
| + | # modification, | ||
| + | # met: | ||
| + | # | ||
| + | # * Redistributions of source code must retain the above copyright | ||
| + | # | ||
| + | # * Redistributions in binary form must reproduce the above copyright | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # * Neither the name of Benjamin Schweizer nor the names of its | ||
| + | # | ||
| + | # from this software without specific prior written permission. | ||
| + | # | ||
| + | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS | ||
| + | # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| + | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||
| + | # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
| + | # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| + | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
| + | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
| + | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
| + | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| + | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| + | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| + | # | ||
| + | # | ||
| + | # Abstract | ||
| + | # ~~~~~~~~ | ||
| + | # Benchmark disk IOs | ||
| + | # | ||
| + | # Authors | ||
| + | # ~~~~~~~ | ||
| + | # Benjamin Schweizer, http:// | ||
| + | # | ||
| + | # Changes | ||
| + | # ~~~~~~~ | ||
| + | # 2008-10-16, benjamin: initial release | ||
| + | # | ||
| + | # Todo | ||
| + | # ~~~~ | ||
| + | # - we'll see | ||
| + | # | ||
| + | |||
| + | import sys | ||
| + | import random | ||
| + | import time | ||
| + | |||
| + | def usage(): | ||
| + | print """ | ||
| + | |||
| + | usage: | ||
| + | |||
| + | iostat < | ||
| + | |||
| + | device | ||
| + | time := time in seconds | ||
| + | |||
| + | example: | ||
| + | |||
| + | iostat /dev/sda | ||
| + | |||
| + | """ | ||
| + | |||
| + | |||
| + | def greek(size): | ||
| + | """ | ||
| + | # Copyright (c) 1999 Martin Pohl, copied from | ||
| + | # http:// | ||
| + | _abbrevs = [ | ||
| + | (1<< | ||
| + | (1<< | ||
| + | (1<< | ||
| + | (1<< | ||
| + | (1<< | ||
| + | (1, '' | ||
| + | ] | ||
| + | |||
| + | for factor, suffix in _abbrevs: | ||
| + | if size > factor: | ||
| + | break | ||
| + | |||
| + | return `int(size/ | ||
| + | |||
| + | |||
| + | def iotest(dev, blocksize=512, | ||
| + | """ | ||
| + | fh = open(dev, ' | ||
| + | bof = 0 | ||
| + | fh.seek(0, | ||
| + | eof = fh.tell() | ||
| + | |||
| + | io_num = 0 | ||
| + | start_ts = time.time() | ||
| + | while time.time() < start_ts+t: | ||
| + | io_num += 1 | ||
| + | pos = random.randint(bof, | ||
| + | fh.seek(pos) | ||
| + | blockdata = fh.read(blocksize) | ||
| + | end_ts = time.time() | ||
| + | |||
| + | total_ts = end_ts - start_ts | ||
| + | |||
| + | print "%s, %sB, %sB blocks: %.1f IOs/s, %sB/s" % (dev, greek(eof), greek(blocksize), | ||
| + | |||
| + | return io_num/ | ||
| + | |||
| + | if __name__ == ' | ||
| + | if len(sys.argv) < 2: | ||
| + | usage() | ||
| + | raise SystemExit | ||
| + | |||
| + | device = sys.argv[1] | ||
| + | t = 10 | ||
| + | if len(sys.argv) == 3: | ||
| + | t = int(sys.argv[2]) | ||
| + | |||
| + | blocksize = 512 | ||
| + | try: | ||
| + | iops = 2 | ||
| + | while iops > 1: | ||
| + | iops = iotest(device, | ||
| + | blocksize *= 2 | ||
| + | except IOError, (err_no, err_str): | ||
| + | raise SystemExit(err_str) | ||
| + | except KeyboardInterrupt: | ||
| + | print " | ||
| + | |||
| + | # eof. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Measuring Disk IO Performance (alternative) ==== | ||
| + | |||
| + | see: http:// | ||
| + | |||
| + | files: http:// | ||
| + | \\ | ||
| + | **Performance on AWS** | ||
| + | < | ||
| + | EBS blocks .. | ||
| + | |||
| + | root@api:~# ./ | ||
| + | /dev/sdf, 107.37 GB, 1 threads: | ||
| + | | ||
| + | 1 KiB blocks: | ||
| + | 2 KiB blocks: | ||
| + | 4 KiB blocks: | ||
| + | 8 KiB blocks: | ||
| + | 16 KiB blocks: | ||
| + | 32 KiB blocks: | ||
| + | 64 KiB blocks: | ||
| + | 128 KiB blocks: | ||
| + | 256 KiB blocks: | ||
| + | 512 KiB blocks: | ||
| + | 1 MiB blocks: | ||
| + | 2 MiB blocks: | ||
| + | 4 MiB blocks: | ||
| + | 8 MiB blocks: | ||
| + | 16 MiB blocks: | ||
| + | 32 MiB blocks: | ||
| + | |||
| + | MNT default device | ||
| + | |||
| + | [root@process3 ~]# ./ | ||
| + | /dev/sdb, 440.20 GB, 1 threads: | ||
| + | | ||
| + | 1 KiB blocks: 1216.9 IO/s, 1.2 MiB/s ( 10.0 Mbit/s) | ||
| + | 2 KiB blocks: 1441.9 IO/s, 2.8 MiB/s ( 23.6 Mbit/s) | ||
| + | 4 KiB blocks: | ||
| + | 8 KiB blocks: 1384.7 IO/s, 10.8 MiB/s ( 90.7 Mbit/s) | ||
| + | 16 KiB blocks: 1109.9 IO/s, 17.3 MiB/s (145.5 Mbit/s) | ||
| + | 32 KiB blocks: 1161.7 IO/s, 36.3 MiB/s (304.5 Mbit/s) | ||
| + | 64 KiB blocks: 1068.0 IO/s, 66.7 MiB/s (559.9 Mbit/s) | ||
| + | 128 KiB blocks: | ||
| + | 256 KiB blocks: | ||
| + | 512 KiB blocks: | ||
| + | 1 MiB blocks: | ||
| + | 2 MiB blocks: | ||
| + | 4 MiB blocks: | ||
| + | 8 MiB blocks: | ||
| + | 16 MiB blocks: | ||
| + | 32 MiB blocks: | ||
| + | 64 MiB blocks: | ||
| + | 128 MiB blocks: | ||
| + | 256 MiB blocks: | ||
| + | 512 MiB blocks: | ||
| + | 1 GiB blocks: | ||
| + | </ | ||
| + | |||

