Application of Fuzzy Logic for Problems of Evaluating States of a Computing System

: The monitoring utilization and workloads of computer hardware components, such as CPU, RAM, bus, and storage, are an ideal way to evaluate the e ﬀ ectiveness of these components. In this paper, we surveyed the basic concepts, characteristics, and parameters of computer systems that determine system performance, and the types of models that provide adequate modeling of these systems. We investigated and developed the applied aspects of the theory of fuzzy sets’ principles and the Matlab environment tools for monitoring and evaluating the state of computing systems. The idea of the paper is to identify the state of the computer infrastructure by using the models of Mamdani and Sugeno FIS (fuzzy inference system) to evaluate the impact of RAM and storage on CPU performance. With this approach, we observed the behavior of computer infrastructure. The results are useful for understanding performance issues with regard to speciﬁc bottlenecks and determining the correlation of performance counters. Moreover, the model presents linguistic results. Hereafter, performance counter correlations will support the development of algorithms that can detect whether the performance of a given computer will be a ﬀ ected by a reasonable priority. The performance assertions derived from these approaches allow resource management policies to prevent performance degradation, and as a result, the infrastructure will be able to serve safely as expected. These methods can be applied across the entire spectrum of computer systems, from personal computers to large mainframes and supercomputers, including both centralized and distributed systems. We look forward to their continued use, as well as their improvement when it is necessary to evaluate future systems.


Introduction
Computer performance depends on how well the hardware components work together and interact as a whole system.Continuously updating one part of the computer while preserving obsolete components will not lead to a significant increase in computer performance, if at all.Hereinafter, we survey some of the most important hardware components of a computing system regarding its efficiency and computing power.The description of these parts does not mean complete definition and serves only to give new users some idea of what the diver characteristics of computer performance mean.The central processing unit (CPU), the RAM, the bus, and the storage are the most important components in determining performance inside a computer.The degree of compliance of the system with its purpose is called the efficiency (quality) of the system.For complex systems like computing is attempting to define how well a particular system corresponds or can satisfy certain processing requirements for data or planned resources.There are several available assessment methods, the bulk of which are appropriate to some of the objectives, for instance, synthetic programs and benchmarks are considered the best evaluation methods.However, these evaluation techniques are not based on an analysis of real data taken from the existing real systems.All fuzzy based CPU utilization predictive models are based on tendency and previous workload states [7] or consider historical data of CPU (cores, response time), memory (reading, writing, swapping time, queue), bus (I/O throughput, latency), etc., that are too long.Moreover, each object has a variety of pointers (time, workload, frequency, and percent) that complicates the evaluation task.However, all of the above methods are complicated despite a good result.Many of them require data that are difficult to obtain for each user and require special programming skills, such as machine learning algorithms, reference datasets for evaluating performance and in-depth knowledge of computer architecture.Moreover, the results of evaluating the performance or resource utilization presented by the approaches discussed above are not fully understandable to the user.Based on the explanations above, it is necessary to simplify and convert all data types to unequal metrics, i.e., linguistic variables using fuzzy set theory.This paper aims to build an evaluation model for any type of computer systems from personal computers to large mainframes and supercomputers that can be used by non-professional users who have no analytical knowledge about hardware components.The proposed model should evaluate the state of the computer system, CPU utilization, determine the incompatibility and bottleneck of hardware components and predict the CPU utilization in given condition cases.

Related Work
The related work in this field has been done by different simulations, environment and performance tools.In various studies, analysts have considered the following factors while evaluating the computer performance: waiting time, load balancing, number of requests, the throughput and rate of transactions.These computer performance factors were evaluated by many approaches.We classified them as fuzzy set theory based and machine learning (prediction) based approaches.

Fuzzy Set Theory Based Approaches
Butt et al. [8] have developed a fuzzy decision-making system to improve the CPU scheduling algorithm in a multitasking operating system.They used a new formula to calculate the recent CPU utilization by each process.In addition, the algorithm maintains time intervals and recalculates the dynamic priority of the processes upon the arrival of the high-priority process and after the allotted time of the process.They have developed the simulator so that it takes the packet time, the finished value and the arrival time of each finished process as input.Then, the simulator calculates the recent CPU utilization of each process using the formula.A FIS generates a fuzzy dynamic priority (dpi) for each process.In accordance with the dpi of each process in descending order, the process at the head of the queue is selected to run on the processor.The proposed performance evaluation method by Jung et al. [9] measures the online computer systems using the modeling occurrences of failed computer hardware units based on fuzzy set theory.In this method, it is mandatory to use subjective possibilities and probabilities when there is not enough information about some parameters of a model.Information can be obtained subjectively from experts or very little data.They present the fuzzification model and performance evaluation of online computing systems with failure based on fuzzy set theory [9].Suzer et al. [10] proposed and developed a fuzzy controller for utilization management.Their developed fuzzy controller can easily adapt its control actions, i.e., rules that consider the real-time system behavior.This means the controller could manage the system workload.
A self-adaptive algorithm for predicting the cloud resources using a fuzzy neural network has been proposed by Chen et al. [11].They used the combined algorithms of Fuzzy C-means and the subtractive fuzzy clustering algorithm to optimize the characteristics of convergence and learning speed.Their fuzzy neural network learning algorithm is optimized using a self-adjusting learning rate and impulse weight, which improves reliability and performance in real time.Beghdad et al. [7] proposed an approach aiming to develop a model one step before CPU utilization prediction based on the clusterized selection of instances in the past steps.Proposed adaptive network-based fuzzy inference (ANFIS) predicts using the Naive Bayesian Network controller.They used the C-means clustering method, which estimates the next step direction in the time series.The second proposed approach by Beghdad et al. [12] shows the future of CPU usage prediction based on a mixture of ANFIS models to compute short-term accuracy and mid-term reliable prediction.Sh.Javad [13] presented an attempt to apply neuro-fuzzy in the development and realization of a rule-based planning algorithm to eliminate the disadvantage of known planning algorithms.The decision maker on the basis of fuzzy data was asked to calculate the new priority of all CPU processes in accordance with the priority of the process and the time of its execution.

Machine Leaning Based Approaches
Mason et al. [14] proposed an evolutionary neural network to predict host CPU utilization using several different recurrent neural networks.The authors used a dataset that used PlanetLab files and three optimization algorithms to optimize weights for RNN, namely: optimization of a particle swarm (PSO), differential evolution (DE) and evolutionary adaptation strategy of the covariance matrix (CMA-ES).Duggan et al. [15] used a machine learning based approach for forecasting CPU utilization.They utilized a recurrent neural network trained using the algorithm known as backpropagation over time to predict host CPU utilization in the Google Cluster trace dataset.Kumar et al. [16] developed a novel model for forecasting the workload of cloud data centers using LSTM networks.They tested the model using three benchmark datasets of HTTP traces of the NASA server, Saskatchewan server, and Calgary server.The proposed model achieved significant results.Their proposed model can perform a 60-min prediction of the workload of big datacenters.
Two methods for predicting the resource consumption were presented by Tan et al. [17].The first method predicts the resource usage for a specific node and uses both CPU and memory usage for its performance predictions.The second method focuses on a large number of nodes and the workload running on them, which is likely caused by a smaller number of jobs.Tan et al. [17] proposed an approach based on PCA to predict processor and memory utilization in the commercial data center.
Datrois et al. [18] proposed a method that uses machine learning algorithms that predict the 24-h availability of resources at the host level.Their predicting method is based on the employment of quantile regression to ensure an elastic composition between the potential amount of resources to reclaim and to define unused resources.Hardware components like the central processor, memory, storage, and network metrics have been predicted to ensure exhaustive availability is guaranteed.Sekma et al. [19] have developed basic guidelines for developing an appropriate system for predicting the availability of CPUs for such computing infrastructures.They proposed a process for constructing a predictor that automatically checks the assumptions of vector autoregressive models in a time series.The authors performed three different past analyses, that is, the last hours, the same hours of the previous days, and the same weekly hours of the previous weeks.The suggested prediction model uses a multi-state prediction method to select a corresponding predictor.

Proposed Method
This paper aims to apply fuzzy logic theory to evaluate the CPU utilization by including the impact of RAM and storage utilizations to the CPU performance, while simultaneously running multiple applications processing.We used the system monitor (perfmon.exe) of the operating system to collect the performance data of hardware components, which are the processor time, swapping(pages), and disk time characteristics, accordingly CPU, RAM, and storage utilization information.During the monitoring, we built a dataset of RAM, storage and CPU utilizations from the test-bed computer.The view of the dataset is shown in Table 1.A fuzzy expert system that uses human knowledge and their experience in this field to create linguistic descriptors for variables and to create fuzzy sets that allow the behavior of the studied phenomena to be controlled, or even as a tool for decision making [20].In this work, we developed two types of FIS model (Sugeno and Mamdani) to evaluate the CPU utilization status by considering the influence of memory and storage utilization on CPU utilization.The difference between the FIS models are knowledge base and output, i.e., the Sugeno FIS uses a database and outputs quantity value of CPU utilization and the Mamdani FIS uses a rule base and performs linguistic value on the utilization state of CPU, like low, normal or high.
The architecture of the proposed fuzzy inference system is shown in Figure 1.The model contains fuzzification, knowledge base, inference engine, and defuzzification modules.The algorithm of the fuzzy inference system is described in Algorithm 1.A fuzzy expert system that uses human knowledge and their experience in this field to create linguistic descriptors for variables and to create fuzzy sets that allow the behavior of the studied phenomena to be controlled, or even as a tool for decision making [20].In this work, we developed two types of FIS model (Sugeno and Mamdani) to evaluate the CPU utilization status by considering the influence of memory and storage utilization on CPU utilization.The difference between the FIS models are knowledge base and output, i.e., the Sugeno FIS uses a database and outputs quantity value of CPU utilization and the Mamdani FIS uses a rule base and performs linguistic value on the utilization state of CPU, like low, normal or high.
The architecture of the proposed fuzzy inference system is shown in Figure 1.The model contains fuzzification, knowledge base, inference engine, and defuzzification modules.The algorithm of the fuzzy inference system is described in Algorithm 1.The fuzzification process is the first step in the fuzzy inference system.The crisp input values of RAM and storage are converted to fuzzy inputs by a fuzzification module, which assigns the degree of membership to fuzzy sets defined for variables.We used the Gaussian membership function for the fuzzy set as shown in Figure 2 and Equation (1).
Construction knowledge base (rule base and database) 4.
Training and evaluation knowledge base 6.
Combining the results of each rule 7.

Defuzzification non-fuzzy output values
The fuzzification process is the first step in the fuzzy inference system.The crisp input values of RAM and storage are converted to fuzzy inputs by a fuzzification module, which assigns the degree of membership to fuzzy sets defined for variables.We used the Gaussian membership function for the fuzzy set as shown in Figure 2 and Equation (1).Equation (1) shows that c represents the center and  determines the width of the membership function.In Figure 2, the described membership function with the "normal" linguistic term defined by the function of Gaussian (x; 50, 25).This means that the center of membership function 50, where the function reaches the maximum value 1. Equation ( 1) uses all input and output variables to make membership functions.
A fuzzy inference engine can draw conclusions or predict the results of a system using a knowledge base.In the proposed FIS, the inference engine is based on a set of IF-THEN rules.As aforementioned, we developed two types of FIS.These are the Mamdani FIS and the Sugeno FIS.Our proposed Mamdani-type FIS is implemented by the following steps: 1. Fuzzification input crisp values 2. Built fuzzy rules 3. Finding outcomes of the rules by combining the rule strength and output 4. Get output distribution by combining the outcomes 5. Defuzzification of the output The inference engine steps of the Sugeno model are almost the same as these steps, but the Sugeno FIS generates rules by a training process.Training occurs using the database, which is illustrated in Table 1.After training, the model builds optimal weights for prediction CPU utilization.
The detailed process of the Mamdani and Sugeno inference engine is illustrated in Figure 3.In Equations ( 2) and (3) we define two rules using two inputs (the full rule base is described in Figure 8).In these equations, RAM and storage are fuzzy values.Two inputs are fuzzified by applying an intersection on the crisp input values using a membership function.We used the "and" operator for combining two fuzzified inputs to obtain the rule strength.The Mamdani and Sugeno inference engine uses a membership function for each rule and then, according to the condition of the rule, reaches a conclusion.Equation (1) shows that c represents the center and σ determines the width of the membership function.In Figure 2, the described membership function with the "normal" linguistic term defined by the function of Gaussian (x; 50, 25).This means that the center of membership function 50, where the function reaches the maximum value 1. Equation ( 1) uses all input and output variables to make membership functions.
A fuzzy inference engine can draw conclusions or predict the results of a system using a knowledge base.In the proposed FIS, the inference engine is based on a set of IF-THEN rules.As aforementioned, we developed two types of FIS.These are the Mamdani FIS and the Sugeno FIS.Our proposed Mamdani-type FIS is implemented by the following steps: 1.
Finding outcomes of the rules by combining the rule strength and output 4.
Get output distribution by combining the outcomes 5.
Defuzzification of the output The inference engine steps of the Sugeno model are almost the same as these steps, but the Sugeno FIS generates rules by a training process.Training occurs using the database, which is illustrated in Table 1.After training, the model builds optimal weights for prediction CPU utilization.
The detailed process of the Mamdani and Sugeno inference engine is illustrated in Figure 3.In Equations ( 2) and (3) we define two rules using two inputs (the full rule base is described in Figure 8).In these equations, RAM and storage are fuzzy values.Two inputs are fuzzified by applying an intersection on the crisp input values using a membership function.We used the "and" operator for combining two fuzzified inputs to obtain the rule strength.The Mamdani and Sugeno inference engine uses a membership function for each rule and then, according to the condition of the rule, reaches a conclusion.
In the last step, the defuzzification module converts the resulting fuzzy output, that is, the Sugeno FIS outputs crisp value and Mamdani FIS outputs linguistic value on CPU utilization.Here the scalar value of the fuzzy system is fuzzified, the rules are applied, the training model is built, and each rule generates fuzzy outputs and converts them to a scalar quantity.We used the centroid defuzzification method for the Mamdani FIS and the weighted average defuzzification method for the Sugeno FIS as shown in Figure 3.In the last step, the defuzzification module converts the resulting fuzzy output, that is, the Sugeno FIS outputs crisp value and Mamdani FIS outputs linguistic value on CPU utilization.Here the scalar value of the fuzzy system is fuzzified, the rules are applied, the training model is built, and each rule generates fuzzy outputs and converts them to a scalar quantity.We used the centroid defuzzification method for the Mamdani FIS and the weighted average defuzzification method for the Sugeno FIS as shown in Figure 3.
The linguistic variables like low, normal and high are the criteria for evaluating the CPU, RAM, and the storage represented in the linguistic descriptors as the value ranges.For example, the variable CPU has a range of values from 0 to 40, which is considered "Low", from 20 to 80 is considered "Normal", and from 60 to 100 is considered "High"."Low", "Normal", and "High" are linguistic descriptors for the value sets for all variables of CPU, RAM, and storage.
As in principles of the fuzzy theory, sets of values overlap, and thus a value may partially belong to the set and have a membership degree of 0 ≤ µ ≤ 1, which can be any point between zero and one, where µ represents the degree of membership [21].Consequently, the value belongs to several sets, and the total membership is added to one.The linguistic descriptors "Low" and "Normal" are two fuzzy sets of CPU variables that can overlap, so a CPU of 20 can be mostly "Low" with µ = 0.7 and somewhat "Normal" with µ = 0.3.
Thus, the fuzzy system converts the crisp input values into fuzzy inputs through a fuzzification block, which sets the degree of belonging to fuzzy sets for previously defined variables.The fuzzy system then uses a rule base developed by a human expert to predict a fuzzy inference of the phenomenon under investigation, as a result of which the fuzzy system has a defuzzification block that converts the fuzzy output to a crisp value.In this work, we built a fuzzy inference system with two crisp input variables and one output as shown in Figure 6.The linguistic variables like low, normal and high are the criteria for evaluating the CPU, RAM, and the storage represented in the linguistic descriptors as the value ranges.For example, the variable CPU has a range of values from 0 to 40, which is considered "Low", from 20 to 80 is considered "Normal", and from 60 to 100 is considered "High"."Low", "Normal", and "High" are linguistic descriptors for the value sets for all variables of CPU, RAM, and storage.
As in principles of the fuzzy theory, sets of values overlap, and thus a value may partially belong to the set and have a membership degree of 0 ≤ µ ≤ 1, which can be any point between zero and one, where µ represents the degree of membership [21].Consequently, the value belongs to several sets, and the total membership is added to one.The linguistic descriptors "Low" and "Normal" are two fuzzy sets of CPU variables that can overlap, so a CPU of 20 can be mostly "Low" with µ = 0.7 and somewhat "Normal" with µ = 0.3.
Thus, the fuzzy system converts the crisp input values into fuzzy inputs through a fuzzification block, which sets the degree of belonging to fuzzy sets for previously defined variables.The fuzzy system then uses a rule base developed by a human expert to predict a fuzzy inference of the phenomenon under investigation, as a result of which the fuzzy system has a defuzzification block that converts the fuzzy output to a crisp value.In this work, we built a fuzzy inference system with two crisp input variables and one output as shown in Figure 6.

Performance Monitor
The performance monitor package provides real-time system performance utilities.This program receives performance data from computer components.The performance monitor window allows us to view, in real-time, detailed information about the hardware components (CPU, disk, networks, and memory) and system resources (including descriptors and modules) used by the operating system, services and running applications.In addition, we can use the resource monitor to manage processes, start and stop services, analyze process deadlock, view thread wait chains, and determine the files responsible for the blocking processes.When using the performance monitor, the CPU utilization is displayed in different fields.The "% User Time" shows the CPU utilization that occurred during execution at the application level.This field indicates the time taken to start the virtual processors.The "% Idle Time" indicates the percentage of time during which the CPU or CPUs were in idle mode, and the system did not have a failed request for disk I/O.The "% Processor Time" gives the summation of all the others and hence is the absolute CPU utilization as shown in Figure 4.In the "Memory" section, almost the same information is displayed that can be obtained with the help of the "Task Manager", but it is ordered in relation to the entire system.The histogram of physical memory displays the current organization of this memory, dividing the entire amount of memory into reserved, used, modified, in standby mode and free.Here "Pages/sec" shows memory utilization.To get disk utilization, monitoring the "Average transfer rate/sec", "Disk Queue Length", and "Disk Time (%)" pointers are more efficient pointers.
The performance monitor package provides real-time system performance utilities.This program receives performance data from computer components.The performance monitor window allows us to view, in real-time, detailed information about the hardware components (CPU, disk, networks, and memory) and system resources (including descriptors and modules) used by the operating system, services and running applications.In addition, we can use the resource monitor to manage processes, start and stop services, analyze process deadlock, view thread wait chains, and determine the files responsible for the blocking processes.When using the performance monitor, the CPU utilization is displayed in different fields.The "% User Time" shows the CPU utilization that occurred during execution at the application level.This field indicates the time taken to start the virtual processors.The "% Idle Time" indicates the percentage of time during which the CPU or CPUs were in idle mode, and the system did not have a failed request for disk I/O.The "% Processor Time" gives the summation of all the others and hence is the absolute CPU utilization as shown in Figure 4.In the "Memory" section, almost the same information is displayed that can be obtained with the help of the "Task Manager", but it is ordered in relation to the entire system.The histogram of physical memory displays the current organization of this memory, dividing the entire amount of memory into reserved, used, modified, in standby mode and free.Here "Pages/sec" shows memory utilization.To get disk utilization, monitoring the "Average transfer rate/sec", "Disk Queue Length", and "Disk Time (%)" pointers are more efficient pointers.

Fuzzy Logic Toolbox of MATLAB Environment
Fuzzy Logic Toolbox (FLT) is a MATLAB toolkit using the fuzzy logic, which provides analyzing, designing, and simulating systems of functions, applications, and a Simulink block.The fuzzy logic model contains the stages of designing fuzzy inference systems.Functions of the Fuzzy Logic Toolbox are provided for many common methods, including fuzzy clustering and adaptive neuro-fuzzy learning.The toolbox allows one to simulate complex system behavior using simple logical rules, and then implement these rules in a fuzzy inference system.
Fuzzy inference is a method that interprets values in the input vector and, based on user rules, assigns values to the output vector.Using editors and viewers in the Fuzzy Logic Toolbox, we can

Fuzzy Logic Toolbox of MATLAB Environment
Fuzzy Logic Toolbox (FLT) is a MATLAB toolkit using the fuzzy logic, which provides analyzing, designing, and simulating systems of functions, applications, and a Simulink block.The fuzzy logic model contains the stages of designing fuzzy inference systems.Functions of the Fuzzy Logic Toolbox are provided for many common methods, including fuzzy clustering and adaptive neuro-fuzzy learning.The toolbox allows one to simulate complex system behavior using simple logical rules, and then implement these rules in a fuzzy inference system.
Fuzzy inference is a method that interprets values in the input vector and, based on user rules, assigns values to the output vector.Using editors and viewers in the Fuzzy Logic Toolbox, we can create a set of rules, determine membership function and analyze the behavior of the fuzzy inference system (FIS).We used all of the following editors and viewers to design our FIS models:

•
FIS Editor-we used to create and select the type of fuzzy output system.

•
Membership Editor-we edited the membership functions associated with FIS input and output variables.

•
Rule Editor-Using this editor, we developed and edited the Mamdani FIS fuzzy rules.

•
Rule Viewer-Shows detailed FIS behavior to help diagnose the behavior of specific rules or examine the impact of changing input variables.

•
Surface Viewer-This generates a three-dimensional surface from two input variables and the FIS output.

Testbed Details
The Testbed details are shown in Table 2.In our experimental testbed, we ran several applications simultaneously.In order to do performance analysis of CPU utilization, we monitored three hardware components such as processor time of CPU, disc time of storage, and paging of RAM.We considered that the utilization of RAM and storage are effects on CPU utilization.

Experimental Details
The CPU utilization evaluating process includes the following steps: 1.
Fuzzification of input RAM, physical disk values 2.
Determination rules of application and method of inference 3.
Defuzzification CPU utilization values Fuzzification of CPU utilization was performed using input variables and their membership functions of fuzzy sets.Results on the percentage of the utilization of RAM and storage, obtained from the input variables of the expert system based on fuzzy logic.Each input variable has three membership functions, that is, Gaussian membership functions were used in this proposed research paper.The fuzzy sets of input variables are listed in Table 3, and for both inputs (RAM and storage) the membership functions are shown in Figure 5.  RAM and storage are two input variables.The output variable is the CPU utilization value that is defined by fuzzy logic, as shown in Figure 6.FIS accepts crisp input data, fuzzifies them, uses fuzzy on-premise operators (antecedent), implements inferences from the premise for output (sequential), combines the findings from fuzzy rules for creating a fuzzy inference and defuzzifies it to get a crisp conclusion.The proposed model in this paper is evaluated and tested using the Mamdani and Sugeno FIS.RAM and storage are two input variables.The output variable is the CPU utilization value that is defined by fuzzy logic, as shown in Figure 6.FIS accepts crisp input data, fuzzifies them, uses fuzzy on-premise operators (antecedent), implements inferences from the premise for output (sequential), combines the findings from fuzzy rules for creating a fuzzy inference and defuzzifies it to get a crisp conclusion.The proposed model in this paper is evaluated and tested using the Mamdani and Sugeno FIS.RAM and storage are two input variables.The output variable is the CPU utilization value that is defined by fuzzy logic, as shown in Figure 6.FIS accepts crisp input data, fuzzifies them, uses fuzzy on-premise operators (antecedent), implements inferences from the premise for output (sequential), combines the findings from fuzzy rules for creating a fuzzy inference and defuzzifies it to get a crisp conclusion.The proposed model in this paper is evaluated and tested using the Mamdani and Sugeno FIS.After defining inputs, the membership functions are constructed giving them ranges respectively.Membership functions are constructed to use in fuzzification and defuzzification.They map the non-fuzzy inputs to fuzzy values, which are then inferred according to the rule base.Figure 7 depicts the output variable with its member functions plotted on the curves.The three membership functions are mapped for each input data accordingly.After defining inputs, the membership functions are constructed giving them ranges respectively.Membership functions are constructed to use in fuzzification and defuzzification.They map the non-fuzzy inputs to fuzzy values, which are then inferred according to the rule base.Figure 7 depicts the output variable with its member functions plotted on the curves.The three membership functions are mapped for each input data accordingly.The fuzzy rules editor is used to define the rules for the parameters being tested.The rules define the input and output membership functions that will be used in the output process.These rules are linguistic and also have a "IF-THEN" form.Here the two parameters, RAM and storage, are linked The fuzzy rules editor is used to define the rules for the parameters being tested.The rules define the input and output membership functions that will be used in the output process.These rules are linguistic and also have a "IF-THEN" form.Here the two parameters, RAM and storage, are linked through the AND logical operation.These fuzzy set logical operations are used to perform the rules evaluation and then combining the results of the individual rules.Figure 8a shows the work of the inference engine of the Mamdani FIS.The fuzzy rules editor is used to define the rules for the parameters being tested.The rules define the input and output membership functions that will be used in the output process.These rules are linguistic and also have a "IF-THEN" form.Here the two parameters, RAM and storage, are linked through the AND logical operation.These fuzzy set logical operations are used to perform the rules evaluation and then combining the results of the individual rules.Figure 8a shows the work of the inference engine of the Mamdani FIS.We defined nine rules for estimating CPU usage.In case several rules are active for the same output function of membership, it is necessary that only one value of membership is selected.This process is called "fuzzy decision" or "fuzzy inference".Several authors, including Takagi-Sugeno, Mamdami, and Zadeh developed a number of methods for fuzzy decision-making and fuzzy inference.
The Mamdani FIS rules are generated using linguistic variables for both the premise and conclusion.The Mamdani FIS Model has established relationships between variables to evaluate the We defined nine rules for estimating CPU usage.In case several rules are active for the same output function of membership, it is necessary that only one value of membership is selected.This process is called "fuzzy decision" or "fuzzy inference".Several authors, including Takagi-Sugeno, Mamdami, and Zadeh developed a number of methods for fuzzy decision-making and fuzzy inference.
The Mamdani FIS rules are generated using linguistic variables for both the premise and conclusion.The Mamdani FIS Model has established relationships between variables to evaluate the FIS model by highlighting fuzzy rules in terms used by a human expert in the form of IF-THEN [22].The formula used for the centroids defuzzification method in the FIS Mamdani is as follows: The Sugeno FIS accepts a premise as a linguistic variable; however, its final part is a function, which can be zero (constant) or first order.The formula used by the Sugeno FIS for the weighted average defuzzification method is as follows [22]: The weights are determined by the learning process.Training data are received from the system monitor of hardware components, which is illustrated in Table 1.The Anfis Editor window of the Fuzzy Logic Toolbox is designed to train the inference engine of the Sugeno FIS.The learning algorithm uses a hybrid algorithm, which is a combination of the gradient descent method and the least squares method.It is used to identify the parameters of fuzzy inference systems such as Sugeno.The learning process is shown in Figure 8b, training is completed in 1000 epochs and accuracy is equal to 0.211.The achieved accuracy of the training process is quite applicable for our Sugeno FIS.
When the three parameters were given different input values, i.e., low, medium and high, the overall result is a fuzzy value.The output is defuzzified after the output of the used rule base.
The membership function, previously defined, is used to defuzzify the output value.In Figure 9, the Mamdani FIS and Sugeno FIS input parameters are shown with RAM = 75.2and Storage = 96.2.The CPU utilization of value 45.3 was evaluated by the Sugeno FIS.The Mamdani FIS rated CPU utilization of 41.9 in accordance with established rules.The cumulative result is shown by a red line in the graph showing the status "Normal".In the Rule Viewer and the Surface Viewer (Figure 10), the user can see the input changes and affect the output for the Rule Viewer and the Surface Viewer shown in three-dimensional graphics.
Fuzzy Logic Toolbox is designed to train the inference engine of the Sugeno FIS.The learning algorithm uses a hybrid algorithm, which is a combination of the gradient descent method and the least squares method.It is used to identify the parameters of fuzzy inference systems such as Sugeno.The learning process is shown in Figure 8b, training is completed in 1000 epochs and accuracy is equal to 0.211.The achieved accuracy of the training process is quite applicable for our Sugeno FIS.
When the three parameters were given different input values, i.e., low, medium and high, the overall result is a fuzzy value.The output is defuzzified after the output of the used rule base.
The membership function, previously defined, is used to defuzzify the output value.In Figure 9, the Mamdani FIS and Sugeno FIS input parameters are shown with RAM = 75.2and Storage = 96.2.The CPU utilization of value 45.3 was evaluated by the Sugeno FIS.The Mamdani FIS rated CPU utilization of 41.9 in accordance with established rules.The cumulative result is shown by a red line in the graph showing the status "Normal".In the Rule Viewer and the Surface Viewer (Figure 10), the user can see the input changes and affect the output for the Rule Viewer and the Surface Viewer shown in three-dimensional graphics.

Experimental Results
The CPU utilization is the number of processor cycles utilized by the process.In our experiment, we simultaneously launched a process of several applications to evaluate the effect of utilization RAM and storage to CPU utilization.In our paper, we analyzed RAM, storage and CPU, which can be updated, modified or configured by any user when some bottlenecks are detected during the system work.The cache has a huge influence on overall performance but we did not consider cache memory because it is an embedded system, which cannot be updated or modified.This section contains a simulation analysis of the proposed models.To demonstrate the performance of neurofuzzy logic models (Mamdani FIS and Sugeno FIS), they were compared with the actual state of CPU utilization obtained from the performance monitoring program.The performance monitor gives only numerical real-time data about the state of each hardware component.Comparing the results of FIS models and the performance monitor gives the opportunity to evaluate the reliability of the FIS

Experimental Results
The CPU utilization is the number of processor cycles utilized by the process.In our experiment, we simultaneously launched a process of several applications to evaluate the effect of utilization RAM and storage to CPU utilization.In our paper, we analyzed RAM, storage and CPU, which can be updated, modified or configured by any user when some bottlenecks are detected during the system work.The cache has a huge influence on overall performance but we did not consider cache memory because it is an embedded system, which cannot be updated or modified.This section contains a simulation analysis of the proposed models.To demonstrate the performance of neuro-fuzzy logic with CPU utilization, which is monitored through performance monitoring.The comparison shows that there are some unsuited cases with evaluation, but the results are close to each other.At the bottom of the figure, we show the difference between the real data and the Mamdani FIS result.The Sugeno FIS model shows excellent results, i.e., the model evaluation values are almost the same as the monitoring data (Figure 12b).The training of the inference engine was performed, rather than the rule base inference engine.

Discussion and Conclusions
The proposed fuzzy logic model for CPU performance evaluation is based on certain parameters that broadly represent the usual parameters like average workload percentage related to memory and storage.We have made the assumptions that the RAM and storage incorporate all the basic factors involved in computing system infrastructure, i.e., CPU load.The fuzzy logic system was used to define the rules for evaluation.An artificial neural network, some simulated environment or the real data values from the computing system were used to evaluate the performance.This fuzzy logic system is beneficial for those who are only learning about computer performance and how to evaluate hardware utilization.Computational experiments were conducted based on a neuro-fuzzy approach, to assess the impact of loading a physical disk and RAM on the processor state.The components of the input data are defined as term sets of the type low, middle, and high.The obtained results of computational experiments allow us to interpret the characteristics of computing systems in a linguistic form, i.e., in the natural language form, which is close to the judgment of specialists, which will significantly speed up the decision-making process.In this paper, the results are not compared with the result of benchmark experience data because the knowledge base was built in an individual testbed computer, i.e., the concept of our model requires an individual knowledge base.The generated rule base and data base cannot be used in the FIS model for evaluating the CPU utilization.We compared the results only with data that was received from the performance monitor.We did this comparison to show the reliability of the FIS models.Because the performance monitor shows only numerical data about hardware utilizations, the program does not analyze the influence between components.Our FIS models analyze the receiving performance data and then evaluate the CPU utilization.If data coming from the performance monitor and the FIS results are close to each other, then the model is reliable and we can use it to predict the CPU utilization and to define the

Discussion and Conclusions
The proposed fuzzy logic model for CPU performance evaluation is based on certain parameters that broadly represent the usual parameters like average workload percentage related to memory and storage.We have made the assumptions that the RAM and storage incorporate all the basic factors involved in computing system infrastructure, i.e., CPU load.The fuzzy logic system was used to define the rules for evaluation.An artificial neural network, some simulated environment or the real data values from the computing system were used to evaluate the performance.This fuzzy logic system is beneficial for those who are only learning about computer performance and how to evaluate hardware utilization.Computational experiments were conducted based on a neuro-fuzzy approach, to assess the impact of loading a physical disk and RAM on the processor state.The components of the input data are defined as term sets of the type low, middle, and high.The obtained results of computational experiments allow us to interpret the characteristics of computing systems in a linguistic form, i.e., in the natural language form, which is close to the judgment of specialists, which will significantly speed up the decision-making process.In this paper, the results are not compared with the result of benchmark experience data because the knowledge base was built in an individual testbed computer, i.e., the concept of our model requires an individual knowledge base.The generated rule base and data base cannot be used in the FIS model for evaluating the CPU utilization.We compared the results only with data that was received from the performance monitor.We did this comparison to

Algorithm 1 .
Algorithm of Fuzzy inference system 1.Definition of linguistic variables 2. Construction membership functions 3. Construction knowledge base (rule base and database) 4. Fuzzification crisp input values 5. Training and evaluation knowledge base 6.Combining the results of each rule 7. Defuzzification non-fuzzy output values

Figure 1 .Algorithm 1 .
Figure 1.Flowchart of Fuzzy inference system.Algorithm 1. Algorithm of Fuzzy inference system 1.Definition of linguistic variables 2.Construction membership functions 3.Construction knowledge base (rule base and database) 4.Fuzzification crisp input values 5.Training and evaluation knowledge base 6.Combining the results of each rule 7.Defuzzification non-fuzzy output values

Figure 3 .
Figure 3. Two inputs and two rules based on the Mamdani and Sugeno inference engine.

Figure 3 .
Figure 3. Two inputs and two rules based on the Mamdani and Sugeno inference engine.

Figure 4 .
Figure 4.The main window of the performance monitor.

Figure 4 .
Figure 4.The main window of the performance monitor.

Figure 5 .
Figure 5. Membership function of RAM and storage.

Figure 5 .
Figure 5. Membership function of RAM and storage.

Figure 5 .
Figure 5. Membership function of RAM and storage.

18 Figure 7 .
Figure 7. Construction of the output variable membership function of the Mamdani FIS model.

Figure 7 .
Figure 7. Construction of the output variable membership function of the Mamdani FIS model.

Figure 7 .
Figure 7. Construction of the output variable membership function of the Mamdani FIS model.

Figure 8 .
Figure 8. Defining rules for CPU utilization: (a) by rule base for the Mamdani FIS: (b) by training the dataset for the Sugeno FIS.

Figure 8 .
Figure 8. Defining rules for CPU utilization: (a) by rule base for the Mamdani FIS: (b) by training the dataset for the Sugeno FIS.

Figure 9 .
Figure 9. Rule Viewer showing the defuzzified form of parameters: (a) The Mamdani FIS model, the combined result is shown with the red line on the graph, showing the "Middle" status of CPU utilization; (b) The Sugeno FIS model outputs a numerical value.

Figure 9 .Figure 10 .
Figure 9. Rule Viewer showing the defuzzified form of parameters: (a) The Mamdani FIS model, the combined result is shown with the red line on the graph, showing the "Middle" status of CPU utilization; (b) The Sugeno FIS model outputs a numerical value.Appl.Sci.2019, 9, 3021 13 of 18

Figure 10 .
Figure 10.The surface viewer of CPU utilization: (a) The Mamdani FIS model; (b) the Sugeno FIS model.

Figure 12 .
Figure 12.Comparison of results between the performance monitor and FIS models: (a) The Mamdani FIS; (b) the Sugeno FIS.

Figure 12 .
Figure 12.Comparison of results between the performance monitor and FIS models: (a) The Mamdani FIS; (b) the Sugeno FIS.

Table 1 .
Database for training the Sugeno model.

Table 3 .
Fuzzy set of output variables.