A TOOL FOR RAID PERFORMANCE DATA COLLECTION A Project Presented to the faculty of the Department of Computer Science California State University, Sacramento Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in Computer Science by VijayVenkatesh Kaveri Venkat JD SPRING 2014 © 2014 VijayVenkatesh Kaveri Venkat JD ALL RIGHTS RESERVED ii A TOOL FOR RAID PERFORMANCE DATA COLLECTION A Project by VijayVenkatesh Kaveri Venkat JD Approved by: __________________________________, Committee Chair Du Zhang, Ph.D. __________________________________, Second Reader Ying Jin, Ph.D. ____________________________ Date iii Student: VijayVenkatesh Kaveri Venkat JD I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the Project. __________________________, Graduate Coordinator Nikrouz Faroughi, Ph.D. Department of Computer Science iv ___________________ Date Abstract of A TOOL FOR RAID PERFORMANCE DATA COLLECTION by VijayVenkatesh Kaveri Venkat JD One of the important concepts in the field of storage is RAID. In practical life, major features to deal with are, to create different levels of RAID in the physical drives through controllers and to test the performance of those RAID levels. Usually, the performance of RAID levels is measured using several I/O software. Crystal Disk Mark[3], AS SSD[4] and Disk Wriggler [5] to name a few. There has to be manual supervision for running these software which is time consuming. Added to that, input specification and parameter selection are not convenient in Crystal Disk Mark [3], AS SSD [4] and Disk Wriggler [5]. It would definitely be better if there is a common tool which can perform the function of creating different RAID levels and testing the performance of those RAID levels together. v The tool is implemented using the Python language and Pywinauto [7] module. This combination helps in the automation and adding different functionalities. Tkinter [8] provides the interface to this tool. Different levels of RAID arrays can be created from the tool, using the command line utility provided along with the specific RAID controller. Once the RAID level is created, it can be selected to perform testing. The result collected gives the data about the I/O per second and bandwidth depending on the specific pattern of input parameters given. Pywinauto [7] is used to send keystrokes to all the three software to perform the automation. The tool can be mainly used by the performance level testers involved in the RAID creation. _______________________, Committee Chair Du Zhang, Ph.D. _______________________ Date vi ACKNOWLEDGEMENTS I would like to thank Dr. Du Zhang for his supportive guidance and assistance throughout this project. Dr. Zhang helped me in completing the project in the way we expected. He was very supportive and understanding which provided me extra confidence to succeed in this venture. He took extra effort to review the report and kept on giving his advice during the course of project completion. I would like to also thank Dr. Ying Jing for her extended support. She provided me with her valuable advice when they are really needed. Added to that, I would like to thank the Department of Computer Science at California State University, Sacramento for providing an opportunity to pursue my Masters’ degree and guiding me all the way to become a successful student. vii TABLE OF CONTENTS Acknowledgements ..................................................................................................................... vii List of Figures .............................................................................................................................. xi Chapter 1.INTRODUCTION ..................................................................................................................... 1 1.1 Significance ........................................................................................................................ 1 1.2Tkinter .................................................................................................................................. 2 1.3 Related Work ...................................................................................................................... 5 2.BACKGROUND ....................................................................................................................... 7 2.1 RAID ................................................................................................................................... 7 2.2 RAID Levels ....................................................................................................................... 7 2.2.1 RAID 0 ......................................................................................................................... 7 2.2.2 RAID 1 ......................................................................................................................... 8 2.2.3 RAID 2 ......................................................................................................................... 8 2.2.4 RAID 3 ......................................................................................................................... 9 2.2.5 RAID 4 ......................................................................................................................... 9 2.2.6 RAID 5 ......................................................................................................................... 9 2.2.7 RAID 6 ....................................................................................................................... 10 2.3 Steps for RAID Creation ................................................................................................... 10 2.4 RAID Performance ........................................................................................................... 13 3.DESIGN ................................................................................................................................... 14 3.1 Use case diagram .............................................................................................................. 14 3.2 Design of RAID Activities................................................................................................ 16 viii 3.2.1 RAID Creation ........................................................................................................... 17 3.2.2 RAID Display ............................................................................................................ 21 3.2.3 RAID Deletion ........................................................................................................... 21 3.3 Design of RAID Tutorial .................................................................................................. 23 3.4 Design of RAID Tool........................................................................................................ 25 3.5 Design of Performance data Collection ............................................................................ 26 3.5.1 Default test automation .............................................................................................. 26 3.5.2 Crystal Disk Mark automation ................................................................................... 31 3.5.3 AS SSD Automation .................................................................................................. 34 3.5.4 Disk WrigglerAutomation.......................................................................................... 37 4.IMPLEMENTATION .............................................................................................................. 40 4.1 RAID Creation .................................................................................................................. 40 4.2 RAID Display ................................................................................................................... 45 4.3 RAID Deletion .................................................................................................................. 47 4.4 Partition Creation .............................................................................................................. 49 4.5 Performance Data Collection ............................................................................................ 49 4.5.1 Default test automation and performance data gathering .......................................... 50 4.5.2 Profile Creation .......................................................................................................... 53 5. PERFORMANCE ................................................................................................................... 55 5.1 Analysis of RAID activities .............................................................................................. 55 5.2 Analysis of Performance data collection .......................................................................... 58 5.3 Analysis of Crystal Disk Mark result ................................................................................ 60 5.3.1 Crystal Disk Mark Result with RAID 0 ..................................................................... 60 5.3.2 Crystal Disk Mark Result with RAID 1 ..................................................................... 62 ix 5.3.3 Comparison of RAID 0 and RAID 1 result................................................................ 63 5.4 Analysis of AS SSD Result............................................................................................... 65 5.4.1 AS SSD Result with RAID 0 ..................................................................................... 65 5.4.2 AS SSD result with RAID 1 ...................................................................................... 67 5.4.3 Comparison of RAID 0 and RAID 1 bandwidth result: ............................................. 68 5.4.4 Comparison of RAID 0 and RAID 1 Iops result ........................................................ 69 5.4.5 Comparison of RAID 0 and RAID 1 Copy benchmark results .................................. 71 5.5 Comparison with Other tool.............................................................................................. 74 6. CONCLUSION AND FUTURE WORK ............................................................................... 75 Bibilography ............................................................................................................................... 76 x LIST OF FIGURES Figure Page Figure 1: Use case diagram ............................................................................................................ 14 Figure 2: RAID Features ................................................................................................................ 16 Figure 3: Physical Drive Selection................................................................................................. 17 Figure 4: RAID level Creation ....................................................................................................... 18 Figure 5: RAID level Display ........................................................................................................ 21 Figure 6: RAID levels deletion ...................................................................................................... 22 Figure 7: different RAID levels tutorials ....................................................................................... 23 Figure 8: RAID level 6 tutorial ...................................................................................................... 24 Figure 9 : RAID Tool Interface ..................................................................................................... 25 Figure 10: Crystal Disk Mark Input Specification ......................................................................... 31 Figure 11: AS SSD benchmark Input Specification ...................................................................... 34 Figure 12: Disk Wriggler Input Specification................................................................................ 37 Figure 13: Flowchart for retrieving drives ..................................................................................... 41 Figure 14: Flowchart for RAID Creation....................................................................................... 44 Figure 15: Flowchart for Displaying RAID ................................................................................... 46 Figure 16: Flowchart to Delete RAID............................................................................................ 48 Figure 17: RAID Creation message box ........................................................................................ 55 Figure 18: RAID Creation error message ...................................................................................... 56 Figure 19: RAID Creation drives error .......................................................................................... 56 Figure 20: RAID Display error message........................................................................................ 56 xi Figure 21: RAID Deletion message ............................................................................................... 57 Figure 22: RAID deletion error message ....................................................................................... 57 Figure 23: Default test message ..................................................................................................... 59 Figure 24 : Logical drive error ....................................................................................................... 59 Figure 25: Test completion message .............................................................................................. 60 Figure 26: Result of Crystal Disk Mark with RAID 0 ................................................................... 61 Figure 27: Result of Crystal Disk Mark with RAID 1 ................................................................... 62 Figure 28: Result of AS SSD with RAID 0 ................................................................................... 65 Figure 29: Result of AS SSD with RAID 1 ................................................................................... 68 Figure 30: Result of AS SSD with RAID 0 in Iops view .............................................................. 69 Figure 31: Result of AS SSD with RAID 0 Iops view ................................................................... 70 Figure 32: AS SSD Copy benchmark result with raid 0 ................................................................ 72 Figure 33: AS SSD Copy benchmark result with raid 1 ................................................................ 73 xii 1 1. INTRODUCTION 1.1 Significance The designed tool will interact with the controller attached to the physical drives and create different RAID levels, which can be specified through GUI. It enables the user to select from the list of physical drives attached to the system. This tool also provides more defined ways of selecting the inputs and specifying the automation. The advantages of using this tool are, RAID levels are created easily Performance testers can run this single tool which will run for several hours by automating the other software like Crystal Disk Mark [3], AS SSD [4], Disk Wriggler [5]. This tool eliminates the task of manual supervision as well. It provides the functionality to create different profiles which can be used for future automation. It also carries the tutorial package which gives a clear insight of the different RAID levels and their significance to the testers. 2 RAID Tool provides outputs using two metrics: 1. Bandwidth 2. Inputs/outputs per second. Bandwidth is defined as a certain load of data that is transferred from the system to the disks on which RAID is built, per second. Inputs/outputs per secondare defined as the number of inputs and outputs happened between drives and system during read and write operations. By comparing the results of one RAID level with another, the performance of a RAID level is understood.This tool is implemented using Python language and Pywinauto [7] module. This combination helps to achieve different functionalities and Tkinter is used for providing Graphical user interface. 1.2Tkinter Tkinter is the standard GUI library for Python. Python when combined with Tkinter [8] provides a fast and easy way to create GUI applications [8]. Tkinter provides a powerful object-oriented interface to the Tk GUI toolkit. Creating a GUI application using Tkinter is an easy task. All you need to do is perform the following steps [8]: Import the Tkinter module. Create the GUI application main window. Add one or more of the above-mentioned widgets to the GUI application. 3 Enter the main event loop to take action against each event triggered by the user. Tkinter components used in this project are listed below [8]: Button The Button widget is used to display buttons in your application [8] CheckButton. The Checkbutton widget is used to display a number of options as checkboxes. The user can select multiple options at a time [8]. Frame The Frame widget is used as a container widget to organize other widgets[8]. Label The Label widget is used to provide a single-line caption for other widgets. It can also contain images [8]. Tkmessagebox This module is used to display message boxes in your applications [8]. Listbox The Listbox widget is used to provide a list of options to a user [8]. 4 Entry The Entry widget is used to display a single-line text field for accepting values from a user [8]. TopLevel The Toplevel widget is used to provide a separate window container [8]. LabelFrame A labelframe is a simple container widget. Its primary purpose is to act as a spacer or container for complex window layouts [8]. Message This module is used to display message boxes in your applications [8]. Menubutton The Menubutton widget is used to display menus in your application [8]. Crystal disk Mark [3], AS SSD [4] and Disk wriggler are the open source software included in the RAID Tool to calculate the performance of the RAID level. Crystal Disk Mark [3] is disk benchmark software that provides set of predefined inputs to measure the sequential reads/writes bandwidth and random read/writes bandwidth. These values are the performance value of a specific RAID level on which 5 testing is conducted. Bandwidth of a certain RAID level can be compared with another RAID level to understand the difference in the performance. AS SSD [4] software generally used to determine the performance of the solid state drives. In this case it is similar to Crystal disk Mark with the added features like the results are produced in two forms .They are bandwidth and Inputs/outputs per second .These two values are through which the performance of the RAID level can be understood. Disk Wriggler [5] is benchmark software for testing file system storage throughput. When compared to previously mentioned software this has an added advantage of letting user to decide the way the Input /output operation has to be carried out .For example , either asynchronous or synchronous Input/output. The output produced from this software are bandwidth which is the data load read/written into the disk on which the RAID is created. By finding this bandwidth in read and write operations the performance is checked. RAID level with high performance usually has more bandwidth and the level with average performance usually has a lesser value. By using these additional software and their results such as data transferred between the drives per second, Input/output operations per second user can understand that the RAID level with higher performance produce higher results in these two metrics and those with average performance produce low values. 1.3 Related Work 6 While considering the related work, there are other tools in the market like Maxview Storage manager to create RAID levels. Maxview storage manager[10] is a tool to build RAID level in the physical drives. When compared with RAID Tool, it doesn’t include the testing and tutorial feature in it. This tool is complete software for the performance testers to create, learn and test the RAID properties. The performance data such as bandwidth and Inputs/outputs per second for different data size are collected by the RAID Tool which is not achieved by Maxview storage manager [10] 7 2. BACKGROUND 2.1 RAID RAID stands for Redundant Array of Independent Disks .RAID is a storage technique which involves the combination of multiple disk drives into one single logical volume for the purpose of data redundancy and improved performance [1]. In RAID, the data is placed on multiple disks in which the Input/Outputs operations are carried out in balanced way leading to the improved performance. Since there are multiple disks the Mean Time between Failures are also increased. There are various RAID levels which differ in the way, which the data is distributed across the multiple disks. Depending on the level, the redundancy and the performance vary. 2.2 RAID Levels Initially there were five RAID levels, due to the rapid progress in the storage industry several other RAID levels were brought into picture. There are nested levels which are implemented by combining two different standard RAID levels. The various RAID Levels are: 2.2.1 RAID 0 RAID 0 is performance oriented data striping methodology. This doesn’t provide data redundancy and fault tolerance features. The reason for using the RAID 0, it improves the performance. These performance improvements is achieved by parallelism 8 of read and write operations across the multiple disks [1]. It doesn’t include an error detection mechanism which makes RAID 0 incapable of reproducing the lost data. RAID 0 is considered as actual RAID only when it is combined with other RAID levels to provide data redundancy, regeneration and rebuilding [2]. 2.2.2 RAID 1 RAID 1 is made up of mirroring. In RAID 1 same set of data is written to two (or more) drives .Once a read operation is conducted, it is serviced by any of the drives that holds the data. RAID 1 provides improved performance during the read operation by least seek latency and rotational latency [1]. On the other hand, the performance is degraded during write operation because; the same data has to be written in all the drives. Thus the slowest drive in the RAID array decides the write performance. RAID 1 is very popular because of its simplicity and data availability .RAID 1 array members operate independently to provide high Input/output transactions [2]. 2.2.3 RAID 2 RAID 2 is made up of bit level striping with dedicated hamming code parity. The spindle rotation of all disks is synchronized so that sequential bits will be on different disks during the striping of data [1]. Hamming code parity is calculated across the corresponding bits and stored on at least one parity bit. RAID 2 is not used in companies because it involves special disk features. RAID level 2 is obsolete and it is not available in any current systems [2] 9 2.2.4 RAID 3 RAID 3 is made up of byte level striping with dedicated parity. The spindle rotation of all disks is synchronized so that the sequential bytes will be on different disks during the striping of the data [1]. Parity is calculated across the corresponding bytes and stored on a dedicated parity. RAID 3 is not used in practice. RAID 3 achieves high data transfer rate and high data availability at low cost when compared with the RAID level 1. Since all the drives in the RAID 3 operates in lock steps the transaction performance is poor [2] 2.2.5 RAID 4 RAID 4 is made up of block level striping with dedicated parity. The striping of the data is performed in the size of blocks across multiple drives. RAID level 4 array’s members can be accessed independently [1]. Therefore the performance is higher in Input /Output transactions rather than large file transfers. RAID 4 is very rare in usage and not used in many industries. The important feature to be considered in RAID 4, it is not implemented without writes back cache, because the dedicated parity will lead to an inherent bottleneck situation [2]. 2.2.6 RAID 5 RAID 5 is made up of block level striping with the distributed parity. When compared to RAID 4 the parity information is not stored in the same drive it is distributed 10 across different drives and stored [1]. The very important advantage of the RAID level 5, if a drive fails at any point of time the read operations doesn’t get interrupted; it is serviced from other drives. When compared to RAID 4, this level reduces the write bottleneck situation. Raid 5 is often included with the techniques such as caching and parallel multi processors to overcome the drawbacks of RAID 4 [2]. 2.2.7 RAID 6 RAID 6 is made up of block level striping with double distributed parity. RAID 6 can provide tolerance up to two failed drives i.e. it can protect against failure of two drive members by employing two independent forms of check data [1].Though it provides high data reliability , the write penalty is more worse than RAID 5 . This write penalty issue of RAID 6 is often reduced by using the technique scaling [2] 2.3 Steps for RAID Creation The following are the steps carried out to complete the process of building RAID in the physical drive. 1. Data Redundancy: The first step in creating RAID is partitioning the available storage capacity of a disk drive into two. They are, User data 11 Check data The user data is the actual data that has to be written on the disks. The check data is the copy of the data which can be either the mirroring of the original data or an error correcting code obtained from the user data. The user data must be accompanied with the check data when it is being stored in the different disk 2. Regeneration: The next step in RAID would be to include algorithms for regeneration of the user data to a disk system’s Array management Function. Regeneration employs check data and corresponding user data to reproduce the user data from the failed disk. 3. Rebuilding: In this step the disk system’s Array management function is filled with the rebuilding capability. It is the process in which both the user data and check data from the failed disk are reproduced and written to a replacement disk .This step also protects against further faults by restoring the redundancy after the failure. 4. Functional Redundancy: The next step in RAID is to include the functional redundancy to a disk system. In order to provide reliability to data every module of the disk system must be protected against the failure .This is implemented by adding redundant components. 12 Prior mentioned steps in RAID will help RAID array to continue without data loss even when a disk in RAID array becomes faulty. With this step included the data remains available even if the drive fails. 5. Minimizing Write Bottleneck: By implementing the first four steps, a disk system can be considered as RAID. But RAID systems are prone to write bottleneck situations. Because of this write bottleneck, RAID technology wouldn’t be considered as an optimized storage solution. In order to minimize the bottlenecks various techniques are involved [2].They are, Cache Write-assist-disks Parallel processors Cache will provide more memory space to avoid the bottleneck situation. Write assist disk is an additional disk unit[13].This disk unit improves performance of interactive write operations, and ensures data integrity if a power loss happens[13]. Write operations to the write-assist disk do not require parity calculations. In parallel processors, concurrent use of the resources is employed to avoid these bottleneck scenarios By eliminating the write bottleneck situations the performance can be improved. This summarizes the steps carried out during the RAID creation in the disks. 13 2.4 RAID Performance Performance is one of the important features in RAID which decides about the usage of different RAID levels. By finding the performance of a particular RAID level, the user can decide whether he could use that RAID level in their system. Performance of a particular RAID level is understood by calculating the data transferred from the RAID level during the read/write operation. This data transfer in the disks are usually calculated using bandwidth and Input/outputs per second. 14 3. DESIGN 3.1 Use case diagram Figure 1: Use case diagram 15 User can perform various activities using the RAID Tool. They are grouped into categories. Create RAID: User can create different RAID levels based on the physical drives attached to the system. Display RAID: User can refer the list of RAID levels created in the physical drives that are attached to the system Delete RAID: User can delete Different RAID levels that are present in the external drives of the system. Create Partition: User can create a partition in the RAID level. Partition is created in the RAID level to conduct performance testing View Tutorials: User can view the information and behavior of Different standard RAID level can be referred. Start Default test: To conduct the performance testing on different RAID levels all three software are executed one by one in a single test. This is considered as default test Automate Software: Crystal Disk Mark [3], AS SSD [4], Disk Wriggler [5]can be automated individually to understand the performance level of RAID level with various input specification 16 Specify Inputs: User can select different sets of inputs like Sequential read/write, Random read/write to analyze the performance of RAID levels in different perspective Create Profiles: User can save the current selections like test drive, load size, number of run to start the test in profiles. These profiles can be used to reproduce the same testing environment. 3.2 Design of RAID Activities In RAID activities section of RAID Tool, different operations related to the RAID are provided. They are RAID Creation RAID Display RAID Deletion RAID tutorial Figure 2: RAID Features 17 User can select any specific option to transverse to the next windows in the tool and carry out the intended functionality. Each functionality has its own design and feature. 3.2.1 RAID Creation In the phase of RAID creation, tool displays the physical drives that are attached to the system. User is allowed to select the physical drives from the list. The selected drives are used for creating RAID Figure 3: Physical Drive Selection 18 As soon as user selects the physical drives, the tool will prompt user for further options like, Level Size Name Enable or disable Read cache, Write back or Write through RAID built type Figure 4: RAID level Creation 19 Level option allows the user to specify the level of the RAID to be created in the selected physical drives. Name option allows the user to define a name for the RAID level. By naming the RAID level it acts as a unique identifier for that particular level. Read cache can either be enabled or disabled in the RAID created. By selecting this option, user will be aware of the read cache state. User can also enable or disable the write cache. By selecting the Write back option the cache is enabled and by choosing the Write through option the cache is disabled. Finally, build type allows the user to select the way in which the RAID has to be createdin the physical drives. The various options provided are: Build/Verify Clear Quick Init Skip Init Each build type has its own way of building the RAID level in the drives. The user can select the required type based on the need. 20 Build/Verify [11] method makes the RAID array available for use immediately. This operation takes in background. This method creates the parity for each disk in the array. Example, For RAID 5 and RAID 6, parity is computed and written Clear [11] is a RAID creating method in which array is not available to use until the creation operation is completed. This is the fastest way to set the disks into a known good state. In Quick Init [11] method, RAID array is available for use immediately. This method will create metadata on member disks of the array and the build process is bypassed Skip Init [11] method is used in the case where it updates metadata only. If multiple disk drives fail in the same logical device, it may be possible to recover the data by recreating the logical device without the initialization step. Once these values are specified by the user, the tool will interact with the controller and the specified RAID levels are created on the selected physical drives connected to the system. 21 3.2.2 RAID Display The display option in the tool provides the information about the existing RAID levels in the underlying physical drives within the system. Figure 5: RAID level Display This option will provide specifics about the RAID level and RAID Name. 3.2.3 RAID Deletion The Delete option in the tool will enable the user to delete a particular RAID level. The existing RAID levels are displayed accordingly with their name. User can select a level from the list and delete it. 22 Figure 6: RAID levels deletion The Create Volume option in the tool will enable the user to change the created RAID level into a disk volume. This option is implemented because the performance software included in the tool cannot recognize the RAID levels created in the physical drives unless a volume is created. This functionality is achieved by running a script that interacts with the disk manager of the operating system. Once the volume is created in the RAID level this will become another logical drive in the operating systems with the Volume Label Q. The performance analysis is conducted in this specific volume. 23 3.3 Design of RAID Tutorial The tutorial option in the tool displays the various RAID levels that can exist. Added to that, once the user selects a particular RAID level a prototype of that RAID level is displayed. Figure 7: different RAID levels tutorials A standard size of 50GB is considered for all the RAID levels. The other specifications in accordance with this size and the particular RAID level are displayed. It includes the information like parity space, drives included in creating that level and an image to give a clear picture of how the parity works in certain RAID level. 24 Figure 8: RAID level 6 tutorial When considering the performance tests of the RAID levels created in the system, the tool provides several options to conduct the test. The performance tests are conducted by the open source software such as Crystal Disk Mark [3], AS SSD [4], and Disk Wriggler [4] .These open source software will interact with the RAID Volume and run the tests as specified by the user and provides the result. 25 3.4 Design of RAID Tool The tool prompts the user to enter the folder in which the results should be stored. Once the user enters the folder name and starts the default test option, the tool starts to automate the other open source software; RAID Tool will start the test and feeds the default inputs to run the test. Figure 9 : RAID Tool Interface 26 3.5 Design of Performance data Collection 3.5.1 Default test automation The default test case would be to perform all the patterns of read and writes like Sequential Read/write, Random read with block size as 512 KB, Random write with block size as 512 KB, Random read with block size as 4KB and queue depth as 1, Random write with block size as 4KB and queue depth as 1, Random read block Size as 4KB and queue depth as 32, Random Write with Block size as 4KB and Queue depth as 32.There are different patterns in reading and writing the data from the drives, out of those the sequential and the random plays an important role. As the name suggests the sequential type will carry out the read/write operations, which are started from the software sequentially in the drives and the random type will carry out the read/write operations in random manner in the drives in which the RAID is created. The block size is a parameter which specifies the size of the input and output used during each read and write operation. Every read and write is done in full multiples of the block size. For example, if the block size is given as 50MB,for each read and writes operation, 50MB of data is read and written from the disks in which the RAID is created respectively. Since, RAID is built on the multiple drives; it is accessed by specifying the block size rather than the sector size which is used when accessing a single drive. The queue depth is the parameter which is defined as the number of pending input/output requests for volume[3].The maximum limit of queue depth one can give as input is 256MB.It is usually specified in the powers of 2. 27 These input parameters are chosen in a right combination and made as test case to get a clear performance analysis of the RAID level created. The following will be the default test conditions to test the Created volume. Sequential Read Sequential Write Random Read with Block size 512 KB Random Write with Block Size 512 KB Random Read with Block Size 4KB and Queue depth =1 Random Write with Block size 4KB and Queue depth =1 Random Read with Block Size 4KB and Queue depth =32 Random Write with Block size 4KB and Queue depth =32 These are the input criteria designed by the Crystal designed Mark [3] as different test cases to analyze the performance of the RAID levels efficiently. RAID Tool select these inputs by sending keystrokes [7] to Crystal Disk Mark [3]. RAID Tool will automate the Crystal Disk Mark [3] tool to run this entire test suite for one single time. When the Crystal Disk Mark [3] is running these tests; RAID Tool will remain ON and check for the termination of the Crystal disk mark[3]. RAID Tool will be constantly checking for the temporary folder with the name starting from “CrystalDiskMark” within the logical drive which is exposed for testing. This temporary folder is removed only when the test is completed. 28 RAID Tool derives a conclusion that the test is completed if there is no temporary folder in the logical drive on which the testing is conducted. After this detection, RAID Tool will take the screenshot of the result and along with that bandwidth which means the megabyte of data transferred per second of the entire test is also collected RAID Tool stores these result in the text file by naming it with system date and placing the file in the default test directory. The screenshot is also saved in the same naming convention under the same directory. Once the automation of the Crystal Disk Mark [3] is completed the RAID Tool starts the automation of the AS SSD [4]software. AS SSD [4]software implements the same test methodology as Crystal Disk Mark [3]with an additional advantage of enabling the users to run the read/write operations with more number of threads rather than one single thread. By increasing the number of threads to 64 from 1, the inputs and outputs in the drive increases significantly. It also increases the bandwidth of the read/write operations. But AS SSD [4] software does not include a provision to specify the queue depth and block sizes. These values are always set to the default values which in this case are, queue depth will be 32 and block size will 4KB. The default test parameters fed to the AS SSD [4] software are, Sequential Read Sequential Write Random Read with Block Size 4KB Random Write with Block size 4KB Random Read with Block Size 4KB with No of threads = 64 29 Random Read with Block Size 4KB with No of threads = 64 The default test is carried out by AS SSD [4]with the above mentioned parameters. . RAID Tool will be constantly checking for the temporary folder with the name starting in “ASSSD” within the logical drive in which the testing is ongoing. When the test is completed this temporary folder is removed. RAID finds that the test is completed if there is no temporary folder with a name “ASSSD” in the logical drive on which the testing is conducted. Once the test is completed RAID Tool will take a screenshot of the result which provides the information about the bandwidth of the logical drive tested. In the default test case it is always the logical drive Q. The bandwidth values of the default test suite is stored in the text file with the same naming convention as Crystal Disk Mark [3] by including asssd in front for differentiating the results. Both the text file and the image are stored in the default result directory. RAID Tool after storing these results will start the automation of Disk Wriggler [4] software. Disk Wriggler [4] is actually used for testing the bandwidth of the Input/output to the file system. The input can be given as sequential file or as different frames within one large file. The default test configuration using the Disk Wriggler [4] includes the testing of the logical volume with the Direct Input/Outputs and Asynchronous Input/Outputs. RAID Tool executes a command with the default parameters, in which the size of the frames is 4KB. The test is conducted for both direct and asynchronous input/output conditions. 30 The termination of the Disk Wriggler [4] tool is detected by the removal of the temporary directory under the name “DiskWriggler” which will be in the logical drive in which the testing is carried on. RAID Tool will collect the result of the disk wriggler software which includes the information such as How many frames were written to that specific logical drive in 5 seconds How long did it take to write the 4000 frames The minimum, maximum and average value of frames per seconds value The minimum, maximum and average value of bandwidth of the read writes operations. From this result, bandwidth which is defined as the megabytes of data transferred per second in the drives on which the RAID is created is detected. By knowing the bandwidth, user can study this value to compare the results achieved from different RAID levels. RAID level with higher performance has a higher bandwidth value. Likewise, frames per second will also be higher in the RAID level with higher performance. The results are stored in the text file. 31 3.5.2 Crystal Disk Mark automation Figure 10: Crystal Disk Mark Input Specification The tool is designed in a way that this testing software can be accessed individually. The user is allowed to select one of the software from the list below: Crystal Disk Mark AS SSD Benchmark Disk Wriggler 32 After selecting software from the list the user can move forward and start specifying the input parameters. RAID Tool provides a set of options to automate the Crystal Disk Mark [3] tool. The options specified are, Load type Test Runs File Size Test Drive Test Data Load type is the way in which data is fed during the read/write operations. The different load types are: Sequential load Random Load Test runs parameter defines the number of times the test has to be executed in the logical drive. File size parameter describes the data size that is used in the Input/output of the read write operation Test drive parameter allows the user to select the specific logical drive in which the test has to be conducted. 33 Test data parameter helps the user to specify the type of the data that is written on the drives during the test. The various options in test data are: Random 0fill 1Fill When the user selects the option Random, as the name suggests the Input/output of the read and write operations are performed in random bits of 0s and 1s. In 0fill,read and write operations are carried out only with 0s. In 1fill, inputs and outputs in the read/write operations are carried out only with1s. After specifying the testing conditions using RAID Tool with the various options mentioned above, user can start the Crystal Disk Mark [3]software and this will perform the test according to the inputs specified from the RAID Tool. RAID Tool also provides an option of creating the profiles for the test cases. User can create different set of test suite and make them as a profile for future creation of the same test environment. RAID Tool allows the user to specify the profile name. After entering the profile name and clicking create profile button, it will produce the profile with the 34 specified name containing details about the test environment. Users are allowed to select from the list of the profiles created earlier. By selecting the “Created_profiles” button, RAID Tool will display the profiles. User can select a profile from the list and start the test. 3.5.3 AS SSD Automation RAID Tool provides a way to automate other benchmark software AS SSD. Once the user selects this software from the list, the RAID Tool provides the interface to automate this SSD Benchmark software. Figure 11: AS SSD benchmark Input Specification 35 The options provided are, Load drive Load type Load drive option displays the list of logical drives existing in the system. The user can select the required logical drive on which the testing needs to be conducted. Load type allows the user to select a different set of loads. They are, Sequential Read/Write Random Read/Write with 4KB size Random Read/Write with 4KB size and 64 threads All Once these two options are finalized by the user, user has to select the type of the test that the software has to carry out. The various type of tests are: SSD benchmark Test Compression Benchmark Test Copy Benchmark Test SSD Benchmark test carry out the read/write operation in the selected logical drives with the selected load type. The result produced from this test includes the 36 Input/output bandwidth in Megabytes per second and also includes Inputs/outputs per second [4]. The Copy benchmark test gives the speed and duration of the Read/write operations. From which the Bandwidth of the Input/output are detected as well. This test undergoes three different testing sessions. They are, ISO Programs Games ISO is carried out through Copy benchmark test by creating test folder for large files and the programs is carried out for small programs [4]. Games option is selected to test the condition of the RAID level in the gaming computers. The Compression Benchmark test allows detecting the data compressibility by displaying the Read/Write Bandwidth values [4]. The result is stored in the graph format. RAID Tool will automate this software based on the option selected by the user. Once the test is completed, RAID Tool will store the results in the text file with the system date .A screenshot is captured as well. Both the text file and the screenshot are stored in the specified directory. 37 3.5.4 Disk Wriggler Automation The other important software automated by the tool is Disk Wriggler [4]. User can select the disk wriggler option from the software list. After selecting the disk wriggler form the list, the user is prompted with different options to carry on the test. Figure 12: Disk Wriggler Input Specification 38 The options are, Test drive Number of frames Input/output type Test drive allows the user to specify the logical drive in which the testing has to be carried out. This provides the list of logical drives created in the system. Number of frames is an option in which the user can specify the count of frames that needs to be read or written during the operation. The Input/output type defines the way in which the read and write operations are carried out. This option has several sub options. They are Direct Input/output Asynchronous Input/output Synchronous Input/output Cached Input/output Direct Input/output Read These different variations in the Input/output type allow the frame to be read and written in the different manner. 39 User can select these options and start the Disk Wriggler [4] software. Once the testing is completed the results are stored in the text file which contains the information about the bandwidth of the read / write operations. Results collected by testing these open source software are nothing but the performance data of the RAID level. Both the bandwidth and the Input/output per seconds are the metrics used to analyze the performance of the RAID levels. These results are compared to understand the difference between the performances of various RAID levels 40 4. IMPLEMENTATION 4.1 RAID Creation RAID creation can be classified into two steps. They are Selecting the physical drives Specifying the Characteristics of the RAID Different RAID levels are created on various physical drives attached to the system. The following algorithm implements the functionality of retrieving the information about the physical drives in the system and displaying to the user 1. Check whether the physical drives are attached to the system. 2. If there are drives: a. Open a file to write the configuration details b. Execute a command in controller and get details c. Write the information into the file d. Extract the name and model of the drive into variables e. Insert the values into listbox d. Display the listbox 3. If there is no drive: a. Display the message that , there is no physical drives in the system 41 Figure 13:Flowchart for retrieving drives 42 inkscape_dir=r"C:\Program Files\cmdline" assert os.path.isdir(inkscape_dir) os.chdir(inkscape_dir) with open('C:\Program Files\cmdline\output.txt', 'wb') as f: process= subprocess.Popen(['arcconf',"getconfig","1"],stdout=subprocess.PIPE) for line in iter(process.stdout.readline, ''): sys.stdout.write(line) f.write(line) symbolList=[] for line in open('C:\Program Files\cmdline\output.txt','r'): if 'Model' in line: symbolList.append(line.split()[2:4]) l = Label(root_sel, text="Select the drives", width=50,bg="red", fg="white") l.pack() l.place(x=110, y=20) listbox = Listbox(root_sel , selectmode=MULTIPLE,width=50) for option in symbolList: listbox.insert(0,option) listbox.pack() listbox.place(x=110, y=40) Code for retrieving the drives connected to the System Above mentioned code interacts with the controller and retrieves the configuration details of the physical drives and the controller as well. This retrieved information is parsed into a list and inserted into the listbox and presented in the user interface. The next step in the process of creating the RAID is specifying the characteristics of the RAID. Once the user selects the criteria like level, size, enabling or disabling Read cache, Write through or Write back for write cache; the parameters to define the RAID creation are received. After providing the inputs, user clicks create RAID option. 43 Following algorithm implements the functionality of creating the RAID in the desired physical drives. 1. Get the drives selected 2. Get the specification of the RAID 3. Execute the command to create RAID in controller 4. If the RAID level is created successfully a. Display the message RAID is created 5. If the RAID level cannot be created. a. Display the message , stating that error in inputs Following is the snippet created from the algorithm mentioned above. inkscape_dir=r"C:\Program Files\cmdline" assert os.path.isdir(inkscape_dir) os.chdir(inkscape_dir) with open('C:\Program Files\cmdline\output.txt', 'wb') as f: process= subprocess.Popen(['arcconf',"create","1","logicaldrive",size,level,"0","0","0","1","0","2", "0","3","noprompt"],stdout=subprocess.PIPE) for line in iter(process.stdout.readline, ''): sys.stdout.write(line) f.write(line) Code for Creation of RAID 44 Figure 14: Flowchart for RAID Creation 45 4.2 RAID Display To display the Raid levels created in the physical drives, the tool has to interact with the controller and find the details. The tool sends a command in order to retrieve all the information about the physical drives. Following algorithm explains this functionality. 1. Check whether the RAID levels are created in the drives. 2. If RAID levels are present: a. Open a file to write the information b. Execute a command in controller and get RAID details c. Write the configuration details into the file d. Extract the name and level of the RAID into variables e. Insert the values into listbox and display 3. If there is no RAID level: a. Display the message that , there is no RAID level in the system Following snippet implements the functionality of displaying RAIDs inkscape_dir=r"C:\Program Files\cmdline" assert os.path.isdir(inkscape_dir) os.chdir(inkscape_dir) with open('C:\Program Files\cmdline\output.txt', 'wb') as f: process=subprocess.Popen(['arcconf',"getconfig","1"],stdout=subprocess.PIPE) for line in iter(process.stdout.readline, ''): sys.stdout.write(line) for line in open('C:\Program Files\cmdline\output.txt','r'): if 'Logical device name ' in line: name.append(line.split()[4:6]) if 'RAID level ' in line: level.append(line.split()[-1]) 46 Code to Display RAID levels Figure 15: Flowchart for Displaying RAID 47 4.3 RAID Deletion Deletion functionality is implemented in the tool through a sequence of steps. The following algorithm gives a clear insight about the process of deleting RAID. 1. The name of the RAID level to be deleted is selected 2. Name of the RAID level is compared with the Logical drive number. 3. Logical drive number is found 4. Execute the command to delete the RAID level using this logical drive number 5. If the Raid level is deleted,display a message box to the user. Below mentioned snippets is included in the RAID Tool to implement the deletion functionality. inkscape_dir=r"C:\Program Files\cmdline" assert os.path.isdir(inkscape_dir) os.chdir(inkscape_dir) with open('C:\Program Files\cmdline\output.txt', 'wb') as f: process= subprocess.Popen(['arcconf',"delete","1","logicaldrive",devicenumber,"noprompt"],stdout =subprocess.PIPE) for line in iter(process.stdout.readline, ''): sys.stdout.write(line) f.write(line) Code for Deleting RAID 48 Figure 16: Flowchart to Delete RAID 49 4.4 Partition Creation After creating the RAID level in the physical drive the important task to accomplish is creating the partition. Without creating the partition in RAID level the logical drive cannot be used for performance testing. Diskpart functionality in the windows operating system is used to create partition. The steps followed in changing the RAID level to a partition are: 1. Disk across which the RAID level exists is selected 2. After selecting the disk, RAID volume from the disk is selected 3. After selecting the volume, partition is created on that volume 4. A drive letter Q is assigned to the partition. 5. The Volume is named as RAID. Following these steps, the RAID level created can be subjected to the performance testing. 4.5 Performance Data Collection Performance data is collected using the automation of the software. Software automation is carried out using the module Pywinauto [7]. This module helps to send keystrokes to any application running in Windows platform. The following snippet is an example that demonstrates the way in which the keystrokes are implemented in the code using the Pywinauto [7] 50 4.5.1 Default test automation and performance data gathering The following algorithm gives a clear insight about the automation of the open source software in default test and performance data gathering. 1. Get the folder name to store the performance results 2. Check for the logical drive Q 3. If Q is present A. Check for the temporary folders of the open source software in the drive Q B. If the temporary folders are present a) Abort the testing C. If there are no temporary folders a) Start the Crystal disk mark b) Inputs provided are default and the testing is carried out in Logical drive Q. c) Automate the crystal disk mark. d) Check for the temporary folder starting with Crystal in Logical drive Q e) If folder is present i. Remain idle ii. Again check for the folder a. If the folder is not present i. Take a screenshot of the software ii. Obtain the performance results and store it in a text file 51 iii. Start the AS SSD benchmark software iv. Inputs provided are default and testing is carried out in Logical drive Q. v. Automate the AS SSD Benchmark. vi. Check for the temporary folder starting with ASSSD in Logical drive Q vii. viii. If folder is present A. Remain idle B. Again check for the folder If the folder is not present A. Take a screenshot of the software B. Retrieve the performance results and store it in a text file. C. Start the Disk Wriggler software D. Default Inputs provided and testing is carried E. Execute a command in the command prompt with this software. F. Check for the temporary folder starting with Disk in drive Q G. If folder is present i. Remain idle ii. Again check for the folder 52 H. If the folder is not present i. Performance results are written into text file and stored ii. Display a message default test is completed. 4. If Q is not present A. Abort the testing The following snippet implements the functionality of automating crystal disk mark [3]. from pywinauto import application from pywinauto import application app1=application.Application() app1.start_('C:/AUPEDACO/CDM/CrystalDiskMark/DiskMarkX64.exe') time.sleep(1) app=application.Application() app.start_('C:/AUPEDACO/CDM/DMStream050/DiskMarkStream.exe') dlg=app.DiskMarkStream app.dlg.control dlg.TypeKeys("{ENTER}") dlg1=app.Open app.dlg1.control dlg1.TypeKeys('C:\ AUPEDACO\CDM\DMStream050\samplemacro.csv') dlg1.TypeKeys("%o") dlg2=app.top_window_() app.dlg2.control dlg2.TypeKeys("{ENTER}") dlg3=app.top_window_() app.dlg3.control dlg3.TypeKeys("{ENTER}") Code for Software Automation 53 When testing the performance of the Raid levels, the logical volume assigned to letter Q is selected. The following code snippet is implemented to retrieve the logical drives. bitmask = windll.kernel32.GetLogicalDrives() for letter in string.uppercase: if bitmask & 1: drives.append(letter) bitmask >>= 1 for drive in drives: typeIndex = windll.kernel32.GetDriveTypeW(u"%s:\\"%drive) if (typeIndex == 3 or typeIndex == 4): drive1.append(drive) Code to retrieve the Logical drives 4.5.2 Profile Creation Profile creation is one of the important features of the tool. Soon after selecting the inputs and creating a test environment user can generate profiles. The profiles are used to reproduce the same test environment in future. Profile creation is implemented by following this algorithm. 1. User selects the inputs 2. The inputs are retrieved and stored in a persistent file 3. It is stored with the date for later identification 4. When the user wants to retrieve the profiles , the information is received from the storage 5. Profiles is displayed in User Interface with Name, date and further details. 54 The following code demonstrates the working of retrieving profiles and displaying in the user interface. fh= open("C:/AUPEDACO/CDM/DMStream050/profiles","r") data=fh.read() pattern=re.compile(r'PROFILE \s*(.*?)\s*PROFILE_END:', re.DOTALL) matches=pattern.findall(data) print("the matches are ",matches) question="Select the profile from the list" title = "PROFILES LIST" options=eg.choicebox(question,title,matches) #print options options1=options.split("[")[1] options2=options1[:-1] options3=shlex.split(options2) Code for Retrieving the profiles 55 5. PERFORMANCE 5.1 Analysis of RAID activities User selects different drives and specifies the characteristic of the array. RAID Tool reviews the input and once there are no major errors in the specification, the tool interacts with the controller to create the RAID level. RAID creation time depends on the type of the build selected. If a quick built is selected and the RAID level is created, RAID Tool displays the following message box. Figure 17: RAID Creation message box Added to that, RAID Tool is developed in a way to handle the exceptions. If the procedure is carried out without any erroneous inputs or conceptual flaw, RAID level is created and the message is displayed .But there are scenarios which can cause RAID creation to fail. They are Invalid Size for RAID array Mismatch between the RAID levels and the Number of drives selected. No space in the drive to create a new RAID array 56 In these cases the tool displays the below message and prompts the user to re track his input specification. Figure 18: RAID Creation error message If the user is trying to create a RAID level in the system which doesn’t have any physical drives connected, the tool shows the following message box. Figure 19: RAID Creation drives error Analyzing the display option in the tool is very straight forward. If there is a RAID level created in the physical drives attached to the system, RAID Tool will display the details of the RAID level. If there is no RAID level to display, tool displays the following message box Figure 20: RAID Display error message 57 User can delete the RAID level from the tool . Once the delete option is selected , RAID levels currently existing in the system are listed.User can select any RAID level from the list and select the delete button.After couple of seconds the RAID level is deleted and the tool dispalys the below message box Figure 21: RAID Deletion message If the user is trying to use this functionality in the system where there is no RAID level , the tool will display the following message box Figure 22: RAID deletion error message During the creation of the partition, a script file with a set of commands are executed to achieve the result of creating a partition in the RAID level produced. After creating the partition in the RAID level , the tool will display an message box stating that the partition is created , if something went wrong druing the partition procedure , the tool will throw out an message saying that partition cannot be created .If there is no RAID 58 level to create partition it displays the a messgae box with the information that partition cannot be created. 5.2 Analysis of Performance data collection Performance of the each RAID level is understood by undergoing various disciplines of tests using different software. The results are summarized in a specific place and the user can compare the difference of the bandwidth and Input/output during read/write operations for different levels of RAID by looking at the screenshot and the text file which contains the summarized data about the test carried out. To ease the work of the users, the screenshot and the text file is saved in the name of system date .So that the user can analyze the difference in the results of various tests, which took place in different time. The default test is started which automates the other three software with carefully defined input specification to understand the performance difference between the RAID levels. Once the entire automation of all the software is completed, the RAID Tool will collect the results and store that in a same directory. The following message box is displayed when the test automation is completed. 59 Figure 23: Default test message Users can also use the previously mentioned software individually to understand the performance difference between these RAID levels. By accessing the software individually different aspects of the RAID levels in perspective of the performance is learned by user. During the Default test, logical drive Q is always fixed as a constant parameter. This feature is included because the RAID levels are assigned to the label Q while creating partitions. If the tool cannot find a logical drive under the label Q, it shows the following error message. Figure 24 : Logical drive error The Crystal disk mark [3] software is automated with the input specified by the user .RAID Tool allows the crystal disk mark [3] software to undergo the test and retrieve the performance result of the logical drive specified during input. This logical drive is the 60 RAID level created using RAID Tool. Once the test is completed, RAID Tool collects all the performance data and store in a file. After undergoing these series of events , RAID Tool eventually displays the following message box . Figure 25: Test completion message This procedure of automation is carried out for the other two performance data collection software as well. RAID Tool provides different set of input patterns in accordance with the corresponding software. Once the user selects the inputs and starts the test, RAID Tool will provide the inputs to the software and it will produce results. These results are saved in a place where the user can access by the RAID Tool 5.3 Analysis of Crystal Disk Mark result 5.3.1 Crystal Disk Mark Result with RAID 0 When RAID level 0 of size 50GB is created using RAID Tool and tested with Crystal disk mark [3] software, the following result is produced. 61 Figure 26: Result of Crystal Disk Mark with RAID 0 Above figure shows the result of different test types. The definitions of these test types are, All : All Test (Seq, 512K, 4K, 4K QD32) Seq : Sequential Read/Write Test (Block Size = 1024KB) 512K : Random Read/Write Test (Block Size = 512KB) 4K : Random Read/Write Test (Block Size = 4KB) 4K QD32: Random Read/Write Test (Block Size = 4KB Queue Depth = 32). From the figure 26, the bandwidth during different set of read and writes operations are listed. The value of random read with block size 4KB is less than the value of Sequential read of block size 1024 KB. This is because of the fact that, sequential data 62 access is much faster than random data access; because reading randomly involves a higher number of seek operations than reading sequentially. This is the reason why random reads deliver a lower rate of bandwidth. The same is true for random writing[20]. The random write value is greater than the random read value. This is the due to the effect of write back cache. For a random write, the write happens in the background while system going to the next loop iteration; for a random read, the system at some point has to wait for the read to happen before continuing [16]. 5.3.2 Crystal Disk Mark Result with RAID 1 RAID tool can be used to create RAID level 1 by following the same procedure for creating RAID level 0. Once RAID level is created, performance of this level can be tested using Crystal disk mark [3]. The following screenshot is the result of RAID 1 tested with Crystal disk mark [3] Figure 27: Result of Crystal Disk Mark with RAID 1 63 Definition of the test types are equivalent to the test types in RAID 0. The reason for the difference in the values of sequential and random read /write operations is same as the reason for RAID 0 because both were built in same type of physical drives under same environment. 5.3.3 Comparison of RAID 0 and RAID 1 result In order to compare the performance result of RAID 0 and RAID 1, user can look at the values of different test types, From the figure 26 and figure 27,the bandwidth of Sequential read of RAID 0 is approximately twice the value of RAID 1; this is because of the structural difference of the RAID levels. Maximum bandwidth of read/write operations of the RAID 0 is equal to the product of number of drives in the array and the read/write rate of an individual drive. Whereas read /write performance of RAID 1 are the same as read or write performance of an individual drive irrespective of the number of drives in the array[18]. This explainsthat RAID 0 bandwidth values is related to the number of drives used in building the array, more the number of drives, higher the read and write bandwidth values since it involves striping .Thus the RAID 0 which is built from two drives has bandwidth values twice the bandwidth of RAID 1 built from two drives. In Random read/write with queue depth as 1,it does not matter how many disks are there in RAID 0. Since the queue depth is 1, only one 4K request is sent to the array at a given point of time and this 4K request can be only processed by one disk of the 64 array[17]. Therefore, it takes time which includes the raid controller overhead and access time of one disk .This is the reason for RAID 0 not improving with random 4K operations with queue depth as 1.So there is no much difference in the result between RAID 0 and RAID 1. But in Random read/write with queue depth as 32, More RAID 0 member drives and higher queue depth will result in higher bandwidth during read/write operation because multiple RAID 0 members can be at work at the same time since they keep their won queue of reads and write to do[17]. So there is a significant difference in the result between RAID 0 and RAID 1. To summarize, since RAID 0 is a concept of stripping it offers very fast write times because the data is split and written to several disks in parallel. Whereas RAID 1 is a concept of mirroring and writes to a RAID 1 array is slower compared with RAID 0, because the entire data is written to two disks, but in parallel[15].Reads are also very fast in RAID 0. In ideal scenarios, the transfer speed of the array is the transfer speed of all the disks added together, and limited only by the speed of the RAID controller. Reads from RAID 1 not offer such performance boost, because the read speeds are about the same as a single hard drive. so no improvement in performance [15]. Considering all these factors and results in the figure 26 and 27, user can understand that RAID 0 has higher read/write performance than RAID 1. 65 5.4 Analysis of AS SSD Result 5.4.1 AS SSD Result with RAID 0 RAID tool is used to create RAID level 0. AS SSD [4] software can be used to test the performance of the RAID level in different perspective than Crystal disk mark [3]. Same test in these two software may produce minor difference in result because Crystal disk mark [3] while handling read/write operations uses random data .whereas AS SSD[4] uses only 1’s during read and write operations. Following is the screenshot of RAID level 0 tested by AS SSD. Figure 28: Result of AS SSD with RAID 0 66 Definition of the test types are: Seq: Sequential Read/Write Test (Block Size = 1024KB) 4k: Random Read/Write Test (Block Size = 4KB) 4k- 64 Thrd: Random Read/Write Test (Block Size = 4KB ,Number of threads = 64) Acc.Time: Access time for random read/write operation AS SSD includes a scoring method for read and write operations. It also includes a total score. The purpose of the score is to summarize the performance characteristics [12]. The score are calculated as follow. Read Score [13] = SeqR*0.1 + 4kR + 4k-64tR Write Score [14] = SeqW*0.1 + 4kW + 4k64W Total Score [12] = SeqW*0.15 + SeqR*0.1 + 4kR*2 + 4kW + 4k64W + 4k64R*1.5 Definition of the variables used in the formula is: SeqR = Sequential read bandwidth 4kR = Random 4k read bandwidth 4k64R = Random 4k read bandwidth (64 queue depth) SeqW = Sequential writebandwidth 4kW = Random 4k write bandwidth 4k64W = Random 4k writebandwidth (64 queue depth) 67 The random write value is greater than the read value because of write back cache. While carrying out random write, the write occurs in the background while system going to the next writes operation; for a random read, the system during some point has to wait for the read operation to occur before continuing. This is vivid from the read access time and the write access time displayed in the figure 28. Random read operation takes more time than random write operation. The reasons for low bandwidth value of random read and write operations with thread 1 is, only one read or write request can be made to a disk in the array at a given time. Only one disk can process those requests. These values are increased by increasing the queue depths or the number of threads, so that each disk has its own thread and produce better bandwidth during the read and write operation. 5.4.2 AS SSD result with RAID 1 RAID level 1 is created using RAID Tool. Steps carried out for RAID 0 is repeated while testing RAID 1. Following is the screenshot of the RAID 1 tested with AS SSD [4]. 68 Figure 29: Result of AS SSD with RAID 1 The read/write and total score is calculated as per the formula mentioned in the previous section. Random read/write bandwidth is less due to the same reason as RAID 0 because both the raid levels are built on the same drives using the same controller. 5.4.3 Comparison of RAID 0 and RAID 1 bandwidth result: From the figure 28 and figure 29, Sequential read/write value of RAID 0 is almost double the value of RAID 1. The random read/write operation with a single thread doesn’t have significant difference because both the RAID 0 and RAID 1 are constrained by the operating system to function in the same way. But, random read/write operation with 64 threads have significant difference ,because RAID 0 allows the read and write 69 access to all the drives at the same time in different threads and increasing the bandwidth .In RAID 1 due to the mirroring there is no significant increase in bandwidth values with the increased number of threads . Result of RAID 0 and RAID 1 from AS SSD shows that due to striping RAID 0 gets higher read and write bandwidth than RAID 1 which uses mirroring during read and write operations. 5.4.4 Comparison of RAID 0 and RAID 1 Iops result Following is the screenshot of the RAID 0 tested by AS SSD [4] in Input/outputs per second perspective. Figure 30: Result of AS SSD with RAID 0 in Iops view 70 Definition of the test types are: 16MB: Sequential Read/Write Test (Block Size = 16MB) 512B:Random Read/Write Test (Block Size = 512B,Number of threads =1) 4k: Random Read/Write Test (Block Size = 4KB, Number of threads=1) 4k- 64 Thrd: Random Read/Write Test (Block Size = 4KB ,Number of threads = 64) AS SSD software takes same set of steps carried out during bandwidth test for this test as well. Following is the screenshot of the RAID 1 tested using AS SSD [4] in Input/outputs per second perspective. Figure 31: Result of AS SSD with RAID 0 Iops view 71 From figure 30 and figure 31, the value of sequential read /write Inputs/outputs per second and random read/write Inputs/outputs per second of the RAID 0 is nearly twice the values of RAID 1. This is because of the increased read and writes performance in the RAID 0 due to its building type while creating the RAID level which is striping. Whereas, RAID 1 has a building type of mirroring while creating the RAID so each write operations is completed only when the data is written on all the drives . There is no much difference in the values of Random read/write operations with a single thread because of using single thread; it restricts the RAID 0 to act nearly same as RAID 1. Figure 30 and figure 31 shows another performance metric to prove that RAID level 0 has better read and write performance than RAID level 1. 5.4.5 Comparison of RAID 0 and RAID 1 Copy benchmark results RAID tool provide a way to check the performance of the RAID levels by testing with the perspective of the operation that user wants to handle. If a user wants to decide on selecting the RAID level based on his file transfers, he can select the Copy benchmark of AS SSD [4] software to know the result. To explain further, RAID level 0 is created from the RAID Tool on the drives and tested using the AS SSD software [4]. Following is the screenshot of the result. 72 Figure 32: AS SSD Copy benchmark result with raid 0 The test type definitions: ISO- Large program files Program – small program files Game – Files producing more requests These different test types gives an idea to user about the specific test carried out .If an user is working in the environment where he needs to access a large files he should create a RAID level that gives a higher bandwidth value in ISO test .If he works in an gaming environment, he should create a RAID level which produces higher value in Game test. Program test gives the result of the small file transfer. Following is the screenshot of the RAID 1 tested using Copy benchmark of AS SSD[4]. 73 Figure 33: AS SSD Copy benchmark result with raid 1 From the figure 31 and figure 31, RAID level 0 has higher read/write performance in handling large files and the files that require fast response . This is because the read and write request of the RAID 0 is processed by multiple disks in parallel making it more faster when compared to the RAID level 1 which happens to process its requests only by one drive in the array. This structural difference of striping provides better performance than the mirroring. Same set of bandwidth values for read and write operations are obtained running the disk wriggler [5] software. The additional feature in disk wriggler software is it displays the result in the number of frames transferred during each read and write operation .Result of the disk wriggler is stored in text file . 74 5.5 Comparison with Other tool When comparing RAID Tool with the Maxview storage manager, It provides an equally efficient way for maintaining RAID features like RAID creation, RAID display, RAID deletion, Creating partitions. But when the aspect of performance analysis is considered, Max view manager doesn’t provide any feature to collect and compare the performance result of the various RAID levels. The prior mentioned results from other software integrated into the RAID Tool makes this tool as a special combination of maintaining RAID and analyzing the performance of different levels. By considering these favorable points, RAID Tool is very much useful for the performance testers when compared to the Maxview storage manager. 75 6. CONCLUSION AND FUTURE WORK RAID Tool is created to ease the work of performance level testers working with RAID controllers. Different RAID levels are created by the tool .Performance result of specific RAID level is produced and stored in the specified directory. Screenshots were added to the result. Tutorials of different levels are displayed to give the clear picture about the working of the RAID levels for users. This tool helps the beginners to get a clear picture about the working of RAID in actual physical disks. This tool is complete software for the performance testers to create, learn and test the RAID properties. Future Enhancements for RAID Tool: Firstly, adding more software into the RAID tool to analyze different perspective of performance behavior of various RAID levels. Added to that, the tutorial part of the RAID Tool can be improvised with including the animation. 76 BIBLIOGRAPHY [1] The Wikipedia link for RAID and RAID levels [Online] http://en.wikipedia.org/wiki/RAID [2] Concepts of RAID and Steps to build a RAID , The RAID book a storage system technology handbook by Paul Massiglia [3] Crystal Disk Mark Software http://crystalmark.info/software/CrystalDiskMark/index-e.html [4] AS SSD benchmark Software http://www.majorgeeks.com/files/details/as_ssd_benchmark.html [5] Disk Wriggler Software http://freecode.com/projects/diskwriggler [6] Python tutorial for deployment of tool https://docs.python.org/2/tutorial/ [7] Pywinauto tutorial for deployment of automation of software http://pywinauto.googlecode.com/hg/pywinauto/docs/getting_started.html [8] Tkinter tutorial for creating the Graphical User Interface http://www.tutorialspoint.com/python/python_gui_programming.htm [9] Online link to Operating System Concept Animation Library, from Dr. Du Zhang. California State University, Sacramento [Online] http://gaia.ecs.csus.edu/~zhangd/oscal/oscal.htm [10] Maxview Storage manager, related software. https://www.adaptec.com/en-us/products/maxview/ 77 [11] RAID Creation and RAID properties from Adaptec by PMC http://www.adaptec.com/en-us/search.html?q=skip [12] AS SSD Total score calculation http://ssd.userbenchmark.com/Faq/How-is-the-AS-SSD-total-score-calculated/37 [13] AS SSD Read score calculation http://ssd.userbenchmark.com/Faq/How-is-the-AS-SSD-read-score-calculated/37 [14] AS SSD write Score calculation http://ssd.userbenchmark.com/Faq/How-is-the-AS-SSD-write-score-calculated/37 [15] Performance difference in read and write of RAID levels http://www.diffen.com/difference/RAID_0_vs_RAID_1#Performance [16] Random reads vs. random writes http://encode.ru/threads/1285-Random-reads-vs-random-writes [17] Scaling in 4k random reads/write with single thread http://forums.anandtech.com/showthread.php?t=2074803\ [18] Understanding of RAID levels http://www.ni.com/white-paper/7665/en/ [19] Write assist disks to avoid the bottleneck situations while building RAIDS http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/rzaix/rzaixwad.htm [20] Sequential access vs. Random access. http://technet.microsoft.com/en-us/library/cc938619.aspx