Quantifying use of different computing resources to single measurement unit
By using meters in the cloud computing network to measure and normalize the usage of computing resources, the waste caused by inaccurate resource use in cloud computing is solved, and efficient utilization and optimization of resources are achieved.
Patent Information
- Application Number
- CN202411378185.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-06-27
- Filing Date
- 2019-03-22
- Publication Date
- 2025-01-03
AI Technical Summary
In cloud computing, when users rent computing resources, due to the inability to accurately measure the actual usage, resulting in waste of resources and financial losses, it is difficult for existing technology to monitor and optimize resource usage in real time.
By introducing meters into the computing network, measuring and normalizing physical resource usage, different computing resources are converted into general measurement units, and resource usage is monitored and optimized in real time to reduce waste.
Accurate measurement and optimization of the use of computing resources is achieved, resource waste and financial losses are reduced, and resource utilization efficiency is improved.
Smart Images

Figure CN119248611A_ABST
Abstract
Description
[0001] This application is a divisional application with an application date of March 22, 2019, application number 201980029897.1, and invention name “Quantifying the use of different computing resources as a single measurement unit”. The parent application is an application advancing to the Chinese national phase of international application number PCT / US2019 / 023712 submitted to the International Patent Office on March 22, 2019, claiming the benefits of U.S. Provisional Application No. 62 / 647,335 entitled “QUANTIFYING USAGE OF DISPARATE COMPUTING RESOURCES AS A SINGLE UNIT OF MEASURE” filed on March 23, 2018 and U.S. Provisional Application No. 62 / 690,533 entitled “QUANTIFYING USAGE OF DISPARATE COMPUTING RESOURCES AS A SINGLE UNIT OF MEASURE” filed on June 27, 2018, and the above applications are fully incorporated herein by reference. Technical Field
[0002] The present disclosure relates generally to computing, and more particularly to metering usage of different computer resources and quantifying the usage into a single unit of measurement. Background Art
[0003] Cloud computing allows users (e.g., individuals or organizations) to rent computing resources maintained and / or managed by a third party. This allows users to rent computing resources customized for their personal computing needs without having to make large investments in physical hardware, data center real estate, electricity, data center personnel, and / or software licenses.
[0004] An example cloud computing system may include physical resources (e.g., processors and memory) and / or virtualized resources (e.g., virtualized processors and virtualized memory). Users accessing the cloud computing system may rent a large amount of resources capable of running their workloads. The amount of rented computing resources may be estimated based on a theoretical maximum workload. It is assumed that the theoretical maximum workload uses almost all (e.g., approximately 100%) of the available resources. In other words, the user will rent the maximum amount of resources required to execute their workload in order to avoid system performance issues due to surges in resource demand. However, surges in use may occur occasionally, and the average resources used may be lower than the theoretical maximum, which results in waste (e.g., renting unused computing resources).
[0005] Cloud computing providers may implement pricing models based on the amount of resources rented (e.g., for a predetermined time) relative to the actual amount of resources used (or consumed) by the user. These resources may be packaged as servers with preconfigured central processing units (CPUs), memories (e.g., random access memories), storage, graphics processing units (GPUs), dedicated networking capabilities (e.g., providing predetermined networking speeds), field programmable gate arrays (FPGAs), and / or any other computing resources. The packaged servers may generally be referred to as entities that users may rent for a period of time (e.g., in seconds, minutes, hours, days, weeks, months, years, and / or any other time intervals). Thus, users may rent entities based on the maximum computing resources they estimate to use (e.g., which may be estimated based on a surge in use). By renting resources in an entity, a user may use only a portion of the computing resources for most of the term of the lease agreement. In other words, this may result in users paying for resources that are not consumed and cloud computing providers may benefit financially from renting unused resources. Summary of the invention BRIEF DESCRIPTION OF THE DRAWINGS
[0006] These and other features and advantages will be better understood from a reading of the following detailed description taken in conjunction with the accompanying drawings, in which:
[0007] Figure 1 Schematic examples of computing networks consistent with embodiments of the present disclosure are shown.
[0008] Figure 2A It is shown that the embodiment consistent with the present disclosure can be Figure 1 Schematic example of a computing system used in a computing network.
[0009] Figure 2B The embodiment consistent with the present disclosure is shown Figure 2A Schematic example of a computing system.
[0010] Figure 3A A schematic example of a meter for measuring usage of computing resources that can be used in the computing system of FIG. 2 consistent with embodiments of the present disclosure is shown.
[0011] Figure 3B It is shown that the embodiment consistent with the present disclosure can be Figure 3A Schematic example of a metric / property collector used with a gauge.
[0012] Figure 3C It is shown that the embodiment consistent with the present disclosure can be Figure 3A Schematic example of an analysis platform for use with a meter.
[0013] Figure 3DA plot (or graph) illustrating resource usage consistent with embodiments of the present disclosure is shown.
[0014] Figure 4 A schematic example of a conversion unit generator that may be used with the meter of FIG. 3 is shown consistent with embodiments of the present disclosure.
[0015] Figure 5 An example flow chart of a method of quantifying usage of different computing resources into a single unit of measurement consistent with an embodiment of the present disclosure is shown.
[0016] Figure 6 An example flow chart of a method of quantifying the total different available computing resources (eg, both used resources and inactive resources) into a single measurement unit consistent with embodiments of the present disclosure is shown. DETAILED DESCRIPTION
[0017] Generally disclosed herein is a system, method, and apparatus for measuring physical resource usage when computing and quantifying usage as a single unit of measurement. For example, different computing resources can be measured, normalized (e.g., converted) to a common unit of measurement, and each of the normalized measurements can be summed so that the total usage can be represented as a single value. By representing different computing resources as a single unit, resource usage (or consumption) can be monitored in real time, workloads can be optimized to improve usage of available resources, and / or waste can be reduced.
[0018] By measuring physical resources (as opposed to virtual resources), a more accurate measurement of actual usage can be obtained. For example, due to the technique used being known as inflation, measuring usage based on virtual resources may overestimate actual usage of physical resources. In other words, when only virtual resources are measured, virtual resources may indicate that a workload is consuming (or using) more resources than the workload actually consumes in physical resources. In some cases, the amount of virtual resources indicated as being consumed may exceed the available physical resources.
[0019] As used herein, a graphics processing unit (GPU) may broadly refer to a computing resource that includes at least a graphics processor and / or graphics memory, and in some cases, a GPU may broadly refer to a graphics processing system (GPS).
[0020] Figure 1An illustrative example of a computing network 100 is shown. As shown, the computing network 100 may include a device 102 and a computing system 104, each of which is communicatively coupled to a network 106 (e.g., the Internet). The computing system 104 may include physical computing resources 108 configured to execute one or more workloads 110. The one or more workloads 110 may include, for example, one or more operating systems 112, one or more applications 114, and / or one or more idle processes 113. The idle process 113 may be a background process related to the operation of the computing system 104 (e.g., as a result of the operation of the hardware of the computing system 104) and may consume at least a portion of the physical computing resources 108, even if a request from, for example, the device 102 and / or the operating system 112 to execute the application 114 has not been received. In other words, even when the computing system 104 is idle, the computing system 104 still consumes at least a portion of the physical computing resources 108 due to the operation of the physical hardware of the computing system 104 when the computing system 104 is powered on.
[0021] Execution of one or more of the workloads 110 is caused in response to a request generated by the device 102 (e.g., operating system(s) 112 and / or application(s) 114). For example, the device 102 may transmit a request to the computing system 104 over the network 106 to request execution of one or more applications 114. Upon receiving the request, the computing system 104 may allocate at least a portion of the physical computing resources 108 to the execution of the application 114. In response to the application 114 being executed, the computing system 104 may transmit data back to the device 102. For example, the data transmitted back to the device 102 may be used to generate a graphical user interface on the display 116 of the device 102. A user of the device 102 may then interact with the graphical user interface and cause the device 102 to transmit additional instructions to the computing system 104, which cause different portions of the application 114 to be executed on the computing system 104.
[0022] As shown, a meter 118 may be provided. The meter 118 may include any combination of hardware, software, and / or firmware configured to measure the use of physical computing resources 108 used by a workload 110 (e.g., an idle process 113, operating system(s) 112, and / or application(s) 114) over a period of time (e.g., a predetermined or non-predetermined period of time). For example, the meter 118 may be implemented as software that is configured to be stored on one or more memories (e.g., any type of tangible, non-transitory storage medium, and may include magnetic recording media (e.g., hard drives), optical disks, semiconductor devices (such as read-only memory (ROM)), random access memory (RAM) (such as dynamic and static RAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, magnetic or optical cards, or one or more of any type of storage media for storing electronic instructions) and executed by one or more processors (e.g., processors sold by INTEL, ADVANCED MICRO DEVICES, IBM, ARM, ORACLE, and / or any other processor) to cause one or more operations to be performed. By further example, the meter 118 may be implemented as a circuit (e.g., an application specific integrated circuit).
[0023] The use of physical computing resources 108 may be measured using a host operating system (e.g., an operating system written in assembly language) and / or a hypervisor executing on computing system 104. For example, meter 118 may include a plug-in database having one or more plug-ins configured to enable measurement of resource usage of the host operating system via a hypervisor executing on computing system 104. As another example, meter 118 may be configured to measure resource usage directly from physical computing resources 108 (e.g., using a host operating system). In some cases, meter 118 may measure physical computing resource usage across multiple different computing systems 104.
[0024] Meter 118 measures usage of physical computing resources 108, normalizes each physical computing resource 108 to a common unit of measurement, and combines the normalized computing resources so that the combined (e.g., total) usage can be represented as a single unit. In other words, meter 118 can generally be described as quantifying usage of multiple different computing resources into a single value representing usage of computing resources 108. For example, meter 118 can be configured to measure usage of multiple different computing resources over a period of time and generate a single usage value representing usage over the period of time.
[0025] In order to mitigate and / or otherwise prevent the effects of inflation, the meter 118 measures physical resource usage rather than, for example, virtual resource usage. In this way, physical resource usage of, for example, a virtual machine can be more accurately measured. In some cases, the meter 118 can also be configured to measure the maximum amount of available physical computing resources 108 (e.g., used and inactive resources) that are used, and to normalize the amount of each physical resource of the measured physical computing resources 108 to a common measurement unit, and then sum the normalized resources to obtain the maximum amount of available physical resources represented as a single unit. By measuring the maximum amount of available resources, a user can optimize the amount of physical computing resources 108 used to execute the workload 110. Additionally or alternatively, meter 118 may be configured to measure a minimum amount of physical computing resources 108 required to run computing system 104 (e.g., resources used only by idle process 113), normalize the measured amount of each of the physical computing resources 108 to a common unit of measurement, and then sum the normalized resources to obtain a single unit representing the minimum amount of physical resources that need to be used (e.g., when computing system 104 is operating but not executing one or more operating systems 112 and / or applications 114).
[0026] In some cases, the meter 118 may be configured to measure the use of physical resources over a period of time (e.g., a billing period, contract term, hour, day, week, and / or any other period of time for resource usage) and generate a single usage value representing the use of the physical resources over the period of time. The measured use can then be used to determine the appropriate amount of resources to purchase over a period of time and / or to generate a bill based on actual use. Thus, resource consuming users can reduce the amount of resources purchased, and resource providers can reduce the total amount of resources provided for sale and / or allocate unused resources to another user.
[0027] In some cases, the meter 118 may be configured to enable and / or disable access by the device 102 to the computing resources 108 of the computing system 104. In other words, the meter 118 may be configured to selectively communicatively couple and / or decouple the device 102 to the computing system 104. For example, the meter 118 may disable access by the device 102 to at least a portion of the computing resources 108 after a period of time has expired (e.g., termination of a contractual term), upon failure to meet a contractual term (e.g., failure to pay a bill, misuse of computing resources, etc.), and / or in response to measured resource usage exceeding or failing to exceed a predetermined amount (or threshold) over a period of time. As another example, the meter 118 may enable access to the computing resources 108 at a predetermined time (e.g., when a contractual term begins).
[0028] In some cases, the meter 118 may be configured to selectively enable and disable access to at least a portion of the computing resources 108 based on availability. For example, when another user is not using the computing resources 108, the device 102 may access at least a portion of the computing resources 108. However, when another user requests access to the computing resources 108, a recall request may be transmitted to the meter 118, which causes the meter 118 to disable the device 102's access to at least a portion of the computing resources 108 so that the other user can access the computing resources 108. Thus, the meter 118 may generally be described as being configured to reduce the amount of computing resources 108 that are not being used, for example, to execute one or more applications 114 or an operating system 112.
[0029] As shown, meter 118 may be communicatively coupled to device 102, computing system 104, and / or network 106. In some cases, at least a portion of meter 118 may be included in device 102 and / or computing system 104. Additionally or alternatively, at least a portion of meter 118 may be included in a third-party device that is communicatively coupled to one or more of devices 102 and / or computing system 104 (e.g., using network 106).
[0030] Device 102 may include any one or more of a personal computer, a tablet computer, a mobile phone, a smart phone, a smart watch, a smart TV, a fitness tracker, a smart scale (for weighing objects), a smart thermostat, a smart security monitoring system (e.g., an indoor and / or outdoor camera system, a doorbell, an alarm system, a lock system, a lighting system, and / or any other smart security monitoring system), a smart display (e.g., a display configured to communicate with network 106), a smart healthcare system (e.g., an ultrasound system, a molecular imaging system, a computerized tomography system, an X-ray system, and / or any other smart healthcare system), a remote health monitoring device, a gaming device (e.g., a gaming console, a handheld gaming device, a virtual reality headset, and / or any other gaming device), an IoT device (e.g., an autonomous vehicle, a connected home appliance, a drone, a robot, and / or any other IoT device), a server, and / or any other device capable of communicating with computing system 104.
[0031] Figure 2A Shows Figure 1 1 is an illustrative example of a computing system 104. As shown, the physical computing resources 108 of the computing system 104 may include a central processing unit (CPU) 202, a memory 204, a storage 206, a network interface 208, and a graphics processing unit (GPU) 210. Each of the CPU 202, the memory 204, the storage 206, the network interface 208, and the GPU 210 has one or more metrics / attributes associated therewith.
[0032] Additionally or alternatively, the computing resources 108 may include other resources 209. The other resources 209 may include, for example, any one or more of a field programmable gate array (FPGA), a tensor processing unit (TPU), an intelligence processing unit (IPU), a neural processing unit (NPU), a video processing unit (VPU), a digital signal processor (DSP), an accelerated processing unit (APU), an application specific integrated circuit (ASIC), a system on a chip (SoC), a programmable SoC, an application specific standard component (ASSP), an adaptive computing acceleration platform (ACAP), a microcontroller, and / or any other computing resource.
[0033] like Figure 2B As shown in , CPU 202 can be associated with metrics / attributes for multiple processing cores 212, processor clock speed 214, and / or processor load 216. The number of processing cores 212 indicates the number of independent processing units (or cores) available to CPU 202. Processor clock speed 214 indicates the default clock speed for each of the cores of CPU 202. Processor load 216 indicates the amount of computing work performed by CPU 202. CPU 202 can be any computer processor, including, for example, a single-core and / or multi-core processor capable of executing computer instructions. Examples of CPU 202 can include processors sold by Intel, Advanced Micro Devices, IBM, ARM, Oracle, and / or any other processor.
[0034] Memory 204 may be associated with a measure / attribute of a total amount of available memory 218 and / or an amount of memory used 220. Memory 204 may be a tangible, non-transitory memory. Memory 204 may be a volatile memory. For example, memory 204 may be a random access memory (RAM). Examples of RAM may include, for example, static RAM (SRAM), dynamic RAM (DRAM), fast page mode DRAM (FPM DRAM), extended data output DRAM (EDO DRAM), synchronous dynamic RAM (SDRAM), double data rate SDRAM (DDR SDRAM), RAMBUS dynamic RAM (RDRAM), and / or any other form of RAM.
[0035] Storage 206 may be associated with metrics / attributes for: the total amount of storage available 222, the total amount of storage used 224, the number of bytes written to storage 206 226, and / or the number of bytes read from storage 206 228. Storage 206 may be non-volatile memory. For example, storage 206 may include any type of tangible, non-transitory storage medium, and may include any one or more of a magnetic recording medium (e.g., a hard drive), an optical disk, a semiconductor device such as a read-only memory (ROM), a random access memory (RAM) such as dynamic and static RAM, an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), flash memory, a magnetic or optical card, or any type of storage medium for storing electronic instructions.
[0036] The network interface 208 may be associated with metrics / attributes for the number of bytes sent 230 and / or the number of bytes received 232. The network interface 208 may be configured to communicatively couple to the network 106 ( Figure 1 ). For example, the network interface 208 may be a network interface controller configured to communicatively couple to one or more of an Ethernet network, a wireless network, a Fiber Channel network, a Fiber Distributed Data Interface (FDDI) network, a Copper Distributed Data Interface (CDDI) network, and / or any other network.
[0037] The GPU 210 may be associated with metrics / attributes for: a graphics processor default clock speed 234, a graphics processor variable clock speed 236, a graphics processor load 238, a graphics memory default clock speed 240, a variable graphics memory clock speed 242, a graphics memory load 244, a graphics memory bus 246, a total amount of graphics memory available 248, an amount of graphics memory used 250, and / or an amount of shaders 252. The graphics processor default clock speed 234 indicates the default clock speed of the processor of the GPU 210, and the graphics processor variable clock speed 236 indicates the variable clock speed of the graphics processor. In some cases, the graphics processor variable clock speed 236 may exceed the clock speed of the graphics processor default clock speed 234. In other cases, the graphics processor variable clock speed 236 may not exceed the graphics processor default clock speed 234. Similarly, the graphics memory default clock speed 240 indicates the default clock speed of the graphics memory, and the variable graphics memory clock speed 242 indicates the clock speed at which the graphics memory actually operates. In some cases, variable graphics memory clock speed 242 may measure greater than graphics memory default clock speed 240. In other cases, variable graphics memory clock speed 242 may measure less than (or equal to) graphics memory default clock speed 240. Graphics memory load 244 indicates the amount of read and / or write operations performed on GPU memory. Graphics memory bus 246 indicates the bus size of GPU 210.
[0038] GPU 210 may include an integrated and / or dedicated GPU. For example, the GPU may include any GPU manufactured by, for example, Intel, NVIDIA, Advanced Micro Devices, and / or any other GPU. When GPU 210 includes an integrated GPU, the metrics / attributes may be based at least in part on the shared resources of the integrated GPU.
[0039] Although CPU 202, memory 204, storage 206, network interface 208, and GPU 210 are sparsely mentioned, it should be understood that computing system 104 may include multiple physical CPUs, memories, storage, network interfaces, and GPUs, one or more of which may be configured to cooperate, for example, to improve the performance of computing system 104. Similarly, where computing system 104 includes one or more of other resources 209, there may be one or more of each of other resources 209.
[0040] Figure 3A Shows Figure 1104. As shown in the figure, the meter 118 may include a metric / attribute collector 302, a calculator 305, and an analysis platform 312, wherein the metric / attribute collector 302 is communicatively coupled to the physical computing resource 108 (Figure 2). Each of the metric / attribute collector 302, the calculator 305, and / or the analysis platform 312 can be distributed on different computing systems (or environments). In some cases, one or more of the metric / attribute collector 302, the calculator 305, and / or the analysis platform 312 can be located on the same computing system. For example, one or more of the metric / attribute collector 302, the calculator 305, and / or the analysis platform 312 can be located on the device 102. As a further example, one or more of the metric / attribute collector 302, the calculator 305, and / or the analysis platform 312 can be located on a separate device that is communicatively coupled to the network 106 and / or the computing system 104. As yet another example, one or more of metric / attribute collector 302 , calculator 305 , and / or analytics platform 312 may be located on computing system 104 .
[0041] The metric / attribute collector 302 requests one or more metrics / attributes from one or more of the CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209. For example, the metric / attribute collector 302 may request one or more metrics / attributes from a hypervisor executing (e.g., using a plug-in) on one or more of the CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209. As a further example, the metric / attribute collector 302 may request one or more metrics / attributes from a host operating system (e.g., an operating system written in assembly language) executing on one or more of the CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209.
[0042] When the metric / attribute collector 302 requests one or more metrics / attributes from the CPU 202, the requested metrics / attributes may be input into the CPU cycle utilization calculator 304. The CPU cycle utilization calculator 304 may generate a metric / attribute corresponding to the amount of CPU cycles being utilized based at least in part on the requested metrics / attributes from the CPU 202. For example, the CPU cycle utilization calculator 304 may generate the CPU cycle utilization based at least in part on the number of processing cores 212, the processor clock speed 214, and the processor load 216. In these cases, the CPU cycle utilization calculator 304 may generate the CPU cycles being utilized according to the following equation:
[0043] When metric / attribute collector 302 requests one or more metrics / attributes from GPU 210, the requested metrics / attributes may be input to one or more of GPU processor cycle utilization calculator 306 and / or GPU memory cycle utilization calculator 308. GPU processor cycle utilization calculator 306 and GPU memory cycle utilization calculator 308 may generate metrics / attributes corresponding to GPU processor cycle utilization and GPU memory cycle utilization, respectively, based at least in part on the requested metrics from GPU 210.
[0044] For example, GPU processor cycle utilization calculator 306 may generate GPU processor cycle utilization based at least in part on graphics processor variable clock speed 236 and graphics processor load 238. In these cases, GPU processor cycle utilization calculator 306 may generate the utilized GPU processor cycles according to the following equation:
[0045] As a further example, GPU memory cycle utilization calculator 308 may generate GPU cycle utilization based at least in part on variable graphics memory clock speed 242 and graphics memory load 244. In these cases, GPU memory cycle utilization calculator 308 may generate the clock cycles of GPU memory consumed according to the following equation:
[0046] When the metric / attribute collector 302 requests one or more metrics / attributes from the storage 206, the metrics / attributes may be input into the disk IO calculator 310. The disk IO calculator 310 may generate a metric / attribute corresponding to the total number of bits read and written to the storage 206 within a period of time (e.g., one second). Therefore, in some cases, the disk IO calculator 310 may add the number of bytes written 226 and the number of bytes read 228 within the period of time to generate a metric / attribute corresponding to the disk IO. In the case where the time period is greater than one second, the number of bytes written 226 and the number of bytes read 228 may be divided by the total number of seconds. In the case where the time period is less than one second, the number of bytes written 226 and the number of bytes read 228 may be divided by a fraction of a second.
[0047] When the metric / attribute collector 302 requests one or more metrics / attributes from the network interface 208, the metrics / attributes may be input into the network IO calculator 311. The network IO calculator 311 may generate a metric / attribute corresponding to the total number of bits sent or received by the network interface 208 over a period of time (e.g., one second). Therefore, in some cases, the network IO calculator 311 may add the number of bytes 230 sent and the number of bytes 232 received during the period of time to generate a metric / attribute corresponding to the network IO. In the case where the time period is greater than one second, the number of bytes 230 sent and the number of bytes 232 received may be divided by the total number of seconds. In the case where the time period is less than one second, the number of bytes 230 sent and the number of bytes 232 received may be divided by a fraction of a second.
[0048] As shown, the analysis platform 312 can receive one or more of the metrics / attributes associated with the physical computing resources 108, including, for example, one or more metrics / attributes output from one or more of the calculators 305. In some cases, the analysis platform 312 may include one or more other resource calculators 331 corresponding to one or more of the corresponding other resources 209. The one or more metrics / attributes output from one or more of the calculators 305 may include, for example, CPU cycle utilization (e.g., as output from the CPU cycle utilization calculator 304), GPU processor cycle utilization (e.g., as output by the GPU processor cycle utilization calculator 306), GPU memory cycle utilization (e.g., as output by the GPU memory cycle utilization calculator 308), disk IO (e.g., as output by the disk IO calculator 310), and / or network IO (e.g., as output by the network IO calculator 311). The analysis platform 312 can use one or more conversion units to convert the received metrics / attributes. In some cases, each metric / attribute has a corresponding conversion unit. For example, the analysis platform 312 can utilize the CPU conversion unit 314, the memory conversion unit 316, the storage conversion unit 318, the network conversion unit 320, the GPU processor conversion unit 322, the GPU memory conversion unit 324, the GPU memory speed conversion unit 326, the disk IO conversion unit 328 and / or any other conversion unit corresponding to the computing resources (for example, a conversion unit for one or more of the other resources 209 such as FPGA resources, ASIC resources, SoC resources, DSP resources, microcontroller resources, ACAP resources, etc.).
[0049] The analysis platform 312 may convert different computing resources into normalized units by dividing the usage of each physical resource (e.g., CPU 202, memory 204, storage 206, network interface 208, and GPU 210) by the corresponding conversion unit corresponding to the physical resource (e.g., CPU conversion unit 314, memory conversion unit 316, storage conversion unit 318, network conversion unit 320, GPU processor conversion unit 322, GPU memory conversion unit 324, GPU memory speed conversion unit 326, and disk IO conversion unit 328) to obtain the corresponding normalized usage of each physical resource. In some cases, the analysis platform 312 may be configured to convert one or more of the other resources 209 into normalized units. For example, the analysis platform 312 may include an other resource conversion unit 329.
[0050] The normalized usage may then be summed to obtain a total usage value. Additionally or alternatively, as should be readily appreciated in light of the disclosure herein, in some cases, the normalized usage may be summed according to computing resource type (e.g., one or more of CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209) to obtain a normalized usage value for a particular resource. For example, the normalized usage of the physical resources of GPU 210 (e.g., GPU processor and / or GPU memory) may be summed to generate a total GPU usage. Other examples of normalized usage of a particular physical resource may include total FPGA usage, total ASIC usage, total DSP usage, total SoC usage, total microcontroller usage, total ACAP usage, total TPU usage, and / or any other total usage corresponding to a respective resource.
[0051] Figure 3B A metric / attribute collector 303 is shown, which can be an example of metric / attribute collector 302, and is configured to monitor resource usage of many (e.g., multiple) different users and associate each user's usage with the corresponding user. In other words, metric / attribute collector 303 is configured to receive metrics corresponding to resource usage. Metric / attribute collector 303 can include any combination of hardware, software, and / or firmware.
[0052] Metric / attribute collector 303 may be configured to be included with any one or more of computing system 104, device 102, and / or any other device communicatively coupled to network 106. For example, device 102 may include metric / attribute collector 303. When device 102 includes metric / attribute collector 303, a user of metric / attribute collector 303 may be able to use meter 118 with fewer modifications to the user's network security than when metric / attribute collector 303 is not executed on device 102.
[0053] As shown, the metric / attribute collector 303 is communicatively coupled to the computing system 104 via a communication link 330. The communication link 330 can transmit data (e.g., metrics / attributes associated with the computing resources 108) to the metric / attribute collector 303. The data transmitted through the communication link 330 can be encrypted to prevent unauthorized access to the data. As shown, the metric / attribute collector 303 can be remote from the computing system 104 (e.g., on a different server, in a different network, and / or operating on a different device). However, in some cases, the metric / attribute collector 303 can be local to the computing system 104 (e.g., on the same server, on the same network, and / or operating on the same device).
[0054] Metrics / attribute collector 303 may also be configured to communicate with analysis platform 312 via communication link 362. Data transmitted over communication link 362 may be encrypted to prevent unauthorized access to the data. In some cases, metrics / attribute collector 303 may include analysis platform 312. As such, metrics / attribute collector 303 may not transmit data over communication link 362.
[0055] The analysis platform 312 can generate a total resource usage value expressed as a single normalized unit. As shown, the analysis platform 312 can be remote from the metric / attribute collector 303 (e.g., operating on a different server, in a different network, and / or on a different device). However, in some cases, the analysis platform 312 can be local to the metric / attribute collector 303 (e.g., operating on the same server, on the same network, and / or on the same device).
[0056] As shown, the metric / attribute collector 303 may include at least one collector core 332, at least one collector metric receiver 334, at least one collector synchronizer 336, at least one plug-in database 338, at least one collector automaton 340, at least one machine manager 342, at least one collector database manager 344, at least one account manager 346, and at least one machine collection manager 348. The collector core 332 communicates with and / or manages each of the collector metric receiver 334, the collector synchronizer 336, the plug-in database 338, the collector automaton 340, the machine manager 342, the collector database manager 344, the account manager 346, and the machine collection manager 348.
[0057] Collector metric receiver 334 is configured to receive metrics / attributes representing usage of computing resources 108 by one or more users and / or workloads. In some cases, collector metric receiver 334 may include one or more of calculators 305 .
[0058] At least a portion of resource usage may be associated with one or more users. For example, at least a portion of resource usage may be associated with one or more accounts 350 using an account manager 346. An account 350 may be associated with one or more resource consuming users 352. Thus, resource usage of multiple accounts 350 and / or resource consuming users 352 may be monitored simultaneously. For example, a corporate entity may have accounts 350 associated with its employees (e.g., resource consuming users 352). Thus, when an employee accesses a computing resource 108, usage is associated with an account 350 corresponding to the corporate entity. By associating usage with an account 350, a single metric / attribute collector 303 may be used to monitor multiple accounts 350, which may reduce the resources consumed compared to associating a metric / attribute collector 303 with each account 350 and / or resource consuming user 352.
[0059] Account 350 can be associated with one or more (e.g., virtual or physical) machines 354 accessible to resource consumption user 352, and operate using computing resources 108. For example, machine 354 may include one or more of operating system 112 and / or application 114. For example, machine 354 may be configured to execute a LINUX-based operating system, a WINDOWS-based operating system, a MAC-based operating system, and / or any other operating system in a virtualized or physical environment. In some cases, machine 354 may be configured to execute one or more workloads 110 (e.g., (multiple) applications 114) without executing a client operating system. For example, machine 354 may be configured to execute one or more applications 114 directly on a physical machine without any form of virtualization or configured to execute a container, and one or more applications 114 may be configured to execute within a container. Therefore, a container may generally be described as an isolated environment configured to execute on one or more kernels of machine 354. Containers may be executed on physical or virtual machines.
[0060] The machine set manager 348 allows multiple machines 354 to be associated with at least one machine set 356. The machine set manager 348 may also allow multiple containers or uniquely identified (e.g., tagged) workloads to be associated with at least one set. In some cases, multiple machine sets 356 may be associated with a respective account 350. For example, an owner (or authorized user) of a respective account 350 may add one or more machines 354 to a respective machine set 356. Each machine set 356 may include multiple machines 354, each machine 354 being configured to execute, for example, a different operating system 112 and / or application 114 (e.g., a container may be used to execute the application 114).
[0061] The plug-in database 338 can be configured to be accessed by the metric / attribute collector 303 and can include one or more plug-ins 358 (e.g., a plug-in 358 can be a driver, a listener, a publisher, etc.) that allow the metric / attribute collector 303 to communicate with one or more computing systems 104 so that resource usage, for example, can be measured. Each computing system 104 can be configured to include one or more machines 354, each machine 354 configured to execute a different operating system 112 and / or application 114. In other words, the plug-ins 358 allow the metric / attribute collector 303 to monitor resource usage in multiple different computing environments simultaneously. For example, plug-in 358 may include a LINUX plug-in, a WINDOWS plug-in, a MAC plug-in, a SOLARIS plug-in, a VMWARE plug-in, a HYPER-V plug-in, a CITRIX XEN plug-in, an OPENSTACK plug-in, an OPENSHIFT plug-in, a KUBERNETES plug-in, a DOCKER plug-in, a PIVOTAL plug-in, an AMAZON plug-in, a MICROSOFT plug-in, a GOOGLE plug-in, a bare metal plug-in (e.g., a plug-in configured to communicate directly with a non-virtualized machine), and / or any other plug-in that allows monitoring resource usage across multiple operating systems / environments. Plug-in 358 may also allow monitoring of one or more virtualizations and / or physical environments simultaneously. Plug-in 358 may also enable monitoring of other user account information, including billing information, software program utilization, leased software licenses, and / or any other additional user account information.
[0062] The plug-ins 358 can be configured to be activated (e.g., the metric / attribute collector 303 is able to communicate with the corresponding computing system 104 using the corresponding plug-in 358) or deactivated (e.g., the metric / attribute collector 303 is unable to communicate with the corresponding computing system 104 using the corresponding plug-in 358).
[0063] The machine manager 342 may allow machines 354 to be assigned and / or associated to corresponding machine sets 356. The machine manager 342 may analyze the machines 354 in the machine set(s) 356 to determine, for example, the specifications and / or operating system of the machines 354. The specifications may include, for example, information related to the computing resources 108 (e.g., available memory, storage, etc.).
[0064] Machine manager 342 may also search for new machines to be monitored by metric / attribute collector 303. Machine manager 342 may detect new machines by searching for new IP addresses associated with particular accounts 350 and / or resource consuming users 352.
[0065] The collector database manager 344 manages data received and / or generated by the metric / attribute collector 303. For example, the collector database manager 344 may receive and / or cause storage of one or more records (e.g., data) related to machines 354, machine collections 356, accounts 350, and resource usage (e.g., metrics / attributes) associated with the machines 354, machine collections 356, and accounts 350. The collector database manager 344 may also delete data. For example, the collector database manager 344 may delete records associated with a respective machine 354, a respective machine collection 356, and / or a respective account 350. In some cases, the collector database manager 344 may truncate records associated with a respective machine 354, a respective machine collection 356, and / or a respective account 350. The deletion and / or truncation may occur, for example, after a period of time has elapsed and / or after deactivation / termination of a respective account 350.
[0066] The collector database manager 344 can communicate with the collector database 364 via a communication link 366 and cause one or more records to be stored on the collector database 364. As shown, the collector database 364 can be remote from the metric / attribute collector 303 (e.g., operating on a different server and / or a different network). However, in some cases, the collector database 364 can be local to the metric / attribute collector 303 (e.g., operating on the same server, on the same network, and / or on the same device). Data transmitted via the communication link 366 can be encrypted to prevent unauthorized access to the data during transmission. In some cases, the records stored on the collector database 364 can be encrypted to prevent unauthorized access to the records. For example, transparent data encryption (TDE) can be used to encrypt the records stored on the collector database 364.
[0067] The collector synchronizer 336 can communicate with, for example, the collector database manager 344, and can copy and / or back up data received by the collector database manager 344. For example, the collector synchronizer 336 can copy one or more records stored on the collector database 364 and / or to be stored on the collector database 364 to the collector backup 368. In some cases, the records stored on the collector backup 368 can be encrypted to prevent unauthorized access. When changes are made to one or more records, the collector synchronizer 336 can only copy and / or back up the changes to the collector backup 368. As a result, the collector synchronizer 336 may not copy the entire record to the collector backup 368. As shown, the collector synchronizer 336 can communicate with the collector backup 368 via a communication link 370. Data transmitted via the communication link 370 can be encrypted to prevent unauthorized access to the data during transmission. As shown, the collector backup 368 can be remote from the metric / attribute collector 303 (e.g., on a different server, in a different network, and / or operating on a different device). However, in some cases, the collector backup 368 can be local to the metric / attribute collector 303 (e.g., on the same server, on the same network, and / or operating on the same device).
[0068] In some cases, at least one backup collector 397 may be provided. The backup collector 397 may operate substantially the same as the metric / attribute collector 303, and may be configured to run in parallel (or simultaneously) with the metric / attribute collector 303. In some cases, the backup collector 397 is configured to be remote from the metric / attribute collector 303 (e.g., operating on a different server, in a different network, and / or on a different device). Therefore, in the event of a failure of the metric / attribute collector 303, the meter 118 may continue to monitor resource usage. In other words, the backup collector 397 may generally be described as providing redundancy. In some cases, there may be two or more backup collectors 397, so that, for example, n+2 redundancy may be achieved. Therefore, the backup collector 397 may include any one or more of the features discussed herein with respect to the metric / attribute collector 303. The backup collector 397 may communicate with the computing system 104 via a communication link 399. Data transmitted via the communication link 399 may be encrypted to prevent unauthorized access to the data during transmission.
[0069] The backup collector 397 may also be configured to generate independent records. The independent records may be used, for example, during an audit process and / or during a data recovery process (e.g., in the event that the metric / attribute collector 303 experiences a failure). In some cases, the collector backup 368 may include the backup collector 397.
[0070] As shown, the metric / attribute collector 303 may also include a collector automaton 340. The collector automaton 340 may automate one or more features of the metric / attribute collector 303. For example, the collector automaton 340 may be configured to receive a trigger event that causes the metric / attribute collector 303 to perform a predetermined action (e.g., start or terminate receiving metrics / attributes, start database cleanup, enable or disable access to computing resources 108, activate or deactivate one or more plug-ins 358 and / or any other action). The trigger event may include, for example, discovery of (multiple) new machines, expiration of contract terms, use of a predetermined amount of resources, adding a new machine to a corresponding machine set 356, etc. In some cases, the trigger event may be the expiration of a period of time. For example, every 1, 2, 3, 4, or 5 seconds (or any other suitable time interval), the metric / attribute collector 303 may search for a new Internet Protocol (IP) address (and / or any other identifier) corresponding to a new machine. In these cases, the metric / attribute collector 303 may generally be described as self-updating.
[0071] As also shown, an administrator user interface 372 is communicatively coupled to the collector core 332. The administrator user interface 372 can provide an interface for an operator of the metric / attribute collector 303 to control and / or modify the metric / attribute collector 303 and / or view data generated and / or received by the metric / attribute collector 303. For example, the administrator user interface 372 can be configured to display and / or cause the generation of usage summaries based on each account 350 or resource consuming user 352. The administrator user interface 372 can also be used to, for example, manually add one or more machines 354, adjust and / or delete one or more records, add or remove new accounts 350, add or remove plug-ins 358, adjust / create triggers for the collector automaton 340, continue and / or suspend monitoring resource usage at a predetermined time in response to, for example, the terms of a contract and / or any other administrative task.
[0072] As shown, the administrator user interface 372 can communicate with the collector core 332 via a communication link 374. Data transmitted via the communication link 374 can be encrypted to prevent unauthorized access to the data during transmission. As shown, the administrator user interface 372 can be remote from the metric / attribute collector 303 (e.g., on a different server, in a different network, and / or operating on a different device). However, in some cases, the administrator user interface 372 can be local to the metric / attribute collector 303 (e.g., on the same server, on the same network, and / or operating on the same device).
[0073] In some cases, for example, the management user interface 372 may be generated and displayed on a web browser. As another example, in some cases, the management user interface 372 may be an application executed on a computer that communicates with the metric / attribute collector 303 via a network connection (e.g., the Internet). As yet another example, in some cases, the management user interface 372 may be an application executed locally (e.g., on the same device as the metric / attribute collector 303).
[0074] Figure 3C An example of an analysis platform 360 is shown, which may be Figure 3A An example of an analysis platform 312 of the present invention. The analysis platform 360 can generally be described as being configured to normalize (e.g., convert) multiple metrics / attributes received over a period of time into normalized units, and sum the normalized metrics / attributes to generate a total resource usage value represented as a single normalized unit for the time period. In other words, the analysis platform 360 can be configured to generate a single usage value representing total resource usage over a time period. The analysis platform 360 can include any combination of hardware, software, and / or firmware. In some cases, the analysis platform 360 can be executed on the same server and / or on the same network as the metric / attribute collector 302. In other cases, the analysis platform 360 can be executed on a different server and / or on a different network than the metric / attribute collector 302 (e.g., on a user's network and / or server).
[0075] The analysis platform 360 may be configured to receive one or more metrics / attributes representing usage of the computing resources 108 from the metrics / attribute collector 302 and / or one or more of the backup collectors 397. In some cases, the analysis platform 360 may receive the one or more metrics / attributes from the computing system 104. In these cases, the meter 118 may not include the metrics / attribute collector 302, and the analysis platform 360 may include the plug-in database 338. The analysis platform 360 may receive the metrics / attributes in the form of, for example, a JavaScript-based lightweight data interchange format (JSON) file, a comma-separated value (CSV) file, and / or any other file type.
[0076] The analysis platform 360 may be configured to be included with any one or more of the computing system 104, the device 102, and / or any other device communicatively coupled to the network 106. For example, the device 102 may include the analysis platform 360. When the device 102 includes the analysis platform 360, a user of the analysis platform 360 may be able to use the meter 118 with fewer modifications to the user's network security than when the analysis platform 360 is not executed on the device 102. In some cases, when the device 102 includes the analysis platform 360, the analysis platform 360 may be configured to analyze resource usage of one or more users on, for example, a local area network, where each of the users has, for example, a corresponding device. Additionally or alternatively, when the device 102 includes both the analysis platform 360 and the metric / attribute collector 302, only metrics / attributes representing usage of the computing resources 108 may need to be transmitted over a public network (e.g., the Internet).
[0077] The analytics platform 360 may include at least one analytics core 376, at least one analytics metric receiver 378, at least one analytics synchronizer 380, at least one analytics database manager 382, at least one analytics automaton 384, at least one usage analyzer 386, at least one notification generator 388, at least one subscription manager 390, and at least one exchange / contract manager 393. The analytics core 376 may generally be described as communicating with and / or managing each of the analytics metric receiver 378, analytics synchronizer 380, analytics database manager 382, analytics automaton 384, usage analyzer 386, notification generator 388, and subscription manager 390.
[0078] As shown, the analysis core 376 is communicatively coupled to the analysis metric receiver 378. The analysis metric receiver 378 receives metrics / attributes representing the use of the computing resources 108 from the metric / attribute collector 302. The analysis metric receiver 378 may include one or more of the calculators 305. In some cases, the analysis metric receiver 378 may be configured to generate a total resource usage value expressed as a single normalized unit. In these cases, the analysis core 376 may be configured to receive the total resource usage value expressed as a single normalized unit. In other cases, the analysis core 376 may be configured to generate a total resource usage value expressed as a single normalized unit.
[0079] The analysis core 376 and / or the analysis metric receiver 378 may communicate with the usage analyzer 386. The usage analyzer 386 monitors the usage associated with the corresponding account 350 and / or the resource consumption user 352 to develop (or determine) normal usage, peak usage, and / or trough usage. In other words, the normal usage, peak usage, and / or trough usage may be based at least in part on the metrics / attributes received corresponding to the corresponding computing resources in the computing resources 108. In some cases, for example, peak usage may represent the maximum usage over a period of time (e.g., one hour, one day, one week, one month, and / or any other suitable period of time), trough usage may represent the minimum usage over a period of time (e.g., one hour, one day, one week, one month, and / or any other suitable period of time), and normal usage may represent the average usage over a period of time (e.g., one hour, one day, one week, one month, and / or any other suitable period of time). In some cases, peak usage may approximate maximum usage over a period of time (e.g., usage within 5%, 10%, or 15% of actual maximum usage), and trough usage may approximate minimum usage over a period of time (e.g., usage within 5%, 10%, or 15% of actual minimum usage).
[0080] Normal usage, peak usage, and / or valley usage may correspond to a single computing resource, multiple computing resources, and / or one or more sub-resources constituting a computing resource (e.g., one or more of a graphics processor and a graphics memory of GPU 210). For example, normal usage, peak usage, and / or valley usage may be generated for each of multiple computing resources (e.g., each of one or more of CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209). In these cases, the normal usage, peak usage, and / or valley usage of each resource may be represented as normalized units and / or (multiple) non-normalized units (e.g., represented as units corresponding to the respective resources). As another example, normal usage, peak usage, and / or valley usage may be generated corresponding to multiple computing resources (e.g., two or more of one or more of CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209). In these cases, normal usage, peak usage, and / or valley usage may be represented as a single normalized unit.
[0081] In some cases, the usage analyzer 386 may be configured to generate an overall peak usage average. The overall peak usage average may generally be described as the average of two or more peak usage values corresponding to two or more corresponding predetermined time periods. For example, peak usage may be determined for each day of the week and averaged to determine an overall peak usage average for the week. Additionally or alternatively, the usage analyzer 386 may be configured to generate an overall trough usage average. The overall trough usage average may generally be described as the average of two or more trough usage values corresponding to two or more corresponding predetermined time periods. For example, trough usage may be determined for each day of the week and averaged to determine an overall trough usage average for the week.
[0082] The total peak usage average and / or the total trough usage average may correspond to each computing resource and / or multiple computing resources. For example, the total peak usage average and / or the total trough usage average may be generated for each of the multiple computing resources (e.g., each of one or more of the CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209). In these cases, the total peak usage average and / or the total trough usage average for each resource may be represented as a normalized unit and / or (multiple) non-normalized units (e.g., represented as units corresponding to the individual resources). As another example, the total peak usage average and / or the total trough usage average may be generated corresponding to multiple computing resources (e.g., two or more of one or more of the CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209). In these cases, the total peak usage average and / or the total trough usage average may be represented as a single normalized unit.
[0083] Normal average usage may generally be described as average resource usage, which is calculated by measuring actual resource usage multiple times over a time period within a repeated time interval and averaging the measurements. For example, actual resource usage may be measured at 11:00 a.m. every day for five days, and the average usage at 11:00 a.m. may be calculated based on these measurements. Peak average usage may generally be described as average resource usage, which is calculated by measuring actual resource usage multiple times over a time period within a repeated time interval, selecting a portion of the measurements with the highest usage (e.g., the highest 5%, 10%, 15%, 20%, 25%, 35%, 40%, 50%, or 60% of resource usage), and calculating the average of the selected portion. For example, actual resource usage may be measured at 11:00 a.m. every day for five days, and the peak average usage at 11:00 a.m. may be calculated based on the three highest measurements. Valley average usage can generally be described as average resource usage calculated by measuring actual resource usage multiple times over a time period within a repeated time interval, selecting the portion of measurements with the lowest usage (e.g., the lowest 5%, 10%, 15%, 20%, 25%, 35%, 40%, 50%, or 60% of resource usage), and calculating the average of the selected portion. For example, actual resource usage can be measured at 11:00 a.m. every day for five days, and the valley average usage at 11:00 a.m. can be calculated based on the three lowest measurements.
[0084] Normal average usage, peak average usage, and / or trough average usage may correspond to a single computing resource and / or multiple computing resources. For example, normal average usage, peak average usage, and / or trough average usage may be generated for each of multiple computing resources (e.g., each of one or more of CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209). In these cases, the normal average usage, peak average usage, and / or trough average usage of each resource may be represented as a normalized unit and / or (multiple) non-normalized units (e.g., represented as units corresponding to the respective resources). As another example, normal average usage, peak average usage, and / or trough average usage may be generated corresponding to multiple computing resources (e.g., two or more of one or more of CPU 202, memory 204, storage 206, network interface 208, GPU 210, and / or other resources 209). In these cases, normal average usage, peak average usage, and / or trough average usage may be represented as a single normalized unit.
[0085] The usage analyzer 386 may generate a normal average usage pattern 392, a peak average usage pattern 394, and a valley average usage pattern 395 based on the normal average usage, the peak average usage, and the valley average usage, respectively (for clarity, the normal average usage, the peak average usage, and the valley average usage, respectively). Figure 3D ). The normal average usage pattern 392 may be a data set including a plurality of normal average usage values corresponding to different predetermined times (or predetermined time periods). The peak average usage pattern 394 may be a data set including a plurality of peak average usage values corresponding to different predetermined times (or predetermined time periods). The valley average usage pattern 395 may be a data set including a plurality of valley average usage values corresponding to different predetermined times (or predetermined time periods).
[0086] The data set corresponding to the normal average usage pattern 392 can be compared to the data set corresponding to the peak average usage pattern 394 to determine a threshold usage value or range for one or more predetermined times (or predetermined time periods). For example, the threshold usage value for the predetermined time can be obtained by taking the average of the normal average usage value and the peak average usage value at the corresponding predetermined time. As another example, the threshold usage range can be described as a range extending from the normal average usage value to the peak average usage value at the corresponding predetermined time.
[0087] Additionally or alternatively, a data set corresponding to the valley average usage pattern 395 may be compared to a data set corresponding to the peak average usage pattern 394 to determine a threshold usage value or range for one or more predetermined times (or predetermined time periods). For example, the threshold usage value for a predetermined time may be obtained by taking the average of the valley average usage value and the peak average usage value for the corresponding predetermined time. As another example, a threshold usage range may be described as a range extending from the valley average usage value to the peak average usage value at the corresponding predetermined time.
[0088] Additionally or alternatively, a data set corresponding to the normal average usage pattern 392 may be compared to a data set corresponding to the trough average usage pattern 395 to determine a threshold usage value or range for one or more predetermined times (or predetermined time periods). For example, the threshold usage value for a predetermined time may be obtained by taking the average of the normal average usage value and the trough average usage value for the corresponding predetermined time. As another example, a threshold usage range may be described as a range extending from the trough average usage value to the normal average usage value at the corresponding predetermined time.
[0089] Additionally or alternatively, the threshold usage value may be a trough average usage value, a peak average usage value, a trough usage value (i.e., minimum usage within a predetermined time) or a total trough usage average, and / or a peak usage value (i.e., maximum usage within a predetermined time) or a total peak usage average.
[0090] Notification generator 388 may be configured to cause a notification to be generated in response to, for example, resource usage at a predetermined time (or predetermined time interval) meeting, exceeding, and / or failing to exceed a threshold usage value and / or resource usage falling outside a threshold usage range. In other words, notifications may be generated based at least in part on a comparison of resource usage to a threshold or threshold usage range. For example, detecting usage exceeding a threshold usage value may indicate unauthorized third-party use of the resource, and detecting usage not exceeding a trough average usage value may indicate a hardware failure (e.g., at least a portion of computing resource 108 may be faulty).
[0091] In some cases, the usage analyzer 386 may be configured to identify outliers (e.g., resource usage that falls outside a threshold usage range). For example, the usage analyzer 386 may utilize machine learning to identify time periods of high usage and low usage. In a time period of high usage and / or low usage, if the usage does not exceed the peak average usage value and / or does not exceed the trough average usage value for at least a period of time (e.g., 10 minutes, 30 minutes, 60 minutes, 2 hours, and / or any other time span), the usage analyzer 386 may identify the usage as an outlier. Therefore, the notification generator 388 may be configured to not generate a notification in response to the detection of an outlier. In addition, when an outlier is identified, the usage analyzer 386 may exclude the outlier from the calculation of the normal average usage pattern 392, the peak average usage pattern 394, and / or the trough average usage pattern 395, unless, for example, the outlier is detected multiple times. Therefore, the normal average usage pattern 392, the peak average usage pattern 394, and / or the trough average usage pattern 395 can all be generally described as being generated using machine learning.
[0092] In some cases, usage analyzer 386 can analyze usage of other users of meter 118 to determine whether other users are experiencing similar usage patterns. For example, if multiple users are experiencing resource usage that does not exceed a valley average resource value, this may indicate a hardware failure (e.g., at least a portion of computing resource 108 may be faulty). In this case, notification generator 388 may cause a notification to be generated.
[0093] The notification generated can be, for example, in the form of an alert transmitted to one or more owners / users of accounts 350 via, for example, a phone call, SMS text message, email, fax, tactile sensation (e.g., via a smart watch, fitness tracker, remote health monitoring device, and / or any other wearable device), an alert generated within an application or software for managing analytics platform 360 and / or metric / attribute collector 302 (e.g., an in-app message), and / or any other type of alert.
[0094] The usage analyzer 386 can use, for example, machine learning to determine periods of high resource usage and periods of low resource usage that occur regularly over a period of time. When periods of high resource usage and periods of low resource usage are identified, the threshold usage for generating an alert can be adjusted, for example. For example, during a known period of high resource usage, the threshold usage for generating an alert can be adjusted to be higher than during a known period of low resource usage.
[0095] The usage analyzer 386 may also be configured to generate a benchmark (e.g., an average cost index) that represents the cost per unit of resources consumed for one or more users and / or accounts. The usage analyzer 386 may receive a total resource usage value represented as a single normalized unit associated with one or more accounts 350, resource consuming users 352, and / or machine collections 356. In some cases, the usage analyzer 386 may receive a total resource usage value corresponding to a workload type (e.g., a SPARK cluster workload, an ELASTICSEARCH workload, a data warehouse workload, a disaster recovery workload, a developer workload, a quality assurance workload, a production workload, etc.), a service provider (e.g., AMAZON, MICROSOFT, GOOGLE, and / or any other service provider), a hardware provider (e.g., DELL, SUPERMICRO, HP, and / or any other hardware provider), a hardware configuration, a hypervisor (e.g., VMWARE, CITRIX, OPENSTRACK, and / or any other hypervisor), and / or a group (e.g., a business unit within an organization such as an engineering, sales, or marketing department).
[0096] The use analyzer 386 may also receive cost data associated with the resources being consumed. Cost data may be received from a computing system 104 (e.g., a service provider), from user input, and / or any other source. Cost data may represent the cost of total resource usage associated with a corresponding account 350, a resource consuming user 352, a machine collection 356, a workload type, and / or a group. The cost data associated with the resources being consumed may include one or more of a plurality of hosting costs, hardware costs, networking costs, cloud hosting costs, labor costs, software license costs, compliance costs, managed service costs, consultant costs, support costs, developer / operation education costs, network economic costs, migration opportunity costs, and / or any other associated costs of the resources being consumed. The use analyzer 386 may then divide the cost of total resource usage by the total resource usage value to obtain a cost per unit consumption value. The use analyzer 386 may utilize the cost per unit consumption to generate a benchmark (e.g., an average cost index).
[0097] The cost per unit of consumption value may then be compared to, for example, a market benchmark (e.g., an average of the cost per unit across all users of one or more meters 118), a group or industry benchmark (e.g., an average of the cost per unit across all users within a predetermined industry or group), a workload benchmark (e.g., an average of the cost per unit across all users performing a predetermined workload), a service provider (e.g., AMAZON, MICROSOFT, GOOGLE, and / or any other service provider) benchmark, and / or the like. The group or industry benchmark may be based on, for example, company size (e.g., market cap, annual revenue, etc.), business units or departments within a particular company or across multiple companies (e.g., sales department, engineering department, etc.), and / or any other group.
[0098] In some cases, the use analyzer 386 may also be configured to generate market benchmarks, group or industry benchmarks, service provider benchmarks, and / or workload benchmarks. For example, the use analyzer 386 may be configured to access data related to resource usage and resource costs for one or more accounts 350 corresponding to one or more different users.
[0099] In some cases, the usage analyzer 386 may be separate from the analytics platform 360. For example, the usage analyzer 386 may be configured to communicate with multiple analytics platforms 360 and / or metrics / attribute collectors 302. In some cases, there may be a market usage analyzer that is remote from the analytics platform 360 and is configured to determine average usage and average cost for a specific group or industry across multiple different users, specific accounts, specific workloads, etc. In these cases, there may also be a local usage analyzer that is configured to determine average usage and average cost for a specific analytics platform 360.
[0100] In some cases, the usage analyzer 386 may also be configured to analyze the computing resources 108 being consumed to determine whether the workload 110 being executed on the computing resources 108 is effectively utilizing the computing resources 108. For example, the usage analyzer 386 may analyze the specifications of the computing resources 108 (e.g., processor speed and / or size, memory speed and / or size, GPU speed and / or size, storage speed and / or size, etc.) and compare these specifications with the requirements of the workload 110 so that the usage analyzer 386 can generate an optimized computing resource configuration (e.g., a best estimate configuration). In this case, the usage analyzer 386 may be configured to generate a notification to be sent to the user, wherein the notification may include a description of the optimized computing resource configuration. In some cases, the usage analyzer 386 may be configured to automatically convert the workload 110 to the optimized computing resource configuration. As another example, the computing resource 108 may include a dedicated graphics processing unit, however, the application 114 and / or operating system 112 executed on the computing resource 108 may not require a dedicated graphics processing unit to operate efficiently. In this case, usage analyzer 386 may be configured to cause a notification to be generated to be sent to the user. In some cases, usage analyzer 386 may be configured to automatically move workload 110 to another computing system 104 that does not include a dedicated graphics processing unit. Thus, the cost per unit of computing resources consumed may be reduced.
[0101] In some cases, usage analyzer 386 may be further configured to generate a computing resource configuration recommendation based on the workload 110 to be executed. The computing resource configuration recommendation may be associated with a cost per unit of computing resource consumption value and / or an estimated performance level of the corresponding workload 110. Thus, a user may compare resource costs and / or performance between multiple resource providers and / or between multiple computer resource options available from a particular resource provider.
[0102] In some cases, when a user is pre-purchasing a predetermined amount of resources, the usage analyzer 386 may be configured to analyze the user's resource usage. In these cases, the usage analyzer 386 may convert the amount of pre-purchased resources into a normalized value representing the maximum amount of available resources, and compare the normalized value of the pre-purchased resources with the peak usage value. In other words, the usage analyzer 386 may be configured to determine whether the resource supply is sufficient to meet the user's peak resource demand when the user pre-purchases a predetermined amount of resources. Therefore, based on this comparison, the usage analyzer 386 may be configured to provide recommendations about the amount of resources to be pre-purchased.
[0103] Subscription manager 390 manages and maintains subscription information related to users of meter 118. For example, subscription manager 390 may determine how many resource consumption users 352 may be assigned to a corresponding account 350, determine how many accounts may be assigned to a corresponding user (e.g., a corporate entity), determine how many machines 354 may be accessed by a corresponding user, determine how many machines 354 may be assigned to a corresponding machine collection 356, determine how many machine collections 356 a corresponding user may have, associate login information with a corresponding user, determine the validity of the login information (e.g., whether the login information has expired), and / or any other task associated with subscription management.
[0104] The exchange / contract manager 393 is configured to coordinate a contract between two parties (e.g., a buyer and a seller). The exchange / contract manager 393 may be configured to disable the meter 118 according to the terms of the contract. When the meter 118 has been disabled, the user's access to the computing resources 108 may be disabled. The exchange / contract manager 393 may also be configured to audit resource usage. Auditing of resource usage may involve confirming that resources indicated as being used are actually being used and / or confirming that the usage is in accordance with the contract. The audit process may involve comparing the data collected by the metric / attribute collector 302 with the data generated by the second collector (e.g., a backup collector).
[0105] The analysis automaton 384 may automate one or more features of the analysis platform 360. For example, the analysis automaton 384 may be configured to receive a trigger event that causes the analysis platform 360 to perform a predetermined action. The predetermined action may include, for example, enabling or disabling access to the computing resources 108, activating or deactivating at least a portion of the metric / attribute collector 302 (e.g., the metric receiver 334), activating or deactivating one or more plug-ins 358 (e.g., one or more plug-ins 358 configured to enable communication with the computing system 104), starting a database cleanup, and / or any other action. The trigger event may include, for example, receiving a new contract, receiving a new subscription, user input from the administrator user interface 372, a predetermined time (e.g., the start of a new contract / subscription and / or any other predetermined time), a recall request, etc. In some cases, the trigger event may be the expiration of a period of time (e.g., the termination of a contractual term). For example, the analysis platform 360 may perform a predetermined action in response to the termination of a contractual term.
[0106] As shown, the analysis database manager 382 communicates with the analysis core 376 and the analysis synchronizer 380. The analysis database manager 382 manages data received and / or generated by the analysis platform 360. For example, the analysis database manager can manage and / or cause storage of one or more records (e.g., data) related to subscriptions, contracts, metrics / attributes, usage patterns (e.g., normal average usage patterns 392, peak average usage patterns 394, or trough average usage patterns 395), notification thresholds, trigger events, and / or any other data received or generated by the analysis platform 360. The analysis database manager 382 can also delete and / or truncate data. For example, the analysis database manager 382 can delete and / or truncate records related to subscriptions, contracts, metrics / attributes, usage patterns (e.g., normal average usage patterns 392, peak average usage patterns 394, or trough average usage patterns 395), notification thresholds, and / or any other data received by the analysis platform 360. Deletion and / or truncation can occur, for example, after a period of time has passed and / or after, for example, the deactivation / termination of a subscription or contract.
[0107] The analysis database manager 382 can communicate with the analysis database 396 via the communication link 398 and cause one or more records to be stored on the analysis database 396. As shown, the analysis database 396 can be remote from the analysis platform 360 (e.g., on a different server, in a different network, and / or operating on a different device). However, in some cases, the analysis database 396 can be local to the analysis platform 360 (e.g., on the same server, on the same network, and / or operating on the same device). Data transmitted via the communication link 398 can be encrypted to prevent unauthorized access during transmission. In some cases, records stored on the analysis database 396 can be encrypted to prevent unauthorized access to these records. For example, transparent data encryption (TDE) can be used to encrypt records stored on the analysis database 396.
[0108] The analysis synchronizer 380 can communicate with the analysis metric receiver 378 and / or the analysis database manager 382, and can copy and / or back up the data received by the analysis platform 360 (e.g., data received by the analysis database manager 382). For example, the analysis synchronizer 380 can copy and / or back up one or more of the records stored and / or to be stored on the analysis database 396 to the analysis backup 381. In some cases, the records stored on the analysis backup 381 can be encrypted to prevent unauthorized access. When one or more records are changed, the analysis synchronizer 380 can only back up the changes to the analysis backup 381. As shown, the analysis synchronizer 380 can communicate with the analysis backup 381 via a communication link 383. The data transmitted via the communication link 383 can be encrypted to prevent unauthorized access to the data during transmission. As shown, the analysis backup 381 can be remote from the analysis platform 360 (e.g., on a different server, in a different network, and / or on a different device). However, in some cases, analytics backup 381 may be local to analytics platform 360 (eg, operating on the same server, on the same network, and / or on the same device).
[0109] In some cases, a backup analysis platform 355 may be provided that operates substantially identically to the analysis platform 360. Thus, an independent record may be maintained. The independent record may be used, for example, during an audit process and / or during a data recovery process (e.g., in the event that the analysis platform 360 experiences a failure). The backup analysis platform 355 may be communicatively coupled to the metrics / attribute collector 302 using a communication link 353.
[0110] In some cases, analysis backup 381 may also include a backup analysis platform that operates substantially identically to analysis platform 360. In other words, analysis backup 381 may include an independent analysis platform. Thus, independent records may be maintained. Independent records may be used, for example, during an audit process and / or during a data recovery process (e.g., in the event that analysis platform 360 experiences a failure).
[0111] As shown, the use predictor 385 can be communicatively coupled to the analysis core 376 via a communication link 387. The use predictor 385 can estimate the future use of the corresponding user (e.g., a user who owns or controls one or more accounts 350), the corresponding account 350, and / or the corresponding resource consumption user 352. The use predictor 385 can use, for example, a normal average use pattern 392, a peak average use pattern 394, and / or a valley average use pattern 395 to predict future use. Additionally or alternatively, the use predictor 385 can use machine learning to analyze historical resource use to predict future use. For example, the use predictor 385 can analyze the use for patterns and / or surges (e.g., an increase in resource use). Once the future use is predicted, the use predictor 385 can also estimate the predicted economic cost corresponding to the predicted use.
[0112] As shown, the analysis user interface 389 may communicate with the analysis core 376 via a communication link 391. The analysis user interface 389 may be configured to generate a display presenting information related to the analysis platform 360 and / or the metrics / attribute collector 302. For example, the analysis user interface 389 may be configured to display usage forecasts, normal average usage patterns 392 (e.g., as a graph or plot), peak average usage patterns 394 (e.g., as a graph or plot), trough average usage patterns 395 (e.g., as a graph or plot), current contract terms, current subscriptions, active and / or inactive notifications / alerts, and / or any other data about the analysis platform 360. In some cases, the analysis user interface 389 may be configured to allow a user to modify various features of the analysis platform 360. For example, the analysis user interface 389 may be configured to allow a user to change and / or cancel one or more subscriptions, change and / or cancel one or more contracts, change, add and / or remove notification thresholds and / or analysis automator 384 triggers and / or change any other features of the analysis platform 360.
[0113] As shown, analysis user interface 389 can be remote from analysis platform 360 (e.g., on a different server, in a different network, and / or operating on a different device). However, in some cases, analysis user interface 389 can be local to analysis platform 360 (e.g., on the same server, on the same network, and / or operating on the same device). Data transmitted over communication link 391 can be encrypted to prevent unauthorized access to the data.
[0114] For example, in some cases, analysis user interface 389 may be generated and displayed on a web browser. As another example, in some cases, analysis user interface 389 may be an application executed on a computer that communicates with analysis platform 360 via a network connection (e.g., the Internet). As yet another example, in some cases, analysis user interface 389 may be an application executed locally (e.g., on the same hardware as analysis platform 360).
[0115] Communication links 330, 353, 362, 366, 370, 374, 383, 387, 391, 398 and / or 399 can utilize Secure Sockets Layer (SSL) security protocol when establishing communications. As discussed herein, communication links 330, 353, 362, 366, 370, 374, 383, 387, 391, 398 and / or 399 can each carry encrypted data. Therefore, one or more of the communication links 330, 353, 362, 366, 370, 374, 383, 387, 391, 398 and / or 399 can generally be described as secure communication links (e.g., the communication links 330, 353, 362, 366, 370, 374, 383, 387, 391, 398 and / or 399 use at least one of the SSL security protocols and / or the transmitted data is encrypted).
[0116] The metric / attribute collector 302 and the analysis platform 360 may be implemented in software, firmware, hardware, and / or a combination thereof. For example, the metric / attribute collector 302 and the analysis platform 360 may be implemented as software that is configured to be stored on one or more memories (e.g., any type of tangible, non-transitory storage medium, and may include magnetic recording media (e.g., hard drives), optical disks, semiconductor devices such as read-only memories (ROMs), random access memories (RAMs) such as dynamic and static RAMs, erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), flash memory, magnetic or optical cards, or any type of storage medium for storing electronic instructions) and executed by one or more processors (e.g., processors sold by Intel, Advanced Micro Devices, IBM, ARM, Oracle, and / or any other processor) to perform one or more operations. As another example, the metric / attribute collector 302 and the analysis platform 360 may be implemented as circuits (e.g., application specific integrated circuits). Metric / attribute collector 302 and analytics platform 360 may be implemented on the same or different machines, servers, and / or networks.
[0117] Figure 4 is configured to generate Figure 3ASchematic example of a conversion unit generator 400 of the conversion unit discussed. The conversion unit generator 400 can be separate from the computing system 104, the device 102, and the network 106. For example, the conversion unit generator 400 can be part of a third-party system so that the conversion unit can be generated and input into the analysis platform 312 as a fixed value. As shown, the conversion unit generator 400 can include at least a first resource conversion unit generator 402 and a second resource conversion unit generator 404. The first resource conversion unit generator 402 can generate, for example, one or more of the CPU conversion unit 314, the memory conversion unit 316, the storage conversion unit 318, the network conversion unit 320, and / or the disk IO conversion unit 328. The second resource conversion unit generator 404 can generate, for example, one or more of the GPU processor conversion unit 322, the GPU memory conversion unit 324, and / or the GPU memory speed conversion unit 326.
[0118] As shown, the first resource conversion unit generator 402 includes a CPU conversion unit generator 406 , a memory conversion unit generator 408 , a storage conversion unit generator 410 , a network conversion unit generator 412 , and a disk IO conversion unit generator 414 .
[0119] CPU conversion unit generator 406 may generate CPU conversion unit 314 based at least in part on CPU allocation 416 and CPU calculation portion 418. For example, CPU conversion unit 314 may be generated by dividing CPU allocation 416 by CPU calculation portion 418.
[0120] The CPU allocation 416 corresponds to the clock speed of the CPU 202 accessible to the user. For example, only a portion of the physical processor may be allocated to the workload of one or more users. In other words, the allocated available clock speed may be measured less than the default clock speed of the physical processor. The CPU calculation portion 418 may generally correspond to a weight representing the CPU resources used by one or more of the workloads 110. In some cases, the CPU calculation portion 418 may be an experimentally derived value based on an analysis of the workloads of several users. As such, in some cases, the CPU calculation portion 418 may generally be described as a dynamic weight that is adjustable at a predetermined time to cope with changes in the workload.
[0121] Memory translation unit generator 408 may generate memory translation unit 316 based at least in part on memory allocation 420 and memory calculation portion 422. For example, memory translation unit 316 may be generated by dividing memory allocation 420 by memory calculation portion 422.
[0122] Memory allocation 420 corresponds to the amount of memory 204 accessible to users. For example, only a portion of physical memory may be allocated to one or more users' workloads. In other words, the allocated memory may be measurably less than the total physical memory available. Memory calculation portion 422 may generally correspond to weights representing memory resources used by one or more of workloads 110. In some cases, memory calculation portion 422 may be an experimentally derived value based on an analysis of several users' workloads. As such, in some cases, memory calculation portion 422 may generally be described as a dynamic weight that is adjustable at predetermined times to account for changes in workload.
[0123] The storage conversion unit generator 410 may generate the storage conversion unit 318 based at least in part on the storage allocation 424 and the storage calculation portion 426. For example, the storage conversion unit 318 may be generated by dividing the storage allocation 424 by the storage calculation portion 426.
[0124] Storage allocation 424 corresponds to the amount of storage 206 accessible to users. For example, only a portion of physical storage may be allocated to one or more user's workloads. In other words, the allocated storage may measure less than the total physical storage available. Storage calculation portion 426 may generally correspond to a weight representing the storage resources used by one or more of the workloads 110. In some cases, storage calculation portion 426 may be an experimentally derived value based on an analysis of the workloads of several users. As such, in some cases, storage calculation portion 426 may generally be described as a dynamic weight that is adjustable at a predetermined time to cope with changes in workload.
[0125] Network conversion unit generator 412 can generate network conversion unit 320 based at least in part on network allocation 428 and network computation portion 430. For example, network conversion unit 320 can be generated by dividing network allocation 428 by network computation portion 430.
[0126] The network allocation 428 corresponds to the network bandwidth accessible to the users. For example, only a portion of the total physical network bandwidth may be allocated to the workload of one or more users. In other words, the allocated network bandwidth is measurably less than the total physical network bandwidth available. The network calculation portion 430 may generally correspond to a weight representing a network resource (e.g., bandwidth) used by one or more of the workloads 110. In some cases, the network calculation portion 430 may be an experimentally derived value based on an analysis of the workloads of several users. As such, in some cases, the network calculation portion 430 may generally be described as a dynamic weight that is adjustable at a predetermined time to cope with changes in the workload.
[0127] Disk IO translation unit generator 414 may generate disk IO translation unit 328 based at least in part on disk IO allocation 432 and disk IO calculation portion 434. For example, disk IO translation unit 328 may be generated by dividing disk IO allocation 432 by disk IO calculation portion 434.
[0128] The disk IO allocation 432 corresponds to the disk bandwidth accessible to the user (e.g., reading and writing to the storage 206). For example, only a portion of the total physical disk bandwidth may be allocated to the workload of one or more users. In other words, the allocated disk bandwidth may be measured to be less than the total physical disk bandwidth available. The disk IO calculation portion 434 may generally correspond to a weight representing the disk IO resources (e.g., disk bandwidth) used by one or more of the workloads 110. In some cases, the disk calculation portion 434 may be an experimentally derived value based on an analysis of the workloads of several users. As such, in some cases, the disk calculation portion 434 may generally be described as a dynamic weight that is adjustable at a predetermined time to cope with changes in the workload.
[0129] The sum of the CPU computation portion 418, the memory computation portion 422, the storage computation portion 426, the network computation portion 430, and the disk IO computation portion 434 may total 100. In other words, by dividing the computation portion by 100, each computation portion may be represented as a percentage of the total computation resources evaluated by the first resource conversion unit generator 402.
[0130] As shown, the second resource conversion unit generator 404 includes a GPU processor conversion unit generator 436 , a GPU memory conversion unit generator 438 , and a GPU memory speed conversion unit generator 440 .
[0131] GPU processor transformation unit generator 436 may generate GPU processor transformation unit 322 based at least in part on GPU processor allocation 442 and GPU processor computation portion 444. For example, GPU processor transformation unit 322 may be generated by dividing GPU processor allocation 442 by GPU processor computation portion 444.
[0132] The GPU processor allocation 442 corresponds to the clock speed of the GPU 210 accessible to the user. For example, only a portion of the physical GPU processor can be allocated to the workload of one or more users. In other words, the available clock speed of the allocated GPU processor is measurably less than the default clock speed of the physical GPU processor. The GPU processor calculation portion 444 can generally correspond to a weight representing the GPU processor resources used by one or more of the workloads 110. In some cases, the GPU calculation portion 444 can be an experimentally derived value based on an analysis of the workloads of several users. As such, in some cases, the GPU calculation portion 444 can generally be described as a dynamic weight that is adjustable at a predetermined time to cope with changes in the workload.
[0133] GPU memory conversion unit generator 438 may generate GPU memory conversion unit 324 based at least in part on GPU memory allocation 446 and GPU memory calculation portion 448. For example, GPU memory conversion unit 324 may be generated by dividing GPU memory allocation 446 by GPU memory calculation portion 448.
[0134] The GPU memory allocation 446 corresponds to the amount of memory of the GPU 210 that is accessible to the user. For example, only a portion of the physical memory of the GPU 210 may be allocated to the workload of one or more users. In other words, the memory of the GPU 210 that is allocated may measure less than the total physical memory of the GPU 210 that is available. The GPU memory calculation portion 448 may generally correspond to a weight representing the memory resources used by one or more of the workloads 110. In some cases, the GPU memory calculation portion 448 may be an experimentally derived value that is based on an analysis of the workloads of several users. As such, in some cases, the GPU memory calculation portion 448 may generally be described as a dynamic weight that is adjustable at a predetermined time to cope with changes in the workload.
[0135] GPU memory speed conversion unit generator 440 may generate GPU memory speed conversion unit 326 based at least in part on GPU memory speed allocation 450 and GPU memory speed calculation portion 452. For example, GPU memory speed conversion unit 326 may be generated by dividing GPU memory speed allocation 450 by GPU memory speed calculation portion 452.
[0136] The GPU memory speed allocation 450 corresponds to the clock speed of the GPU memory accessible to the user. For example, only a portion of the clock speed of the physical GPU memory may be allocated to the workload of one or more users. In other words, the available clock speed of the allocated GPU memory may be measured to be less than the default clock speed of the physical GPU memory. The GPU memory speed calculation portion 452 may generally correspond to a weight representing the GPU memory speed resource used by one or more of the workloads 110. In some cases, the GPU memory calculation portion 452 may be an experimentally derived value based on an analysis of the workloads of several users. As such, in some cases, the GPU memory speed calculation portion 452 may generally be described as a dynamic weight that is adjustable at a predetermined time to cope with changes in the workload.
[0137] The sum of the GPU processor calculation portion 444, the GPU memory calculation portion 448, and the GPU memory speed calculation portion 452 may total 100. In other words, by dividing the calculation portion by 100, each calculation portion may be represented as a percentage of the total calculation resources evaluated by the second resource conversion unit generator 404.
[0138] As previously discussed, the physical computing resources 108 may additionally or alternatively include other resources 209. As discussed, the other resources 209 may include any one or more of a field programmable gate array (FPGA), a tensor processing unit (TPU), an intelligence processing unit (IPU), a neural processing unit (NPU), a video processing unit (VPU), a digital signal processor (DSP), an accelerated processing unit (APU), an application specific integrated circuit (ASIC), a system on a chip (SoC), a programmable SoC, an application specific standard component (ASSP), an adaptive computing acceleration platform (ACAP), a microcontroller, and / or any other computing resource. In these cases, each resource conversion unit may be determined using an independent resource conversion unit generator corresponding to a corresponding one of the other computing resources 209. For example, the conversion unit generator 400 may include an other resource conversion unit generator 454. The other resource conversion unit generator 454 may be configured to generate one or more conversion units corresponding to a corresponding one or more of the other resources 209.
[0139] Figure 5 An example flow chart of a method 500 for quantifying the use of different computing resources into a single measurement unit is shown, which method can be used, for example, in Figure 1 The method 500 may be implemented as one or more instructions in one or more non-transitory computer-readable media (eg, storage 206 ), the one or more instructions being configured to be executed by one or more processors (eg, CPU 202 ).
[0140] As shown, method 500 may include step 502. Step 502 may include causing a workload (e.g., workload 110) to be executed on a computing system (e.g., computing system 104). In some cases, the workload may be caused to be executed, for example, in response to receiving a request from device 102. Additionally or alternatively, the workload may include one or more idle processes caused by the operation of the computing system.
[0141] Method 500 may also include step 504. Step 504 may include measuring the amount of physical resources used (e.g., consumed) by the execution of the workload over a period of time (e.g., 1 second, 10 seconds, 1 minute, 1 hour, 1 day, 1 week, 1 month, 1 year, and / or any other suitable time period). The physical amount of resources (as opposed to, for example, virtual resources) may be measured to prevent or otherwise mitigate inaccurate readings used by inflation techniques that may be employed by a hypervisor that measures virtual resource usage. Further, by directly measuring physical resources, the method may be implemented on a variety of forms of hardware, including hardware that is not running virtual machines. Thus, the method may be implemented in systems that utilize packaged software (e.g., containers).
[0142] Method 500 may include step 506. Step 506 may include normalizing the measurements of the physical resources used. Normalizing the measurements may include converting each of the different resources (e.g., CPU resources, memory resources, storage resources, network interface resources, GPU resources, and / or any other computing resources) into a common unit (e.g., as described with respect to FIG. 3 and Figure 4 described).
[0143] Method 500 may include step 508. Step 508 may include summing the normalized measurements. Method 500 may also include step 510. Step 510 may include generating a single value representing the summed normalized resources used. For example, the single value generated may be the summed result. In other cases, the generated value may represent an average of the normalized resources summed over a time window (e.g., a weekly average, where each summed normalized value corresponds to each day of the week).
[0144] Figure 6 An example flow chart of a method 600 for quantizing the maximum or minimum values of different computing resources into a single measurement unit is shown. Figure 1 The method may be implemented as one or more instructions in one or more non-transitory computer-readable media (eg, storage 206), which are configured to be executed by one or more processors (eg, CPU 202).
[0145] The method may include step 602. Step 602 may include measuring a maximum amount of physical resources available over a period of time and / or measuring a minimum amount of physical resources used to run an idle process (eg, idle process 113) over a period of time.
[0146] The method may include step 604. Step 604 may include normalizing the different physical resources available Normalizing the measurements may include normalizing the values of different resources. Each of the resources (e.g., CPU resources, memory resources, storage resources, network interface resources, GPU resources, and / or any other computing resources) is converted into a generic unit (e.g., as described in relation to Figure 3A -C and Figure 4 described).
[0147] The method may also include step 606. Step 606 may include summing the normalized measurements of the available physical resources. The method may include step 608. Step 608 may include generating a single value representing the summed available normalized resources. For example, the generated single value may be the summed result. As another example, the generated single value may be an adjusted value based on the summed result.
[0148] In some cases, the maximum and / or minimum amount of physical computing resources available over a period of time may be calculated based at least in part on specifications corresponding to individual physical computing resources. This may allow a user to estimate the maximum and / or minimum amount of physical computing resources available without having to access the physical computing resources. In some cases, in method 600, the calculated values may be compared to the measured values. For example, the calculated values may be compared to the measured values to adjust the specifications corresponding to the individual computing resources and / or computing methods so that the estimate of the maximum and / or minimum amount of physical computing resources available may be improved.
[0149] According to one aspect of the present disclosure, a computing network is provided. The computing network may include physical computing resources configured to execute at least one workload. The computing network may also include a meter configured to measure the amount of physical computing resources used over a period of time. The meter may generate a single usage value representing the amount of physical resources used over the period of time.
[0150] According to another aspect of the present disclosure, at least one computer-readable storage medium is provided, on which instructions are stored, and when executed by one or more processors, the instructions cause the one or more processors to perform one or more operations. The one or more operations may include measuring the amount of one or more physical computing resources used over a period of time. The one or more operations may also include normalizing each measured amount of each physical computing resource being used. The one or more operations may also include summing the normalized measured amounts of the physical computing resources being used. The one or more operations may also include generating a single usage value representing the physical computing resources used during the period based on the summed normalized physical computing resources.
[0151] According to another aspect of the present disclosure, a method is provided. The method may include measuring the amount of one or more physical computing resources being used over a period of time. The method may also include normalizing each measured amount of each physical computing resource being used. The method may also include summing the normalized measured amounts of the physical computing resources being used. The method may also include generating a single usage value representing the physical computing resources being used during the time period based on the summed normalized physical computing resources.
[0152] According to another aspect of the present disclosure, a computing network is provided. The computing network may include a computing system configured to be communicatively coupled to a device. The computing system may be configured to execute at least one workload. The computing system may include physical computing resources configured to execute at least one workload. The computing system may also include a meter configured to measure the amount of physical computing resources used over a period of time. The meter may generate a single usage value representing the amount of physical resources used over the period of time.
[0153] According to another aspect of the present disclosure, a system for metering different computer resources is provided. A meter may include at least one collector. The collector may include at least one metric receiver configured to receive one or more metrics from at least one computing system over a period of time, wherein the metric corresponds to physical resource usage. The meter may also include at least one analysis platform configured to normalize each of the received metrics and sum the normalized metrics to generate a single usage value representing the physical resource usage over the period of time.
[0154] According to another aspect of the present disclosure, a computing network is provided. The computing network may include a computing system and a meter, the computing system having a plurality of physical computing resources configured to execute one or more workloads, the meter being communicatively coupled to the computing system. The meter may be configured to measure the amount of physical computing resources used over a period of time. The meter may include at least one collector, the collector including at least one metric receiver, the metric receiver configured to receive one or more metrics from the computing system, wherein the metric corresponds to the amount of physical resources used. The meter may also include at least one analysis platform, the at least one analysis platform communicating with the collector and configured to normalize each of the received metrics and sum the normalized metrics to generate a single usage value representing the physical resource usage over the time period.
[0155] According to another aspect of the present disclosure, a computing network is provided. The computing network may include a computing system configured to be communicatively coupled to a device. The computing system may be configured to execute at least one workload. The computing system may include physical computing resources configured to execute the at least one workload. The computing system may be configured to communicate with a meter. The meter may be configured to measure the amount of physical computing resources being used, wherein the meter is further configured to generate a single usage value representing the amount of physical resources being used.
[0156] According to another aspect of the present disclosure, a computing network is provided. The computing network may include a computing system having a plurality of physical computing resources configured to execute one or more workloads. The computing network may also include at least one metric collector having at least one metric receiver, the metric receiver configured to receive one or more metrics from the computing system, wherein the one or more metrics correspond to the use of the physical computing resources. The computing network may also include at least one backup collector having a backup receiver, the backup receiver configured to receive one or more metrics from the computing system. The computing network may also include at least one analysis platform in communication with at least one of the metric collector or the backup collector, wherein the analysis platform may be configured to normalize each of the received metrics and sum the normalized metrics to generate a single usage value.
[0157] According to another aspect of the present disclosure, a system for metering different computer resources is provided. The system may include at least one collector, the at least one collector including at least one metric receiver and an account manager. The metric receiver may be configured to receive one or more metrics from at least one computing system, wherein the metric corresponds to physical resource usage. The account manager may be configured to manage multiple accounts. Each of the multiple accounts may be associated with at least one resource consuming user, wherein the physical resource usage of each resource consuming user is associated with the corresponding account. The system may also include a usage analyzer configured to generate a benchmark for one or more accounts representing a per-unit cost of the physical resource usage.
[0158] According to another aspect of the present disclosure, a computing network is provided. The computing network may include a computing system configured to be communicatively coupled to a device. The computing system may also be configured to execute at least one workload. The computing system may include physical computing resources configured to execute at least one workload. The computing network may also include a meter configured to measure the amount of physical computing resources used over a period of time and generate a single usage value representing the amount of physical resources used over the period of time. The meter may further be configured to selectively disable access of the device to at least a portion of the computing system.
[0159] According to another aspect of the present disclosure, a method is provided. The method may include measuring the amount of multiple physical computing resources being used over a period of time. The method may also include normalizing each measured amount of each physical computing resource being used. The method may also include summing the normalized measured amounts of the physical computing resources being used to generate a single usage value representing the physical computing resources being used over the period of time.
[0160] In some cases, the plurality of physical computing resources may include a plurality of different physical computing resources. In some cases, the plurality of physical computing resources may include one or more of a graphics processing system, a field programmable gate array, an application specific integrated circuit, a system on a chip, a digital signal processor, a microcontroller, or an adaptive computing acceleration platform. In some cases, the plurality of physical computing resources may include a graphics processing system, and the graphics processing system may include a graphics processor and a graphics memory. In some cases, the method may further include measuring a maximum amount of the plurality of physical computing resources available during the time period, normalizing each measured maximum amount of each available physical computing resource, and summing the normalized measured maximum amounts of the available physical computing resources to generate a single available resource value representing the maximum amount of the physical computing resources available during the time period.
[0161] According to another aspect of the present disclosure, a computing network is provided. The computing network may include one or more computing systems having multiple physical computing resources configured to execute one or more workloads. The computing network may also include one or more metric collectors, each metric collector having at least one metric receiver configured to receive multiple metrics from one or more computing systems. The multiple metrics may correspond to the use of physical computing resources. The computing network may also include one or more analysis platforms configured to normalize each of the received metrics.
[0162] In some cases, one or more analysis platforms may be further configured to sum the normalized metrics to generate a single usage value. In some cases, at least a portion of the physical computing resource usage may be associated with one or more accounts. In some cases, one or more accounts may include multiple accounts, at least one account may be associated with a portion of the physical computing resource usage, and at least one other account may be associated with a different portion of the physical computing resource usage. In some cases, at least one of the metric collectors may also include a plug-in database having one or more plug-ins, wherein the one or more plug-ins may be configured to enable at least one of the metric collectors to communicate with one or more computing systems. In some cases, the analysis platform may be configured to generate a notification based at least in part on a comparison of the physical computing resource usage with a threshold. In some cases, the one or more analysis platforms may include multiple analysis platforms, and at least one of the analysis platforms may be a backup analysis platform. In some cases, one or more analysis platforms may be configured to activate or deactivate at least one of the metric collectors at a predetermined time. In some cases, at least one of the metric collectors may include at least one of the one or more analysis platforms. In some cases, the one or more metric collectors may include multiple metric collectors, at least one of which may be a backup metric collector. In some cases, the analysis platform may be further configured to determine one or more of peak usage (e.g., maximum usage), trough usage (e.g., minimum usage), or average usage corresponding to each physical computing resource over a period of time based at least in part on the received metrics.
[0163] According to another aspect of the present disclosure, at least one computer-readable storage medium having one or more instructions stored thereon is provided, which, when executed by one or more processors, causes one or more operations to be performed. The operations may include measuring the amount of multiple physical computing resources used over a period of time. The operations may also include normalizing each measured amount of each physical computing resource being used. The operations may also include summing the normalized measured amounts of the physical computing resources being used to generate a single usage value representing the physical computing resources being used over the period of time.
[0164] In some cases, the plurality of physical computing resources may include a plurality of different physical computing resources. In some cases, the plurality of physical computing resources may include one or more of a graphics processing system, a field programmable gate array, an application specific integrated circuit, a system on a chip, a digital signal processor, a microcontroller, or an adaptive computing acceleration platform. In some cases, the plurality of physical computing resources may include a graphics processing system, and the graphics processing system may include a graphics processor and a graphics memory. In some cases, the operation may further include measuring the maximum amount of a plurality of physical computing resources available within a period of time, normalizing the maximum amount of each measurement of each available physical computing resource, and summing the maximum amount of the normalized measurements of the available physical computing resources to generate a single available resource value representing the maximum amount of the physical computing resources available within a period of time. In some cases, the operation may also include accessing a plug-in database, wherein the plug-in database may include one or more plug-ins configured to enable measurement of a plurality of physical computing resources. In some cases, the operation may also include determining one or more of the peak usage (e.g., maximum usage), the valley usage (e.g., minimum usage), or the average usage corresponding to each physical computing resource within the period of time.
[0165] In yet another aspect of the present disclosure, a method is provided. The method may include measuring an amount of graphics processing system resources being used over a period of time, wherein the graphics processing system resources may include a graphics processor and graphics memory. The method may also include normalizing the measured amounts corresponding to the graphics processor and graphics memory. The method may also include summing the normalized measured amounts to generate a single usage value representing the graphics processing system resources being used over the period of time.
[0166] Although several embodiments of the present disclosure have been described and illustrated herein, a person of ordinary skill in the art will readily recognize various other devices and / or structures for performing the functions described herein and / or obtaining the results and / or one or more advantages, and such changes and / or modifications are considered to be within the scope of the present disclosure. More generally, a person skilled in the art will readily appreciate that all parameters, dimensions, materials, and configurations described herein are intended to be exemplary, and that actual parameters, dimensions, materials, and / or configurations will depend on one or more specific applications in which the teachings of the present disclosure are used.
[0167] Those skilled in the art will recognize or be able to determine many equivalents to the specific embodiments of the disclosure described herein using no more than routine experimentation. Therefore, it should be understood that the foregoing embodiments are presented by way of example only, and within the scope of the appended claims and their equivalents, the disclosure may be practiced in a manner other than that specifically described and required. The present disclosure is directed to each individual feature, system, article, material, kit, and / or method described herein. In addition, if such features, systems, articles, materials, kits, and / or methods are not mutually inconsistent, any combination of two or more such features, systems, articles, materials, kits, and / or methods is included within the scope of the present disclosure.
[0168] Unless expressly indicated to the contrary, the indefinite articles "a" and "an" as used herein in the specification and claims should be understood to mean "at least one."
[0169] As used herein, the terms "couple" and "coupled" encompass both direct and indirect couplings, unless explicitly stated to the contrary.
[0170] As used herein in the specification and claims, the phrase "and / or" should be understood to mean "either or both" of the elements so conjoined, i.e., elements that are present in conjunction in some cases and separate in other cases. Unless explicitly indicated to the contrary, other elements may optionally be present in addition to the elements specifically identified by the "and / or" clause, whether related or unrelated to those elements specifically identified.
Claims
1. A method comprising: executing one or more workloads for a plurality of graphics processing system GPSs; receiving, for each GPS of the plurality of GPSs, first graphics attributes and second graphics attributes of graphics resources associated with each respective GPS, the first graphics attributes and second graphics attributes each comprising one or more of a default graphics processor clock speed, a variable graphics processor clock speed, a graphics processor load, a graphics memory default clock speed, a variable graphics memory clock speed, a graphics memory load, available graphics memory, used graphics memory, a shader, or a graphics memory bus; for each of the respective GPS, receiving a computational portion associated with the graphics resource; for each of said respective GPSs, receiving an allocation associated with said graphics resource; The individual usage values of the plurality of GPSs are determined by the following steps: Determine the normalized usage of each corresponding graphics resource by following these steps: calculating a utilization rate based on dividing the value associated with the first graphical attribute by 100 to calculate a quotient, and multiplying the quotient by the value associated with the second graphical attribute; generating a conversion unit based on dividing the allocation by a corresponding calculated portion; Normalize the utilization rate by dividing it by the conversion unit to produce normalized usage; as well as A single usage value for the plurality of GPSs is generated by summing the normalized usage of each of the graphics resources.
2. The method according to claim 1, wherein: Each of the graphics resources includes one or more of a graphics memory resource or a graphics processor resource.
3. The method according to claim 1, wherein: The computing portion includes one or more of a graphics processor computing portion and a graphics memory computing portion; The allocation includes one or more of a graphics processor allocation and a graphics memory allocation.
4. The method according to claim 1, wherein: Execution of one or more workloads for the plurality of GPSs provides for at least one graphical attribute associated with each respective GPS.
5. A method comprising: executing one or more workloads for a plurality of graphics processing system GPSs; receiving, from each respective GPS of a plurality of GPSs: (i) a first graphics processor attribute and a second graphics processor attribute associated with a graphics processor resource, and (ii) a graphics memory attribute associated with a graphics memory resource, wherein each GPS is associated with a graphics resource comprising a graphics processor resource and a graphics memory resource; For each GPS, receiving a computation portion, the computation portion comprising (i) a computation portion associated with a graphics processor resource, and (ii) a computation portion associated with a graphics memory resource; receiving, for each GPS, an allocation, the allocation comprising (i) an allocation associated with a graphics processor resource and (ii) an allocation associated with a graphics memory resource; Determine the individual usage values for multiple GPSs by following these steps: For each corresponding GPS, determine the normalization used by: calculating the utilization based on dividing the value associated with the first graphics processor attribute by 100 to calculate a quotient, and multiplying the quotient by the value associated with the second graphics processor attribute; generating a conversion unit based on dividing the allocation by a computational portion of the specific graphics resource; Normalizing the utilization rate by dividing the utilization rate by the conversion unit to generate a normalized usage; and Generate a single usage value for multiple GPSs by summing the normalized usage, Wherein, for each GPS, the maximum sum of (i) the portion of computation associated with the graphics processor resources and (ii) the portion of computation associated with the graphics memory resources is equal to one.
6. The method according to claim 5, further comprising: receiving a respective graphics memory velocity attribute for each of said GPS; for each of said respective GPS, receiving a calculated portion associated with said graphics memory velocity attribute; for each of said respective GPS, receiving an allocation associated with said graphics memory speed attribute; For each of the corresponding GPS, determining the normalized usage of the graphics memory velocity attribute of the corresponding GPS by: calculating a graphics memory speed utilization based on the graphics memory speed attribute; generating a graphics memory speed conversion unit based on a calculation portion associated with the graphics memory speed attribute and an allocation associated with the graphics memory speed attribute of the corresponding GPS; normalizing the graphics memory speed utilization by dividing the graphics memory speed utilization by a graphics memory speed conversion unit to generate a normalized graphics memory speed usage; as well as The single usage value is updated by summing the normalized usage and the normalized graphics memory speed usage to provide an updated single usage value.
7. The method according to claim 6, wherein: The graphics memory speed attributes include one or more of a graphics memory default clock speed, a variable graphics memory clock speed, and a graphics memory load.
8. The method according to claim 5, wherein: The graphics processor attributes include one or more of a default graphics processor clock speed, a variable graphics processor clock speed, and a graphics processor load; and The graphics memory attribute includes one or more of available graphics memory and used graphics memory.
9. The method according to claim 5, wherein: Each allocation is an amount of the graphics processor resource or the graphics memory resource accessible to a user.
10. The method according to claim 5, characterized in that Each corresponding computation part is dynamically weighted to adjust according to the workload changes.
11. A system comprising: At least one computer-readable storage medium having one or more instructions stored thereon, which when executed by one or more processors cause one or more operations to be performed, the operations being configured to: executing one or more workloads for a plurality of graphics processing system GPSs; receiving, from each respective GPS of a plurality of GPSs each associated with the graphics resource, graphics attributes including first graphics processor attributes and second graphics processor attributes and graphics memory attributes; receiving, for each respective GPS, (i) one or more computational portions, each of the one or more computational portions being a dynamic weight adjusted according to a change in workload, and (ii) one or more allocations; A single usage value for multiple GPSs is determined by: Determine the normalized usage of each corresponding graphics resource by following these steps: calculating the utilization based on dividing the value associated with the first graphics processor attribute by 100 to calculate a quotient, and multiplying the quotient by the value associated with the second graphics processor attribute; generating a conversion unit based on dividing the one or more allocations by the one or more calculation portions; generating a normalized usage by dividing the utilization rate by the converted unit; and Generates a single usage value by summing the normalized usage of each corresponding graphics resource.
12. The system according to claim 11, wherein: A maximum sum of the one or more calculation parts is equal to 1.
13. The system according to claim 11, wherein: The first and second graphics processor attributes include one or more of: a default graphics processor clock speed, a variable graphics processor clock speed, and a graphics processor load; The graphics memory attribute includes one or more of available graphics memory and used graphics memory.
14. The system according to claim 11, wherein: Each allocation of the one or more allocations is a quantity of each respective GPS resource accessible to a user.
15. A method comprising: Execute the workload of the graphics processing system GPS; receiving, from a GPS associated with the graphics processor resource and the graphics memory resource, (i) a first graphics processor attribute and a second graphics processor attribute associated with the graphics processor resource, and (ii) a graphics memory attribute associated with the graphics memory resource; receiving from the GPS (i) a portion of computations associated with a graphics processor resource of the GPS and (ii) a portion of computations associated with a graphics memory resource of the GPS; receiving from the GPS (i) an allocation associated with a graphics processor resource of the GPS and (ii) an allocation associated with a graphics memory resource of the GPS; The individual usage values of the GPS are determined by: The normalized usage of the GPS graphics processor resources is determined by: calculating a utilization of the graphics processor resource based on dividing a value associated with the first graphics processor attribute by 100 to calculate a quotient and multiplying the quotient by a value associated with a second graphics processor attribute; generating a conversion unit for a graphics processor resource based on the computational portion and the allocation of the graphics processor resource; as well as normalizing utilization of a graphics processor resource by dividing the utilization by the conversion unit to generate a normalized graphics processor resource usage; Normalized usage of GPS graphics memory resources is determined by: calculating a utilization of the graphics memory resource based on dividing a value associated with a first graphics processor attribute by 100 to calculate a quotient and multiplying the quotient by a value associated with a second graphics processor attribute; generating a conversion unit of the graphics memory resource based on dividing the allocation by the calculated portion of the graphics memory resource; as well as normalizing utilization of the graphics memory resource by dividing the utilization by the translation unit to generate a normalized graphics memory resource usage; as well as Generate a single usage value for GPS by summing the normalized graphics processor resource usage and the normalized graphics memory resource usage, Wherein, a maximum sum of a calculation portion associated with a graphics processor resource of the GPS and a calculation portion associated with a graphics memory resource of the GPS is 1.
16. The method according to claim 15, characterized in that The one or more graphics attributes include one or more of: a default graphics processor clock speed, a variable graphics processor clock speed, a graphics processor load, available graphics memory, used graphics memory, shaders, or a graphics memory bus.
17. The method according to claim 15, wherein: Each allocation is an amount of graphics processor resources or graphics memory resources accessible to a user.
18. The method according to claim 15, further comprising: receiving a graphics memory velocity attribute from said GPS; receiving a calculation portion associated with a graphics memory velocity attribute from the GPS; receiving an assignment associated with a memory speed attribute from the GPS; The normalized usage of the graphics memory speed attribute is determined by the following steps: calculating a graphics memory speed utilization rate based on the graphics memory speed attribute; generating a graphics memory speed conversion unit based on the calculation portion and the allocation associated with the graphics memory speed attribute; normalizing the graphics memory speed utilization by dividing the graphics memory speed utilization by a graphics memory speed conversion unit to generate a normalized graphics memory speed usage; as well as The single usage value for GPS is updated by adding the single usage value for GPS to the normalized graphics memory speed usage to provide an updated single usage value.
19. A system comprising: At least one computer-readable storage medium having one or more instructions stored thereon, which when executed by one or more processors cause one or more operations to be performed, the operations being configured to: Execute the workload of the graphics processing system GPS; receiving, from a GPS associated with a graphics resource comprising (i) a graphics processor resource and (ii) a graphics memory resource: (i) graphics processor attributes associated with the graphics processor resource and comprising first and second graphics processor attributes, and (ii) graphics memory attributes associated with the graphics memory resource; receiving from the GPS (i) a portion of computations associated with a graphics processor resource of the GPS and (ii) a portion of computations associated with a graphics memory resource of the GPS; receiving from the GPS (i) an allocation associated with a graphics processor resource and (ii) an allocation associated with a graphics memory resource; The individual usage values for GPS are determined by: Determine the normalized usage of each graphics resource by following these steps: calculating the utilization based on dividing the value associated with the first graphics processor attribute by 100 to calculate a quotient, and multiplying the quotient by the value associated with the second graphics processor attribute; generating a conversion unit based on dividing the allocation by the corresponding calculated portion; as well as normalizing the utilization of the corresponding graphics resource by dividing the utilization by the transform unit to generate a normalized usage; as well as A single usage value for GPS is generated by summing the normalized usage, Wherein, a maximum sum of a calculation associated with a graphics processor resource of the GPS and a calculation associated with a graphics memory resource of the GPS is 1.
