The IBM XIV has some great performance monitoring tools. These include:
- Realtime IOPS displayed on the front panel of the XIV GUI
- Realtime performance statistics using XIV Top (as detailed here)
- Realtime performance statistics using the XIV Mobile Dashboard (as detailed here)
- Historical performance information with up to 1 year of statistics, all accessible using the performance tab in the XIV GUI.
The historical performance information is a great source of data and the XIV GUI has some very clever ways to display this data. However you may want to offload these statistics to a spreadsheet. The XCLI allows you to offload stats using a command that is formatted like the one below. This particular example will collect 1440 minutes (24 hours) of statistics in 1 minute intervals starting from midnight on November 6, from the XIV at IP address 10.10.1.10 piping the output to a CSV file.
xcli.exe -m 10.10.1.10 -u admin -p adminadmin -s statistics_get start=2011-11-06.00:00:00 interval=1 resolution_unit=minute count=1440 > stats.csv
However the subsequent output may require further manipulation before it can be used. So we have produced a tool, structured very much like the configuration collection tool I described here, that will help you produce a very useful report.
Here is what you need to do:
1) Download XIV Performance Report version 6.8 zip file from this link. Click where it says Downloading this file.
2) You will get a zip file with six files in it. Unzip them into a folder on a Windows workstation. The Windows workstation also needs the XIV GUI installed on it (actually you only need the XCLI, but the Windows version of the XIV GUI will give you that).
3) Of the six files you just unzipped, you first need to edit the file called: xiv_perf_report_get_files.vbs. Open that file with a text editor (such as Notepad). The easiest way to do this is to right-select the file and choose edit.
4) You need to edit the section that looks like this:
' ****** Edit this list of IP/names and user/password for your own configs myConfigs.Add "1", "-m 184.108.40.206 -u admin -p adminadmin" 'myConfigs.Add "2", "-m 220.127.116.11 -u admin -p adminadmin" 'myConfigs.Add "3", "-m 18.104.22.168 -u admin -p adminadmin" 'myConfigs.Add "4", "-m 22.214.171.124 -u admin -p adminadmin" 'myConfigs.Add "5", "-m 126.96.36.199 -u admin -p adminadmin"
Lets say you have two XIVs, the details for which are:
XIV1 : Management: IP 10.1.10.100 Userid: admin Password: passw0rd
XIV2 : Management: IP 10.1.20.100 Userid: admin Password: passw0rd
So we edit the section I mentioned above and make it look like this:
' ****** Edit this list of IP/names and user/password for your own configs myConfigs.Add "1", "-m 10.1.10.100 -u admin -p passw0rd" myConfigs.Add "2", "-m 10.1.20.100 -u admin -p passw0rd"
Now save the file. You can ignore the additional myConfigs lines further down in the file that start with an apostrophe, these are just examples.
Unless you acquire another XIV, you will not need to edit this particular file again.
5) The default behaviour of the script is to collect performance stats for the previous 24 hours. If this is what you want, then you do not need to change anything else. Just proceed to step 6. If however you want to collect stats for a specific period, then you will need to edit the xiv_create_perf_report.bat file to change the data collection time period. In that file, look for this section. You will need to make two changes.
REM ************ 2 options ahead, choose 1, leave the other in remark! *************** REM *** 1. set your own time frame *** REM edit the following line to the date you need. REM cscript xiv_perf_report_get_files.vbs %folder% "2011-11-04.21:00:00" "minute" "10" "1" REM *** 2. or, get the last 24h *** FOR /F %%i IN ('cscript "%~dp0get_last_24h_start_time.vbs" //Nologo') do SET START_TIME=%%i cscript xiv_perf_report_get_files.vbs %folder% %START_TIME% "minute" "1440" "1"
Firstly un-REM the line starting with cscript (this is the REM shown in red in the example above, which is then gone in the example below). Then REM the line for option 2 (as shown by the extra REM in the example below). You will then need to edit the time period shown in red below. The line “2011-11-04.21:00:00” “minute” “10” “1” will collect 10 samples of 1 minute duration starting at 21:00 on November 04, 2011. Here is another way to state that:
start:2011-11-04.21:00:00 resolution:minute count:10 interval:1
So we could change the 10 to a larger number to get more samples and change the start date and time to get a different time period. You can also change the resolution (from minutes to hours for instance) and interval size (from 1 minute to 10 minutes).
REM ************ 2 options ahead, choose 1, leave the other in remark! *************** REM *** 1. set your own time frame *** REM edit the following line to the date you need. cscript xiv_perf_report_get_files.vbs %folder% "2011-11-04.21:00:00" "minute" "10" "1" REM *** 2. or, get the last 24h *** REM FOR /F %%i IN ('cscript "%~dp0get_last_24h_start_time.vbs" //Nologo') do SET START_TIME=%%i cscript xiv_perf_report_get_files.vbs %folder% %START_TIME% "minute" "1440" "1"
Once you have finished editing, save the file and proceed to the next step.
6) Now double-click on the icon: xiv_create_perf_report.bat (this is the file you may have edited in step 5). This is a Windows bat file that will create a Windows command prompt while it is running. It uses XCLI commands, so if the XIV GUI or XCLI is not installed, it won’t work. It will take some time to collect the data (a whole days stats can take up to an hour to collect), so be patient. Don’t close the Windows Command prompt while it is running, or you will need to start the data collection again. The output will be a new folder with today’s date and time. Inside that folder will be a report that will be named something like: 2011_11_7_8_7_9_xiv_perf_report.xls which will contain worksheets as shown below:
Each sheet is already set up for filtering and contains nicely formatted data. The most common question I get regards what is a write hit (versus a write miss). I explain that here.
If a host or port does not appear, the simple reason is normally that there are no stats to report on that port, so no entry appears.
If you want to see an example of a report, I have one right here: 2011_11_7_8_7_9_xiv_perf_report
If you have a look at the example (which is a bit extreme), you can easily spot some interesting workload patterns and issues:
- On the Volumes sheet you can see that one volume x3850x5_Win2008_E_AnthonyV is getting a huge amount of cache hit workload.
- On the Modules sheet you can see that module 8 has practically no IOPS. This points to a cabling or zoning issue.
- On the FC ports sheet, there are no ports from module 8, again suggesting there is a cabling or zoning issue.
- There is only one active port per module (which is port one). Ideally you should cable up two ports per module (such as ports one and two or ports one and three).
Comments and suggestions very welcome!