Вы находитесь на странице: 1из 12

DodOrgA Self-adaptive Organic Architecture for Real Time Systems

Vamsi Krishna Bachiraju Department of Computer science, University of Paderborn Seminar paper for Cyber Physical Systems

Abstract:
Cyber Physical systems (CPS) are the systems that rely on a tight integration of computation and communication for their valuable operation and interaction with the highly unstructured or uncertain physical environment. In simple words, systems with tight conjoining of and coordination between computational and physical resources are referred as CPS. For effective operation and interaction with physical processes, system instances must be able to operate safely, independently, efficiently, reliably, securely and should offer adaptable, healing, organization properties by itself(i.e. self-x properties). This paper presents an overview of a biologically inspired computer architecture principle referred as Digital On-Demand Computing Organism for Real-Time Systems (DodOrg) that features self -x properties in order to ease management and optimization of these systems. Keywords: DodOrg Architecture, OPC, Monitoring, Artificial Hormone system, Power management

Introduction:
Cyber Physical Systems are the systems with tight conjoining of and coordination between computational and physical resources. Because of the complexity of todays computing systems and the effect which arise from the interaction of various subsystems as well as with the environment, there is a necessity for an efficient optimization and maintenance of such systems. DodOrg is a biologically inspired, heterogeneous, and adaptive computer architecture that features self-x properties (e.g. self-organization, self-configuration, selfhealing and self-protection) [1] in order to ease maintenance and optimization of the systems, where there holds a coordination between the systems computational and physical elements. Development of architecture is done with three levels brain, organ and cell, in order to provide efficient optimization and maintenance. Beginning with cell level, novel adaptive and dynamically reconfigurable hardware architecture capable of providing self-x features is employed, that consisting of processing cells of different functionality. At the Brain Level, an architecture that provides partitioned Self contained tasks of applications is employed. At the Organ level, a distributed middle ware that is responsible for mapping the application tasks generated at the Brain level to the Cell level is deployed. The DodOrg make use of hierarchical dedicated monitoring infrastructure that realises the basic self-awareness property is integrated. This distributed task mapping from self contained tasks to the organic processing cells (OPC) is achieved through an Artificial Hormone System (AHS) within the organic middleware [1] of the Organ level that is capable of allocating tasks to heterogeneous processing cells [9]. Fig 1 shows an overview of the architecture inspired from biological aspects. In addition, DodOrg is proposed to minimize the overall power consumption by balancing the thermal distribution between Organic processing cells at the Cell level. This paper is structured as follows, section 1 introduces the basic concept of the DodOrg architecture, section 2 elucidates cell level architecture, section 3 spotlights the Monitoring in DodOrg Section 4 explains Artificial Hormone system in Middleware, section 5 elucidates power management strategy applied in DodOrg, and section 6 concludes the work.

1. Architecture:
In any complex real time system, the architecture follows a major role in all of its layers. DodOrg architecture has the ability to support selfx properties like self-optimization, self organization and self-healing. This architecture is envisioned in relation with mammalian heart (i.e. Fig 1) as an example [10]. DodOrg architecture is a system with three levels named as Cell level, Organ level, and Brain level.

1.2 Layers
1.2.1 Cell Level In DodOrg, the lower level referred as Cell level has an adaptive and dynamically reconfigurable hardware architecture capable of handling self-x features is employed, which includes Organic processing cells(OPC).OPCs are capable of handling local tasks like Low level data monitoring, Provision of inter-cell communication. These cells undergo communication using Network On-chip (NOC) [3]. The functionality of OPC varies according to the input requirements, those results in the computation of Hormones, which are used by middleware for assigning tasks to OPC and also migration of tasks from one OPC to another. For effective action local monitoring is done for collecting information from OPCs regarding load and communication. Based on this information, OPCs that are suitable for certain tasks are identified. 1.2.2 Organ Level At Organ Level, a completely decentralised organic middleware responsible for mapping application tasks of Brain level downtown to the cell based adaptive and reconfigurable hardware is employed [3]. This distributed task mapping is achieved through an Artificial Hormone System (AHS) within the organic middleware [1].Grouping of related tasks is also done by middleware forming Virtual Organs. As decentralisation is a key feature of the architecture, a new organic middleware based on a hormone broadcasting scheme is deployed [7]. 1.2.3 Brain Level At Brain level, a modular architecture capable of handling application tasks based on the sensory inputs is employed. Each application is a combination of group of self-contained tasks [3].In order to perform a

task, it has to depend on set of attributes that provides an execution strategy. Whenever the attributes are provided, these are mapped with hardware to perform tasks. In addition, as the functionality of the OPCs in the lower level of DodOrg depends upon the input requirements which leads to the computation of the hormones that are literally used by middleware for assignment of self-contained tasks of Brain level to processing cells of Cell level and migration of tasks from one OPC to another. So, it is necessary to collect the data of OPCs regarding the communication, load and handling done by them. As a result, flexible monitors are responsible to gather state information of the entire system, which is needed by the middleware to govern the cells and to configure them on-demand. In DodOrg, the thermal management is done by using a control loop on an inter-cell level, but restricted to neighbouring cells only. This loop ensures the avoidance of hot spots by influencing tasks using low-level monitoring information corresponds to load and temperature. In addition for task assignment a a inter-cell control loop called middleware-driven task assignment is used that spans all cells and also responsible for organ forming and reforming, based on received and sent hormones that indicate the current conditions and functional abilities of the OPCs[1].These hormone-based control loops allow robust reactions to environmental changes and failures.

Fig 2 shows closed control loop (.i.e. referred in earlier paragraph) used in DodOrg architecture. In order to allow self-organization and self-optimization, closed control loops are essential. For instance, many Real time embedded systems make control decisions. These decisions are usually made by software and based on feedback from the hardware under its control. The systems that use this feedback are referred as closed-loop control systems.

.
2. Hardware Level or Cell Level Architecture
As the architecture has to provide continuous adaptive and dynamically (self-) modifiable behaviour during runtime, a node based approach is used. This is achieved by having cells of the hardware share a common blue print [3].Moreover, where these cells in the hardware are differentiated only during development like DSP, FPGA, C or memory (Fig 3)[8] . A node based approach enables shifting of tasks among OPCs.

2.1 OPC internal Architecture Fig 4 shows the OPC internal architecture [1] that is mainly consists of two parts. The first part, on the right, contains the cell-specific functionality. The second part on the left is same for all OPCs that include communication infrastructure and hardware units to support the self-x features of the software layers. The clock and power management in the architecture is responsible for powering down cells when their functionality is not needed and also applies dynamic voltage and frequency scaling (DVFS) techniques, which are used to dynamically alter the voltage and frequency levels of the CPU, so that the performance will be high even at the lowest possible level to still yield high performance. The observer circuit in the architecture is responsible for employing checksum or hash functions and it provides basic control of the cell behaviour like monitoring the outputs of the cells. Configuration control unit in OPC is responsible for reconfiguration of the cell specific block like loading application code to the proper memory location of processing cells.

The communication infrastructure of the DodOrg hardware consists of three main components: artNOC-router, network interface, and Chip-to-chip-communication. 2.1.1 Adaptive Real-Time NOC (art-NOC) Router The fundamental entities of DodOrg hardware level architecture consists of different kind of Organic Processing Cells (OPCs).These are connected using a novel Multi-functional router called artNOC [6]. Adaptive Real-time NOC is the first network-on-chip to realise on the features of self-x properties that consists of three different traffic classes referred as best effort (BE), real-time (RT) and broadcast (BC) [1] that are used to make decisions about the packet-routing and the packet-transmission based on the local view of each router node. Both best effort (BE) and real-time (RT) traffic classes are unicast traffic channels from OPC to OPC. On one side, best effort (BE) traffic channel dynamically uses the available network bandwidth and also provides bandwidth even for real-time (RT) traffic channel. On the other side, a special feature of the RT traffic is the one-bit feedback channel that is routed in the opposite direction from receiver OPC to sender OPC which allows a fast handshake that is essential for the implementation of the end-to-end protocol in the network interface [1]. The organization and control of the artNOC (adaptive real-time Network-on-Chip) [11] is completely decentralised in DodOrg. In DodOrg, the maximum fault tolerance has to be ensured for broadcasting of information because hormone distribution is the basic requirement for self organization, so a flooding scheme would thus be preferable, which is susceptible to deadlocks, though. Distribution in DodOrg is intended to happen in cycles, so an approach in which only one node is allowed to broadcast at a time is preferred. For this purpose, a token is passed over the NoC indicating the active broadcast-node. Fig 5[6] shows how the broadcast is done.

A Broad Cast artNOC is done in four phases .A spanning tree connection between the Broadcastnode and all other nodes is established (Fig 5) [6].And then, the actual broadcasting starts followed by releasing the tree connection and passing token to the next node. In addition, there are two more techniques called Real time and Best Effort that can be implemented. 2.1.2 Network Interface and Chip-on-Chip Communication Network Interface acts as a link between Organic processing cells and Adaptive real-time Networkon-Chip. In addition, it provides connection tables to support shifting of software and reconfiguration of hardware tasks from one cell to another cell [3].Through chip-to-chip communication, different DodOrg chips can be connected with one another, in order to develop complete architecture. In order to reduce the pin count, a high speed serial connection is used, because the extension of on-chip communication causes Dynamic OPC resource pool [3].

3. Monitoring for Heterogeneous and Adaptive Computing Systems


3.1 Related work Flexible monitors are placed on each level of DodOrg architecture to observe vital system parameters. These monitors are responsible to gather information of the entire system. Unfortunately, [2] traditional approaches for monitoring, like hardware performance counters, lack required flexibility and are not suitable for self-organising systems. So, a distributed hierarchical dedicated monitoring infrastructure that provides the basic self-awareness property is integrated in DodOrg. Organic middleware and power management function uses the information provided by the monitoring infrastructure. 3.1.1 Arbitrary Events Arbitrary events that are generated in the system are handled by considering a biologically inspired event space .In similar to the biological system, where self-defined hormones are used as messengers, in DodOrg architecture also self-defined process can be achieved by introducing an unique event ID to every event. This event ID consists of a global part, that contains source of the event and a local part that defines the type of the event itself and associated data (e.g. the memory address).Fig.6 [2] sketches the information about memory address (.i.e. we considered as an example).The structure that was followed in the local part of the event is similar to that of RISC instruction set. In addition, the structure followed by the event allows grouping of certain events. These groupings are used to create some meta events(e.g. read memory access and write memory access are the two events combined to form a meta event referred as memory access).This grouping of events can be done by using an approach called as event masking, with the specification of mandatory and dont care fields in an event. Later, this mask is applied to all the incoming events by computing with Boolean and operation. Apart, this event mask approach is also used to omit the details from the events associated data. For example, when monitoring of the memory access has to be done at granule level (.i.e. monitoring on memory pages directly), the event mask is used to omit the last twelve bits of the memory address [2] to create the memory access over a single page of a memory as an event.

3.1.2 Associated counter Array (ACA) Associated counter array is used for monitoring of arbitrarily occurring events virtually as well as used to trigger all the incoming events. ACA is a combination of hardware performance counter [20] and cache inspired mechanism. The structure is similar to cache, but instead of data field ,a counter field is included [fig 7] [2].This Associated counter array works by comparing all the incoming events with the already stored events. If the incoming events match the stored event, the associated counter value is incremented .Otherwise, the incoming event is stored inside the ACA. And, whenever there is no availability of another additional counter, one entry from the ACA must be ejected first and the referring counter is set to one and then assigned to the new event , otherwise the available counter will be directly associated to new event. The ejection of the event from the ADA can be done by making use of least-recently used (LRU) replacement strategy. After removing the event from ADA, if the counter reaches a threshold value, a message will be sent to HLM instances. This message contains the event ID and the counter value. Apart from this, whenever an event is removed from ADA, the message that is sent also contains the information about which event caused the removal of the old event from ADA in order to make the instance of HLM to react to certain critical events. After collecting the information provided by LLMs, they are used for further association among events (e.g. grouping of events)by storing them as event list, where every event list is of fixed length with head and tail pointers that makes the accessing of old as well as new event in very easy and fast way. In addition to that, one event list per event ID exists [2]. After receiving the messages, If the HLM instances receive data from more than one LLM instance, individual event list for every LLM instance and event ID is used. Though using individual event lists provides more efficient data analysis but memory consumption is higher than actual memory requirement.

3.2Hierarchical monitoring structure In DodOrg, the monitoring system consists of two main parts: low level monitoring (LLM) and high level monitoring (HLM).LLM is responsible for acquiring local data within the cell, where as HLM is responsible for analysing the data and providing self-awareness [2] for the system based on this analysis. As, every Organic processing cell (OPC) is virtually divided into two parts, like static and dynamic parts.LLM instances reside in the static part of the OPC (fig 8) [2]. These LLM instances provide an interface to the individual instances of ACA that are included in every component (e.g. artNOC and general purpose processors of OPC).After gathering the information of its local area , LLM sends that data to HLM instances using regular infrastructure network. And finally this information is used for the evaluation of OPC state. Whenever monitoring information from all LLMs is sent to a single HLM instance, it refers each HLM is responsible for a separate logical sub-system.

4. Middleware and Artificial Hormone System


4.1 Middleware In order to handle the complexity of todays distributed systems, self organization techniques are necessary. The distributed system should be able to adapt or optimise itself to changing environmental conditions and should heal itself in case of system failures. Self-X features are essential to handle such systems where interaction with the highly unstructured or uncertain physical environment is mandatory. Moreover, middleware is a good place to implement such self-X features, because it can configure the distributed system and performing tasks like finding the best organic processing element for each task and can optimise the system in case of changing environmental conditions and heal it in case of processing element or task failures [1, 2, 3]. Fig 9 shows the middleware in a distributed system [9].

4.2 Artificial Hormone system The term artificial hormone system has been chosen, because this approach was highly inspired by the hormone system of higher animals [9]. In order to handle the self-x properties, the middleware presents artificial hormone system that takes care of task allocation to heterogeneous processing elements. This approach has the properties like completely decentralised, self organising, self configuration, self optimising, self healing and limited communication overhead. Similar to biological aspect, in which hormones are spread to certain parts of the body or to the whole body, the hormones of this AHS also are not address to a specific processing cell rather they are spread over all the processing cells. And, the reaction of the processing cell to a hormone depends on the cell itself. 4.2.1. Basic Principles of Artificial Hormone System For the allocation of task to a processing cell, three types of hormones are used: Eager value: Checks the whether the processing elements suitable to execute a Specific task or not. Suppressor: It indicates the execution of task on a processing cell (i.e.PE).Suppressors are used to bind the execution of task and to indicate a degrading Processing element state. Accelerator: It is contrast to suppressor , this hormone favours the execution of a task on a PE.

Fig 10 shows the hormone based closed control loop used to assign a task Ti to a processing cell [9]. Notations are assumed as follows: Hi means a hormone for task Ti executed on PE Hi means a hormone from task Ti executed on PE. Ei(.i.e. local static eager value) indicates how well task Ti executes on PE. For every task, the closed control loop (referred in Architecture of DodOrg i.e. section 1) executes on every processing cell, and concludes whether the task can be executed on a specific PE or not by using the three available hormone types .i.e. Eager value, suppressor and Accelerator. By using Ei, all suppressors Si received for task Ti on PE are subtracted and all accelerators Ai received for task Ti on PE are added. The result is referred as modified eager value Emi for task Ti on PE and this value is sent to all other PEs in the system and compared all other Emi received from all other PEs for this task. If Emi greater than all received eager values Emi , task Ti will be taken by PE.Now,task Ti on PE sends suppressors Si and accelerators Ai to the others. This is repeated periodically and referred as hormone cycle [9].

5. Power Management
In DodOrg, the power management is done with an interaction among cell as well as organ level and by utilizing the reconfigurable hardware and monitoring input. A Swapping-on-the fly architecture was proposed in DodOrg that increases the scope for power-optimization with the provision of several implementation alternatives for tasks [1] because at an instant of time exactly only one task implementation will be instantiated, it may be either physical implementation (software, reconfigurable hardware etc.) or algorithmic implementation.

Fig.11 shows an overview of the ultra-low power consumption strategy [7] was proposed to follow in DodOrg architecture. This strategy consists of swap power manager, swap scheduler and swapping unit. Swap power manager receives monitoring information about the system status like battery energy and changes in the constraints imposed to the systems. Firstly, swapping is initiated and the swap scheduler is instructed to provide a valid lowest possible power schedule in according to the specified constraints. If the schedule is not possible, the swap power manager provides a different swap scheme [3].

Power consumption can vary based on the characteristics of the element on which the task is implemented (.i.e. Tasks consume power depending on which OPC they are running on, similarly power consumption also varies with different algorithmic implementations). For instance, a software program residing in the RAM-based memory has a different power consumption and performance compared to an ASIC-style implementation [3]. Fig.12 shows energy consumption before and after mapping of tasks [7] (i.e. implementation swapping) to organic processing cells (OPCs). Fig.13 shows the variation in the power consumption [7] with different algorithmic implementations (also referred as algorithmic swapping). By using above stated strategies (i.e. implementation swapping and algorithmic swapping) it is possible to reduce power consumption to a significant level.

On the other side, the focus of low-power consumption techniques has been only on minimising either energy or power. Better results can be achieved by considering heat-specific factors, where heat transfers across the multi-core chip. The methods that works considering the heat factors into account work well because they rely on a Central Control Instance (CI), which reacts to thermal hotspots over the entire chip by means of runtime task migration [15, 16]. The use of these central control instances also lead to scalability issues, as multi-core architectures are beginning to incorporate hundreds or thousands of cores [17]. The loophole is that , the increase in the amount of sensory data that is required to transmit the thermal values and the computational overhead for managing DTM in hundreds of cores cannot be handled efficiently with central control instances [12,13,14]. Thermal Management in DodOrg is realised as a fully distributed agent-based system [13]. Agentbased systems are used as one of the fundamental approaches for implementing organic self-x properties in DodOrg. Agent based systems are used in order to implement organic self-x properties, where agents are considered as an autonomous and flexible computational entity that acts on behalf of an OPC.These are used to exploit their locality, so that it can reduce the problem space in OPC and also used to present an adaptive behaviour through communication, negotiation and co-operation with other agents. Agents are situated at each OPC and are responsible for controlling its power management, e.g. determining at which frequency it is allowed to run [2].

The agent based techniques are used for thermal management in DodOrg are based on the models used in agent-based computational economics (ACE) [18]. Initially, certain number of energy units is distributed throughout the system among all agents in the system. These energy units are sub-divided into two categories namely used units and free units. Used units represents the number of units currently used by the OPC for running tasks, i.e., the number of used units determine the OPCs frequency and voltage through the power management module, and free units represents the energy units available on an OPC that are not currently used by the OPC to run tasks, because the required frequency and voltage set by used units already meet task requirements. These two types of units are used by an OPC agent to calculate buy and sell values used for trading energy units.Fig.14 shows how the energy but trading among the agents is done [1].

is a normalising parameter used to offset the buy and sell values. Buy and sell values between the agents changes during runtime, depending on the current supply/demand of energy units calculated by each agent. The main idea is that , obtaining energy units becomes more and more difficult if there are already many energy units in a specific OPCs(i.e. local area).By using , the organic monitoring process, agents obtains the temperature values from the onchip thermal sensors and includes these values in the negotiation process by adding a tax to buy values. So, if there are already many units that were used in local area, instead of obtaining energy units, these agents will lose the units it has. Fig.15 shows an overview of buy and sell values assuming the same number of used energy units among the agents [1].W u,s and Wu,b represents the weights of agents corresponding to energy.

If the difference between buy and sell values (selli buyi ) of an agent i is exceeded in one of its neighbours by more than a given threshold, the agent gives up an energy unit to the neighbour with the maximum (selln buyn) value. This difference shows how energy units are added or subtracted to/from agents as shown in Fig. 15[1] as well as also gives an indication of how well an OPC is suited for additional tasks from an energy/thermal point of view. If the agent gives energy units that are free it is simply decrements its number of free energy units. Otherwise, if there are no free energy units but the local agent must give up one of its used power units. This means that the agent must also reduce its power consumption through DVFS [19].

7. Conclusion
In this paper a biologically inspired architecture that is especially suited for real-time system is proposed. It consists of three levels, brain, organ and cell. The lower level referred as Cell level has an adaptive and dynamically reconfigurable hardware architecture capable of handling self-x features is employed, which includes Organic processing cells(OPC). At Organ Level, a completely decentralised organic middleware responsible for mapping application tasks of Brain level downtown to the cell based adaptive and reconfigurable hardware is employed. A modular architecture capable of handling application tasks based on the sensory inputs is employed at the brain level. In addition, a detailed description of the organic processing cells (OPCs) those are part of cell level in DodOrg, Hierarchical monitoring approach that is responsible to gather information of the entire system and also provides information to the organic middleware and power management function, middleware where self-X features are implemented because it can configure the distributed system and

performing tasks like finding the best organic processing element(OPC) for each task and can optimise the system in case of changing environmental conditions and heal it in case of processing element or task failures, Artificial hormone system which is a part of middle responsible to handle the self-x properties and takes care of task allocation to heterogeneous processing elements from Brain level to Cell level and has the properties like completely decentralised, self organising, self configuration, self optimising, self healing and limited communication overhead. Finally, A Swapping-on-the fly architecture was proposed in DodOrg that increases the scope for power-optimization with the provision of several implementation alternatives.

References
[1]DodOrga Self-adaptive Organic many-core Architecture Thomas Ebi, David Kramer, Christian Schuck, Alexander von Renteln, Jrgen Becker, Uwe Brinkschulte, Jrg Henkel, andWolfgang Karl [2] Monitoring and Self-awareness for Heterogeneous, Adaptive Computing Systems David Kramer, Rainer Buchty, andWolfgang Karl [3] Digital On-Demand Computing Organism for Real-Time Systems Jrgen Becker1, Kurt Brndle1, Uwe Brinkschulte2, Jrg Henkel3, Wolfgang Karl3, Thorsten Kster1, Michael Wenz2, Heinz Wrn2 [4] Configware and morphware going mainstream, J. of Systems Architecture 49, pp. 127-142 (2003) J. Becker, R.W. Hartenstein [5] "Dynamic Reconfiguration On-Demand: Real-time Adaptivity in Next Generation Microelectronics",ReCoSoc2005, Montpellier, France (2005) J. Becker, M. Hbner, K. Paulsson, A. Thomas [6] artNoC - A novel multi-functional router architecture for organic computing Christian Schuck, Stefan Lamparth, Jrgen Becker [7] Jurgen Becker et. al. Digital On-Demand Computing Organism for Real-Time Systems.In Wolfgang Karl et. al,(Workshop Proceedings of the 19th International Conference on Architecture of Computing Systems(ARCS06)) [8] Re-configurable Techniques for self X power and performance management on Xilinx Virtex II/Virtex II pro-FPGAs by Christian schuck ,Bastian Haetzer and J.Becker [9] The Artificial Hormone SystemAn Organic Middleware for Self-organising Real-Time Task Allocation [10] DodOrg Project Overview L. Bauer, R. Buchty, T. Ebi, D. Kramer, A. von Renteln, C. Schuck Prof. J. Becker, Prof. U. Brinkschulte, Prof. J. Henkel, Prof. W. Karl [11] Schuck, C., Lamparth, S., Becker, J.: artNoCA novel multi-functional router architecture for organic computing. In: FPL, pp. 371376 (2007) [12] Al Faruque, M., Jahn, J., Ebi, T., Henkel, J.: Runtime thermal management using software agents for multiand many-core architectures. IEEE Des. Test Comput. 27(6), 5868 (2010) [13] Ebi, T., Al Faruque, M.A., Henkel, J.: TAPE: thermal-aware agent-based power economy for multi/manycore architectures. In: International Conference on Computer-Aided Design (ICCAD), pp. 302309 (2009). Best Paper Award. [14] Ebi, T., Al Faruque, M.A., Henkel, J.: NeuroNoC: neural network inspired runtime adaptation for an onchip communication architecture. In: Proceedings of the Eighth IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis. CODES/ ISSS10, pp. 223230. ACM, New York (2010) [15] Coskun, A.K., Rosing, T.S., Gross, K.C.: Temperature management in multiprocessor socs using online learning. In: Proceedings of the 45th Annual Design Automation Conference (DAC), pp. 890893 (2008) [16] Yeo, I., Liu, C.C., Kim, E.J.: Predictive dynamic thermal management for multicore systems. In: Proceedings of the 45th Annual Design Automation Conference (DAC), pp. 734739 (2008) [17] Borkar, S.: Thousand core chips: a technology perspective. In: Proceedings of the 44th Annual Design Automation Conference (DAC), pp. 746749 (2007) [18] Tesfatsion, L.: Agent-based computational economics: Growing economies from the bottom up. Artif. Life 8(1), 5582 (2002) [19]Different DVFS Techniques for Multitasking Systems CSE237a Final Project Proposal Jamie Bradley and Diana Fang [20] Measuring and Improving Application Performance with PerfSuite by Rick Kufrin

Вам также может понравиться