Whamcloud - gitweb
7d793bf8f97546f6da6c71413df13b090769fc66
[fs/lustre-release.git] / lustre-iokit / sgpdd-survey / README.sgpdd-survey
1 WARNING: Running sgp_dd will ERASE the contents of the disk devices.
2          This is NOT to be run on any OST where you care about any data
3          or you are not expecting to reformat the filesystem afterward.
4
5 Requirements
6 ------------
7
8 . sg3_utils (for sgp_dd)
9   SCSI device
10   Or, if using non-scsi disk
11   raw device support
12   sg3_utils
13
14 Overview
15 --------
16
17 This survey may be used to characterise the performance of a SCSI device.
18 It simulates an OST serving multiple stripe files.  The data gathered by it
19 can help set expectations for the performance of a lustre OST exporting the
20 device.
21
22 The script uses sgp_dd to do raw sequential disk I/O.  It runs with
23 variable numbers of sgp_dd threads to show how performance varies with
24 different request queue depths.
25
26 The script spawns variable numbers of sgp_dd instances, each reading or
27 writing a separate area of the disk to show how performance varies with the
28 number of concurrent stripe files.
29
30 The device(s) used must meet one of two tests:
31 SCSI device:
32         Must appear in the output of 'sg_map'
33         (make sure the kernel module "sg" is loaded)
34 Raw device:
35         Must appear in the output of 'raw -qa'
36
37         If you need to create raw devices in order to use this tool, note that
38         raw device 0 can not be used due to a bug in certain versions of the
39         "raw" utility (including that shipped with RHEL4U4.)
40
41 You may not mix raw and SCSI devices in the test specification.
42
43 Running
44 -------
45
46 The script must be customised according to the particular device under test
47 and where it should keep its working files.   Customisation variables are
48 described clearly at the start of the script.
49
50 e.g.: scsidevs=/dev/sda size=128 crghi=16 thrhi=32 ./sgpdd-survey
51
52 When the script runs, it creates a number of working files and a pair of
53 result files.  All files start with the prefix given by ${rslt}.
54
55 ${rslt}_<date/time>.summary    same as stdout
56 ${rslt}_<date/time>_*          tmp files
57 ${rslt}_<date/time>.detail     collected tmp files for post-mortem
58
59 The summary file and stdout contain lines like...
60
61 dev 30 sz 125829120K rsz 1024K crg    60 thr   120 write 6036.79  [  100.69,  106.49]  read 6720.94  [  112.64,  220.85]
62
63 The number immediately after the write and the read word is the bandwidth
64 in MiB/s computed by measuring total data and elapsed time.  The other numbers
65 are the minimal and maximal bandwidths reported by the individual sgp_dd
66 instances.
67
68 If there are so many threads that sgp_dd is unlikely to be able to allocate
69 I/O buffers, "ENOMEM" is printed.
70
71 If not all the sgp_dd instances successfully reported a bandwidth number
72 "failed" is printed.
73
74 Visualising Results
75 -------------------
76
77 I've found it most useful to import the summary data (it's fixed width)
78 into Excel (or any graphing package) and graph bandwidth v. # threads for
79 varying numbers of concurrent regions.  This shows how the device performs
80 with varying queue depth.  If the series (varying numbers of concurrent
81 regions) all seem to land on top of each other, it shows the device is
82 phased by seeks at the given record size.
83
84 The included script "iokit-plot-sgpdd" will process output files and
85 create .dat (similar to csv) files for spreadsheet import. It also plots
86 the results directly using gnuplot and creates .png files.
87