Large amounts of performance data are often recorded by modern data storage systems, allowing for detailed performance metrics to be calculated and visualized. An example of a typical modern data storage system is a VNX Series data storage system produced by the EMC Corp. of Hopkinton, Mass. The performance of a data storage system (e.g., in average I/O transactions per second, percent processor utilization, megabytes transferred per second, etc.) may be tracked over time and displayed on a graph.
The above-described conventional systems for filtering performance data and displaying filtered performance graphs may suffer from deficiencies. In particular, it can be difficult to construct a filter for the exact parameters that a user wishes to visualize in the context of a large and complex data storage system.
Thus, it would be desirable to alleviate these concerns by allowing a user to easily and dynamically construct a filter for performance data of a computing system (e.g., a data storage system) to allow specific filtered performance visualizations to be displayed. Thus, embodiments are directed to techniques for presenting a dynamic graphical user interface (GUI) for selecting consistent filters to be used to filter performance data for display in a visualization.
One embodiment is directed to a method of allowing a user to filter a performance data visualization using a GUI on a computing device. The method includes (a) sending a category selection of a particular filterable category of a list of filterable categories to a data server, the category selection having been received from a user via the GUI, the filterable categories representing respective categories of elements for which a computing system records regarding performance of the computing system, (b) in response to sending the category selection to the data server, receiving a set of filterable elements from the data server, the filterable elements of the set respectively representing specific instances of a feature of the computing system represented by the selected particular filterable category, (c) displaying the set of filterable elements of the selected particular filterable category to the user via the GUI, (d) after displaying the set of filterable elements, receiving, from the user, an element selection of a particular filterable element of the set of filterable elements, and (e) creating a filter of performance data of the computing system using the selected particular filterable element to allow filtered performance data to be visualized via the GUI. Other embodiments are directed to a computerized apparatus and computer program products for performing methods similar to that described above.
The foregoing and other objects, features and advantages will be apparent from the following description of particular embodiments of the present disclosure, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of various embodiments of the present disclosure.
Embodiments are directed to techniques for presenting a dynamic graphical user interface (GUI) for selecting consistent filters to be used to filter performance data for display in a visualization.
System 30 includes a computing device 32 which connects to a network 33, which allows it to access a remote data server 34 that provides performance data for the system 30 with reference to a performance database (DB) 35 stored on the remote data server 34. Performance DB 35 stores performance data for the system 30, including performance data associated with the various data storage arrays 31. Remote data server 34 also stores a system configuration DB 36. Remote data server 34 may be any kind of network-connectable computing device, such as, for example, a personal computer, a workstation computer, a server computer, an enterprise server computer, a cellular phone, a smart phone, a tablet, a laptop computer, etc., however, remote data server 34 will typically be a server computer or an enterprise server computer.
Computing device 32 may be any kind of network-connectable computing device, such as, for example, a personal computer, a workstation computer, a server computer, an enterprise server computer, a cellular phone, a smart phone, a tablet, a laptop computer, etc. Network 33 may be any kind of data communication network, such as for example the Internet, a local area network, a wide area network, a virtual private network, a cellular data network, a wireless local area network, an interconnected fabric of connections and switches, similar systems, and combinations thereof.
Computing device 32 includes a processor 38, memory 40, a user interface (UI) 50, and a network interface 60.
Processor 38 may be any kind of processor or set of processors configured to perform operations, such as, for example, a microprocessor, a multi-core microprocessor, a digital signal processor, a system on a chip, a collection of electronic circuits, a similar kind of controller, or any combination of the above.
Network interface 60 interfaces with network 33. Network interface 50 may include an Ethernet card, a cellular modem, a Wireless Fidelity (WiFi) wireless networking adapter, any other device for connecting to a network, or some combination thereof.
UI 50 allows the computing device 32 to interact with a user 58 by displaying a dynamic GUI 54 (as well as various other GUI elements) to the user 58 on a connected display 52 and receiving instructions from the user 58 via a connected input device 56. Display 52 may be any kind of display device capable of displaying a GUI, such as, for example, a cathode ray tube, a liquid crystal display, a projection device, a plasma display, or a similar device as is well-known in the art. Display 52 may also include more than one display device, each of which may use the same or different display technologies. Input device 56 may include any kind of user input devices such as, for example, a keyboard, a keypad, a mouse, a trackpad, a tracking ball, a pen-based digitizer, a stylus-based digitizer, or a similar device as is well-known in the art. Input device 56 may also include more than one user input device. In some embodiments, display 52 and user input device 56 may be combined into a single device, such as, for example, a touch-sensitive display screen. UI 50 may include one or more of a graphics adapter, a touch-based input controller, a mouse interface, a keyboard interface, a universal serial bus, or other similar devices.
Memory 40 may be any kind of digital system memory, such as, for example, RAM. Memory 40 stores programs and applications executing on processor 38 as well as data used by those programs. Memory 40 stores an operating system (not depicted) as well as various other software modules (some of which may be independent applications, while others are parts of other applications or the operating system). One application within memory 40 includes a visualization application 42. Visualization application 42, when executed by the processor 38, allows the user 58 to interact with the dynamic GUI 54 via the display 52 and input device 56 to dynamically select a set of filters to display a visualization of filtered performance data. Visualization application 42 may include various components, such as, for example, filtering subsystem 44, a set of dynamic GUI screens 46 to be displayed as dynamic GUI 54, and a remote interface module 48 for communicating with the remote data server 34 via network interface 60 and network 33. Filtering subsystem 44 is configured to, when executed by the processor 38, construct and send appropriate dynamic GUI screens 46 to be displayed within the dynamic GUI 54, receive responses from the user 58 via the input device 56 to select a particular set of filters, and cause performance data of the system 30 to be filtered and displayed within dynamic GUI 54.
Filtering subsystem 44 communicates with remote data server 34 via remote interface module 48, network interface 60, and network 33 to receive configuration information about the system 30 stored within configuration DB 36 in order to construct the dynamic GUI screens 46. In some embodiments, however, instead of performance DB 35 and configuration DB 36 residing within a remote data server 34, performance DB 35 and configuration DB 36 may reside within a data server application (not depicted) within memory 40, the remote interface module 48 serving to communicate directly with the data server application across memory 40.
In some embodiments, filtering subsystem 44 is able to filter the performance data locally by filtering performance data (received from remote data server 34 as stored in performance DB 35, or alternatively received from the data server application within memory 40) using filters set up by the user 58 in conjunction with dynamic GUI 54, while in other embodiments, filtering subsystem 44 communicates with remote data server 34 via remote interface module 48, network interface 60, and network 33 (or with data server application within memory 40 just via remote interface module 48) to send the filter information to the remote data server 34 and receive the filtered performance data back in response.
Memory 40 may include both a system memory portion for storing programs and data in active use by the processor 38 as well as a persistent storage portion (e.g., solid-state storage and/or disk-based storage) for storing programs and data even while the computing device 32 is powered off. The operating system and the applications (e.g., virtualization application 42) are typically stored both in system memory and in persistent storage so that they may be loaded into system memory from persistent storage upon a system restart. Applications (e.g., virtualization application 42), when stored in non-transient form either in system memory or in persistent storage, form a computer program product. The processor 38 running one or more of these applications (e.g., virtualization application 42) thus forms a specialized circuit constructed and arranged to carry out the various processes described herein.
Preliminary to method 100, in some embodiments, visualization application 42 displays unfiltered visualization screen 62 (which is one of the dynamic GUI screens 46) within the dynamic GUI 54 of the display 52, which depicts unfiltered performance data on an unfiltered graph 64 or other kind of visualization (e.g., a chart or table). As depicted, unfiltered graph 64 plots aggregated I/O transactions per second across the entire system 30 against time. It should be understood that the term “aggregated” as used within this Specification means a sum or average or weighted average or a combined ratio. Thus, in one example, unfiltered graph 64 plots I/O transactions per second summed together from the various storage processors of the various data storage arrays 31 of the system 30. Other sorts of aggregation may also be used instead. In addition, other performance metrics may be used instead of I/O transactions per second (e.g., storage processor cache throughput, storage processor cache dirty ratio, LUN response time, etc.). Unfiltered visualization screen 62 also includes a filter management link 66. When the user 58 operates a cursor 72 (e.g., using a mouse or other input device 56) to click on (or otherwise select) filter management link 66, method 100 is triggered.
In step 110, visualization application 42 receives a first list 70 (see
In some embodiments, filtering subsystem 44 initiates step 110 by sending a request (e.g., a representational state transfer or REST based request) to the remote data server 34 via remote interface module 48, network interface 60, and network 33, upon which the remote data server 34 determines the first list 70 with reference to the configuration DB 36 and then sends a response (e.g., a REST response) back to the filtering subsystem 44 via network 33, network interface 60, and remote interface module 48. In other embodiments, the request is sent within memory 40 directly to the data server application via remote interface module 48, and the response is similarly received directly from within memory 40 from the data server application via remote interface module 48.
In accomplishing step 120, filtering subsystem 44 creates first category filter screen 68 within dynamic GUI screens 46, the first category filter screen 68 having a selection box 69 that displays the first list 70, and filtering subsystem 44 then displays the created first category filter screen 68 as part of the dynamic GUI 54 on display 52. As depicted, when user 58 clicks, using cursor 72, on the LUN filterable category 71(a), for example, filtering subsystem 44 responds, in step 130, by selecting that first particular filterable category 71(a) and sending an indication of that first particular filterable category 71(a) to the data server 34 (e.g., using a REST request, as above).
In step 140, filtering subsystem 44 receives a first set 76 (see
As depicted, since the selected first filterable category 71(a) is the LUN category (representing logical unit numbers of logical disks of the system 30), the particular filterable elements 77 displayed (i.e., LUN 0, LUN 1, LUN 2, LUN 3, LUN 4, LUN 5, and LUN 6) are considered relevant because those are the LUNs present within the system 30, the performance data being based on an aggregate of the performance of those LUNs. In other arrangements, for other selected filterable categories 71 or for different systems having different elements installed within the selected first filterable category 71(a), different filterable elements 77 may be relevant.
Just prior to step 140, the data server 34 determines the first set 77 with reference to the configuration DB 36 and then sends the response (e.g., a REST response, as above) back to the filtering subsystem 44 to be received in step 140.
As depicted, when user 58 clicks, using cursor 72, on the LUN 1 filterable element 77(b) (step 160), for example, the selected first filterable element 77(b) completes the definition of the first filter, allowing the filtering subsystem 44 to generate (step 170) the first filter with a form “LUN=LUN 1.” Subsequently, visualization module 42 responds by displaying a confirmation screen (not depicted), listing the first filter, and allowing the user 58 to either apply the first filter to the performance data or to select a second filter.
Selecting the second filter being the more interesting case, upon the user 58 choosing the option to select a second filter, operation proceeds to step 180, in which filtering subsystem 44 receives a second list 80 of filterable categories 81 from data server 34 (e.g., via a REST response, as above). In step 190, filtering subsystem 44 displays the second list 80 of filterable categories 81 (depicted as filterable categories 81(a), 81(b), 81(c), 81(d), 81(e), although this is by way of example only) within a selection box 79 on second category filter screen 68. The filterable categories 81 each represent categories of elements against which the particular performance metric is recorded, but the particular filterable categories 81 within the second list 80 may differ from the filterable categories 71 within the first list 70 in various ways. As depicted, because a particular LUN (i.e., LUN 1) has already been selected as part of the first filter, there is no longer any need to allow for another LUN filter (the filters being applied in a conjunctive manner, although, in an alternative embodiment, in which the filters are applied in a disjunctive manner, another LUN filter may be applied, so the LUN filterable category 71(a) may remain), so the LUN filterable category 71(a) is removed from the first list 70 to generate the second list 80. In addition, as depicted, because a particular LUN (i.e., LUN 1) has already been selected as part of the first filter, the Storage Pool filterable category 71(d) is also removed. This is because a storage pool contains (i.e., is a container of) a set of LUNs, so adding a filter based on storage pool would be superfluous in a conjunctive filtering situation since no possible selection of storage pool together with the selection of LUN could modify the data over using a single filter based solely on the LUN. In addition, as depicted, an additional filterable category 81(c) for Reads/Writes has been added. This additional filterable category 81(c) has been added because although it could have been within the original first list 70, in order to avoid overcrowding the first list 70 with too many choices, certain less-frequently selected options may be omitted until the length of the list decreases in the second list 80.
Just prior to step 180, the data server 34 determines the second list 80 with reference to the configuration DB 36 and then sends the response (e.g., a REST response, as above) back to the filtering subsystem 44 to be received in step 180.
Thus, as depicted, the filterable categories 81 of the second list 70 include Storage Processor, Provisioning Type, Reads/Writes, Storage Resource, and Storage Resource Type, allowing the user 58 to create a second filter using one of these filterable categories 81 by clicking on one of them using cursor 72 (step 200). As depicted, since the unfiltered graph 64 plots I/O transactions against time, the particular filterable categories 81 displayed (i.e., Storage Processor, Provisioning Type, Reads/Writes, Storage Resource, and Storage Resource Type) are considered relevant and are not excluded based upon the above-mentioned concerns. In other arrangements, for other raw sets of unfiltered performance data or for other systems 30 with different configurations, different filterable categories 81 may be relevant.
As depicted, when user 58 clicks, using cursor 72, for example, on the Reads/Writes filterable category 81(c), filtering subsystem 44 responds, in step 200, by sending a second category selection (indicating the selected Reads/Writes filterable category 81(c)) to the data server 34 (e.g., using a REST request, as above).
In step 210, filtering subsystem 44 receives a second set 84 (see
As depicted, since the selected second filterable category 81(c) is the Reads/Writes category (representing a choice between transaction types performed within the system 30), the particular filterable elements 85 displayed (i.e., Reads and Writes) are considered relevant because those are the possible transaction types in the context of the system 30. In other arrangements, for other selected filterable categories 81 or for different systems having different elements within the selected second filterable category 81(c), different filterable elements 85 may be relevant.
Just prior to step 210, the data server 34 determines the second set 84 with reference to the configuration DB 36 and then sends the response (e.g., a REST response, as above) back to the filtering subsystem 44 to be received in step 210.
As depicted, when user 58 clicks, using cursor 72, on the Writes filterable element 85(b) (step 230), for example, the selected second filterable element 85(b) completes the definition of the second filter, allowing the filtering subsystem 44 to generate (step 240) the second filter with a form “Reads/Writes=Writes.” Subsequently, visualization module 42 responds by displaying filtered visualization screen 86 (step 250). Filtered visualization screen 86 lists the set of filters 89 (e.g., “Filter by: LUN=LUN 1; Filter by: Reads/Writes=Writes”), a filter management link 90 (to allow additional filters to be added or to remove filters), and a visualization of filtered performance data, such as chart 88.
In some embodiments, filtering subsystem 44 generates chart 88 by sending a request (e.g., a REST based request) to the remote data server 34 or the data server application via remote interface module 48, allowing the data server 34 to respond with performance data from the performance DB 35 that allows the filtering subsystem 44 to generate the chart 88. In some of these embodiments, the data server 34 filters the performance data from the performance DB 35 using the selected filters and only sends the filtered performance data back to the filtering subsystem 44. In other of these embodiments, the data server 34 does not filter the performance data from the performance DB 35 using the selected filters, thereby sending all performance data from the performance DB 35 to the filtering subsystem 44, the filtering subsystem 44 being responsible to apply the selected filters locally to the received performance data to generate the filtered performance data locally on the computing device 32.
Thus, techniques have been described for presenting a dynamic GUI 54 for selecting consistent filters to be used to filter performance data for display in a visualization 88.
While various embodiments of the present disclosure have been particularly shown and described, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the present disclosure as defined by the appended claims.
For example, although various embodiments have been described as being methods, software embodying these methods is also included. Thus, one embodiment includes a tangible non-transitory computer-readable storage medium (such as, for example, a hard disk, a floppy disk, an optical disk, computer memory, flash memory, etc.) programmed with instructions, which, when performed by a computer or a set of computers, cause one or more of the methods described in various embodiments to be performed. Another embodiment includes a computer which is programmed to perform one or more of the methods described in various embodiments.
Furthermore, it should be understood that all embodiments which have been described may be combined in all possible combinations with each other, except to the extent that such combinations have been explicitly excluded.
Finally, even if a technique, method, apparatus, or other concept is specifically labeled as “conventional,” Applicants make no admission that such technique, method, apparatus, or other concept is actually prior art under 35 U.S.C. § 102 or 35 U.S.C. § 103, such determination being a legal determination that depends upon many factors, not all of which are known to Applicants at this time.
Number | Name | Date | Kind |
---|---|---|---|
5608861 | Mead | Mar 1997 | A |
5608899 | Li | Mar 1997 | A |
5621905 | Jewson | Apr 1997 | A |
5787411 | Groff | Jul 1998 | A |
5963938 | Wilson | Oct 1999 | A |
6014661 | Ahlberg | Jan 2000 | A |
6279016 | De Vorchik | Aug 2001 | B1 |
6366926 | Pohlmann | Apr 2002 | B1 |
6385602 | Tso | May 2002 | B1 |
6507836 | Nose | Jan 2003 | B1 |
6539371 | Bleizeffer | Mar 2003 | B1 |
6785668 | Polo | Aug 2004 | B1 |
6894639 | Katz | May 2005 | B1 |
7519585 | Kenney | Apr 2009 | B2 |
7574432 | De Bellis | Aug 2009 | B1 |
7584172 | Heuer | Sep 2009 | B2 |
8131743 | Joyce et al. | Mar 2012 | B1 |
8171046 | Joyce et al. | May 2012 | B1 |
8196047 | Fisher | Jun 2012 | B2 |
8255914 | Joyce et al. | Aug 2012 | B1 |
8347219 | Joyce | Jan 2013 | B1 |
8423567 | Finneran | Apr 2013 | B1 |
8504589 | Cubranic | Aug 2013 | B2 |
8504684 | Ballantyne et al. | Aug 2013 | B1 |
8712815 | Nichols | Apr 2014 | B1 |
8872849 | Zhao | Oct 2014 | B2 |
8931036 | Cherukumudi | Jan 2015 | B1 |
8954880 | Rabe et al. | Feb 2015 | B1 |
9195374 | Meaney | Nov 2015 | B1 |
9201573 | Miles et al. | Dec 2015 | B1 |
9235424 | Wong | Jan 2016 | B1 |
9348881 | Hao | May 2016 | B1 |
20020052984 | Jindal | May 2002 | A1 |
20040189707 | Moore | Sep 2004 | A1 |
20040207666 | Hally | Oct 2004 | A1 |
20040230599 | Moore | Nov 2004 | A1 |
20050004911 | Goldberg | Jan 2005 | A1 |
20050071737 | Adendorff | Mar 2005 | A1 |
20050165841 | Kasperkiewicz | Jul 2005 | A1 |
20060074879 | Covington | Apr 2006 | A1 |
20060101013 | Kenney | May 2006 | A1 |
20060197762 | Smith | Sep 2006 | A1 |
20070192712 | Lee | Aug 2007 | A1 |
20080104051 | Gosper | May 2008 | A1 |
20080104053 | Cubranic | May 2008 | A1 |
20080163085 | Subbu | Jul 2008 | A1 |
20080195930 | Tolle | Aug 2008 | A1 |
20080201313 | Dettinger | Aug 2008 | A1 |
20080307362 | Chaudhri | Dec 2008 | A1 |
20090007021 | Hayton | Jan 2009 | A1 |
20090100086 | Durrant | Apr 2009 | A1 |
20090125482 | Peregrine | May 2009 | A1 |
20090225082 | Hargrove | Sep 2009 | A1 |
20090265370 | Rucker | Oct 2009 | A1 |
20100100848 | Ananian | Apr 2010 | A1 |
20100185984 | Wright | Jul 2010 | A1 |
20100228752 | Folting | Sep 2010 | A1 |
20110016432 | Helfman | Jan 2011 | A1 |
20110032260 | Duggan | Feb 2011 | A1 |
20110087644 | Frieden | Apr 2011 | A1 |
20110087678 | Frieden | Apr 2011 | A1 |
20110087954 | Dickerman | Apr 2011 | A1 |
20110109472 | Spirakis | May 2011 | A1 |
20110173219 | Bent | Jul 2011 | A1 |
20110320410 | Marum | Dec 2011 | A1 |
20120005045 | Baker | Jan 2012 | A1 |
20120023101 | Heimendinger | Jan 2012 | A1 |
20120089633 | Vigneau | Apr 2012 | A1 |
20120109984 | Clark, Jr. | May 2012 | A1 |
20120179699 | Ward | Jul 2012 | A1 |
20120204122 | Brugler | Aug 2012 | A1 |
20120240064 | Ramsay | Sep 2012 | A1 |
20120266074 | Bhoovaraghavan | Oct 2012 | A1 |
20130055146 | Armitage | Feb 2013 | A1 |
20130111320 | Campbell | May 2013 | A1 |
20130262277 | Clark, Jr. | Oct 2013 | A1 |
20130282696 | John | Oct 2013 | A1 |
20130321285 | Hoyer | Dec 2013 | A1 |
20140059069 | Taft | Feb 2014 | A1 |
20140081906 | Geddam | Mar 2014 | A1 |
20140325444 | Garrison | Oct 2014 | A1 |
20150058092 | Rea | Feb 2015 | A1 |
20150066910 | Bleach | Mar 2015 | A1 |
20170123627 | Cristoforo | May 2017 | A1 |
Entry |
---|
Seth B. Horan, et al.; “Unified Initialization Utility”; U.S. Appl. No. 13/630,093, filed Sep. 28, 2012. |
Bruce R. Rabe, et al.; “Automatic Layout of Graphical User Interface Screens From Object Data”; U.S. Appl. No. 13/799,547, filed Mar. 13, 2013. |
Bruce R. Rabe, et al.; “Proficiency-Based GUI Adaptation”; U.S. Appl. No. 13/833,356, filed Mar. 15, 2013. |