# Patent

## Title
Method for computing cooling redundancy at the rack level

## Abstract

A system and method for designing aspects of a cooling system for a data center is provided. A method is provided including computing cooling redundancy at each rack position in a data center, in real time. The redundancy can be reported using the traditional N+1, N+2, etc. notation, where N is the number of coolers required to meet the primary cooling load type specification. The redundancy can also be reported in terms of a Cooling Reliability Index (CRI) which also takes into account the inherent availability of the specific cooling units in the design.

## Background
BACKGROUND OF INVENTION
Field of the Invention
At least one embodiment in accord with the present invention relates generally to systems and methods for data center management, and more specifically, to systems and methods for managing data center cooling.
Discussion of Related Art
In response to the increasing demands of information-based economies, information technology networks continue to proliferate across the globe. One manifestation of this growth is the centralized network data center. A centralized network data center typically consists of various information technology equipment, collocated in a structure that provides network connectivity, electrical power and cooling capacity. Often the equipment is housed in specialized enclosures termed “racks” which integrate these connectivity, power and cooling elements. In some data center configurations, these racks are organized into rows and clusters having hot and cold aisles to decrease the cost associated with cooling the information technology equipment. These characteristics make data centers a cost effective way to deliver the computing power required by many software applications.
Various processes and software applications, such as the InfrastruXure® Central product available from American Power Conversion Corporation (APC) of West Kingston, R.I., have been developed to aid data center personnel in designing and maintaining efficient and effective of data centers configurations. These tools often guide data center personnel through activities such as designing the data center structure, positioning equipment within the data center prior to installation and adding, repositioning, or removing equipment after construction and installation are complete. Thus, conventional tool sets provide data center personnel with a standardized and predictable design methodology.
Because of local variations in the delivery of cool air to racks and/or the capture of hot rack exhaust air from racks, even after careful design using such tools it is almost always the case that some rack locations have either too much or too little cooling. This is not only the case for primary (non-failure-mode) cooling but for various cooling-failure modes as well. To compensate for this rack-to-rack variation in (primary and failure-mode) cooling, a facility is often over designed—often by a large margin as the consequences of downtime are severe. This over-provisioning of (primary and failure-mode) cooling equipment results in excessive capital and operating costs.
SUMMARY OF THE INVENTION
Aspects of embodiments of the invention provide methods for computing cooling redundancy at each rack position in a data center, in real time. The redundancy can be reported using the traditional N+1, N+2, etc. notation, where N is the number of coolers required to meet the primary cooling load type specification. The redundancy can also be reported in terms of a Cooling Reliability Index (CRI) which also takes into account the inherent availability of the specific cooling units in the design.
Still other aspects, embodiments, and advantages of these exemplary aspects and embodiments, are discussed in detail below. Moreover, it is to be understood that both the foregoing information and the following detailed description are merely illustrative examples of various aspects and embodiments, and are intended to provide an overview or framework for understanding the nature and character of the claimed aspects and embodiments. The accompanying drawings are included to provide illustration and a further understanding of the various aspects and embodiments, and are incorporated in and constitute a part of this specification. The drawings, together with the remainder of the specification, serve to explain principles and operations of the described and claimed aspects and embodiments.



BRIEF DESCRIPTION OF DRAWINGS
The accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
FIG. 1 shows an example computer system with which various aspects in accord with the present invention may be implemented;
FIG. 2 illustrates an example distributed system including an embodiment;
FIG. 3 illustrates an example process for designing a data center configuration according to an embodiment;
FIG. 4 depicts another example process for designing a data center configuration according to an embodiment;
FIG. 5 shows another example process for designing a data center configuration according to an embodiment;
FIG. 6 shows an example interface through which a user may provide input to a data center model according to an embodiment;
FIG. 7 shows an example interface through which a user may design a data center model according to an embodiment; and
FIG. 8 depicts a sequence of vectors representing coolers which are operating and coolers which are not operating, according to a coding embodiment.



DETAILED DESCRIPTION
At least some embodiments in accord with the present invention relate to systems and processes through which a user may design data center configurations. These systems may facilitate this design activity by allowing the user to assess data center cooling redundancy at various levels of granularity, including cluster, row and rack levels.
Design tools such as Computational Fluid Dynamics (CFD) and real-time cooling calculators incorporated in conventional tools offered by APC facilitate the proper matching of rack-by-rack IT load with primary cooling requirements; however, presently, there are no tools which, as described below, automate the process of determining the cooling available to each rack under various cooling failure scenarios. The data center designer or operator benefits from a design tool incorporating aspects of embodiments, and therefore which not only indicates the primary cooling performance at each rack location but also the redundancy at each rack location.
Presently, there is no concept of cooling redundancy at the rack level despite the obvious variations in cooling-failure-mode performance from one location to another in a data center. For example, consider a cluster of racks and row-based coolers in which several coolers are located near the left end of the cluster and another, single cooler is located near the right end of the cluster. The failure of a single cooler at the left end will likely have no effect on cooling performance for racks near the left end as multiple coolers in the area will continue to function; however, a failure of the single cooler at the right end will likely result in insufficient cooling for racks near the right end of the cluster as there are no other coolers in the area to cover the load.
In some embodiments, models may include structural components of a data center, such as, among other structural components, walls, ceilings, floors and the spaces defined by these structural components. The model may also include representations of data center equipment, such as, among other equipment, cooling consumers and cooling providers, located within the model space. Cooling providers may be any element of the data center that is involved in the generation or distribution of cool air to other data center equipment. Examples of cooling providers include, among others, computer room air conditioners (CRACs), computer room air handlers (CRAHs) and tiles located in the floor or ceiling. Cooling consumers include any element of the data center that consumes the cooling supply generated by the cooling providers. Examples of cooling consumers include, among others, network devices, servers and other information technology equipment. In a data center, these cooling consumers may be mounted in racks, although this is not a requirement. In at least one embodiment, the model may calculate and display cooling performance information, such as cooling metrics, through representations of data center equipment. Further, in at least one embodiment, the model may calculate and display redundancy information, such as a number of cooling equipment failures tolerated at each rack or a Cooling Reliability Index (CRI).
The aspects disclosed herein, which are in accord with the present invention, are not limited in their application to the details of construction and the arrangement of components set forth in the following description or illustrated in the drawings. These aspects are capable of assuming other embodiments and of being practiced or of being carried out in various ways. Examples of specific implementations are provided herein for illustrative purposes only and are not intended to be limiting. In particular, acts, elements and features discussed in connection with any one or more embodiments are not intended to be excluded from a similar role in any other embodiments.
For example, according to one embodiment of the present invention, a computer system is configured to perform any of the functions described herein, including but not limited to, configuring, modeling and presenting information regarding specific data center configurations. However, such a system may also perform other functions, such as suggesting changes to data center configurations, based on, for example, industry best practices. Moreover, the systems described herein may be configured to include or exclude any of the functions discussed herein. Thus the invention is not limited to a specific function or set of functions. Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use herein of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof is meant to encompass the items listed thereafter and equivalents thereof as well as additional items.
Computer System
Various aspects and functions described herein in accord with the present invention may be implemented as hardware or software on one or more computer systems. There are many examples of computer systems currently in use. These examples include, among others, network appliances, personal computers, workstations, mainframes, networked clients, servers, media servers, application servers, database servers and web servers. Other examples of computer systems may include mobile computing devices, such as cellular phones and personal digital assistants, and network equipment, such as load balancers, routers and switches. Further, aspects in accord with the present invention may be located on a single computer system or may be distributed among a plurality of computer systems connected to one or more communications networks.
For example, various aspects and functions may be distributed among one or more computer systems configured to provide a service to one or more client computers, or to perform an overall task as part of a distributed system. Additionally, aspects may be performed on a client-server or multi-tier system that includes components distributed among one or more server systems that perform various functions. Thus, the invention is not limited to executing on any particular system or group of systems. Further, aspects may be implemented in software, hardware or firmware, or any combination thereof. Thus, aspects in accord with the present invention may be implemented within methods, acts, systems, system elements and components using a variety of hardware and software configurations; the invention is not limited to any particular distributed architecture, network, or communication protocol.
FIG. 1 shows a block diagram of a distributed computer system 100, in which various aspects and functions in accord with the present invention may be practiced. Distributed computer system 100 may include one more computer systems. For example, as illustrated, distributed computer system 100 includes computer systems 102, 104 and 106. As shown, computer systems 102, 104 and 106 are interconnected by, and may exchange data through, communication network 108. Network 108 may include any communication network through which computer systems may exchange data. To exchange data using network 108, computer systems 102, 104 and 106 and network 108 may use various methods, protocols and standards, including, among others, token ring, ethernet, wireless ethernet, Bluetooth, TCP/IP, UDP, Http, FTP, SNMP, SMS, MMS, SS7, Json, Soap, and Corba. To ensure data transfer is secure, computer systems 102, 104 and 106 may transmit data via network 108 using a variety of security measures including TSL, SSL or VPN among other security techniques. While distributed computer system 100 illustrates three networked computer systems, distributed computer system 100 may include any number of computer systems and computing devices, networked using any medium and communication protocol.
Various aspects and functions in accord with the present invention may be implemented as specialized hardware or software executing in one or more computer systems including computer system 102 shown in FIG. 1. As depicted, computer system 102 includes processor 110, memory 112, bus 114, interface 116 and storage 118. Processor 110 may perform a series of instructions that result in manipulated data. Processor 110 may be a commercially available processor such as an Intel Pentium, Motorola PowerPC, SGI MIPS, Sun UltraSPARC, or Hewlett-Packard PA-RISC processor, but may be any type of processor or controller as many other processors and controllers are available. Processor 110 is connected to other system elements, including one or more memory devices 112, by bus 114.
Memory 112 may be used for storing programs and data during operation of computer system 102. Thus, memory 112 may be a relatively high performance, volatile, random access memory such as a dynamic random access memory (DRAM) or static memory (SRAM). However, memory 112 may include any device for storing data, such as a disk drive or other non-volatile storage device. Various embodiments in accord with the present invention may organize memory 112 into particularized and, in some cases, unique structures to perform the aspects and functions disclosed herein.
Components of computer system 102 may be coupled by an interconnection element such as bus 114. Bus 114 may include one or more physical busses, for example, busses between components that are integrated within a same machine, but may include any communication coupling between system elements including specialized or standard computing bus technologies such as IDE, SCSI, PCI and InfiniBand. Thus, bus 114 enables communications, for example, data and instructions, to be exchanged between system components of computer system 102.
Computer system 102 also includes one or more interface devices 116 such as input devices, output devices and combination input/output devices. Interface devices may receive input or provide output. More particularly, output devices may render information for external presentation. Input devices may accept information from external sources. Examples of interface devices include keyboards, mouse devices, trackballs, microphones, touch screens, printing devices, display screens, speakers, network interface cards, etc. Interface devices allow computer system 102 to exchange information and communicate with external entities, such as users and other systems.
Storage system 118 may include a computer readable and writeable nonvolatile storage medium in which instructions are stored that define a program to be executed by the processor. Storage system 118 also may include information that is recorded, on or in, the medium, and this information may be processed by the program. More specifically, the information may be stored in one or more data structures specifically configured to conserve storage space or increase data exchange performance. The instructions may be persistently stored as encoded signals, and the instructions may cause a processor to perform any of the functions described herein. The medium may, for example, be optical disk, magnetic disk or flash memory, among others. In operation, the processor or some other controller may cause data to be read from the nonvolatile recording medium into another memory, such as memory 112, that allows for faster access to the information by the processor than does the storage medium included in storage system 118. The memory may be located in storage system 118 or in memory 112, however, processor 110 may manipulate the data within the memory 112, and then copies the data to the medium associated with storage system 118 after processing is completed. A variety of components may manage data movement between the medium and integrated circuit memory element and the invention is not limited thereto. Further, the invention is not limited to a particular memory system or storage system.
Although computer system 102 is shown by way of example as one type of computer system upon which various aspects and functions in accord with the present invention may be practiced, aspects of the invention are not limited to being implemented on the computer system as shown in FIG. 1. Various aspects and functions in accord with the present invention may be practiced on one or more computers having a different architectures or components than that shown in FIG. 1. For instance, computer system 102 may include specially-programmed, special-purpose hardware, such as for example, an application-specific integrated circuit (ASIC) tailored to perform a particular operation disclosed herein. While another embodiment may perform the same function using several general-purpose computing devices running MAC OS System X with Motorola PowerPC processors and several specialized computing devices running proprietary hardware and operating systems.
Computer system 102 may be a computer system including an operating system that manages at least a portion of the hardware elements included in computer system 102. Usually, a processor or controller, such as processor 110, executes an operating system which may be, for example, a Windows-based operating system, such as, Windows NT, Windows 2000 (Windows ME), Windows XP or Windows Vista operating systems, available from the Microsoft Corporation, a MAC OS System X operating system available from Apple Computer, one of many Linux-based operating system distributions, for example, the Enterprise Linux operating system available from Red Hat Inc., a Solaris operating system available from Sun Microsystems, or a UNIX operating systems available from various sources. Many other operating systems may be used, and embodiments are not limited to any particular implementation.
The processor and operating system together define a computer platform for which application programs in high-level programming languages may be written. These component applications may be executable, intermediate, for example, C−, bytecode or interpreted code which communicates over a communication network, for example, the Internet, using a communication protocol, for example, TCP/IP. Similarly, aspects in accord with the present invention may be implemented using an object-oriented programming language, such as .Net, SmallTalk, Java, C++, Ada, or C# (C-Sharp). Other object-oriented programming languages may also be used. Alternatively, functional, scripting, or logical programming languages may be used.
Additionally, various aspects and functions in accord with the present invention may be implemented in a non-programmed environment, for example, documents created in HTML, XML or other format that, when viewed in a window of a browser program, render aspects of a graphical-user interface or perform other functions. Further, various embodiments in accord with the present invention may be implemented as programmed or non-programmed elements, or any combination thereof. For example, a web page may be implemented using HTML while a data object called from within the web page may be written in C++. Thus, the invention is not limited to a specific programming language and any suitable programming language could also be used.
A computer system included within an embodiment may perform functions outside the scope of the invention. For instance, aspects of the system may be implemented using an existing commercial product, such as, for example, Database Management Systems such as SQL Server available from Microsoft of Seattle Wash., Oracle Database from Oracle of Redwood Shores, Calif., and MySQL from MySQL AB of Uppsala, Sweden or integration software such as Web Sphere middleware from IBM of Armonk, N.Y. However, a computer system running, for example, SQL Server may be able to support both aspects in accord with the present invention and databases for sundry applications not within the scope of the invention.
Example System Architecture
FIG. 2 presents a context diagram including physical and logical elements of distributed system 200. As shown, distributed system 200 is specially configured in accord of the present invention. The system structure and content recited with regard to FIG. 2 is for exemplary purposes only and is not intended to limit the invention to the specific structure shown in FIG. 2. As will be apparent to one of ordinary skill in the art, many variant system structures can be architected without deviating from the scope of the present invention. The particular arrangement presented in FIG. 2 was chosen to promote clarity.
Information may flow between the elements, components and subsystems depicted in FIG. 2 using any technique. Such techniques include, for example, passing the information over the network via TCP/IP, passing the information between modules in memory and passing the information by writing to a file, database, or some other non-volatile storage device. Other techniques and protocols may be used without departing from the scope of the invention.
Referring to FIG. 2, system 200 includes user 202, design interface 204, data center design and management system 206, communications network 208 and data center database 210. System 200 may allow user 202, such as a data center architect or other data center personnel, to interact with design interface 204 to create or modify a model of one or more data center configurations. According to one embodiment, design interface 204 may include aspects of the floor editor and the rack editor as disclosed in Patent Cooperation Treaty Application No. PCT/US08/63675, entitled METHODS AND SYSTEMS FOR MANAGING FACILITY POWER AND COOLING, filed on May 15, 2008, which is incorporated herein by reference in its entirety and is hereinafter referred to as PCT/US08/63675. In other embodiments, design interface 204 may be implemented with specialized facilities that enable user 202 to design, in a drag and drop fashion, a model that includes a representation of the physical layout of a data center or any subset thereof. This layout may include representations of data center structural components as well as data center equipment. The features of design interface 204, as may be found in various embodiments in accord with the present invention, are discussed further below.
As shown in FIG. 2, data center design and management system 206 presents data design interface 204 to user 202. According to one embodiment, data center design and management system 206 may include the data center design and management system as disclosed in PCT/US08/63675. In this embodiment, design interface 204 may incorporate functionality of the input module, the display module and the builder module included in PCT/US08/63675 and may use the database module to store and retrieve data.
As illustrated, data center design and management system 206 may exchange information with data center database 210 via network 208. This information may include any information required to support the features and functions of data center design and management system 206. For example, in one embodiment, data center database 210 may include at least some portion of the data stored in the data center equipment database described in PCT/US08/63675. In another embodiment, this information may include any information required to support design interface 204, such as, among other data, the physical layout of one or more data center model configurations, the production and distribution characteristics of the cooling providers included in the model configurations, the consumption characteristics of the cooling consumers in the model configurations and one or more cooling metrics characterizing the amount of cool air produced by the cooling providers that is lost prior to being consumed by the cooling consumers.
In at least one embodiment, data center database 210 may store, as part of the physical layout of a data center model configuration, the location and characteristics of the tiles that make up surfaces of the data center, such as the floor, ceiling and walls, of a model space. In at least one embodiment, the tiles may be floor tiles that are part of a raised floor, while in another embodiment the tiles may be ceiling tiles that are part of a drop ceiling. The characteristics of the tiles stored in data center database 210 may include, among other characteristics, whether or not the tiles are perforated, the size of the tiles and cooling metrics associated with the tiles, such as, in the example of a perforated tile, the airflow rate and temperature of air passing through it. As used herein, the term “perforated tile” may include any surface designed to allow airflow to pass through its boundary. Examples of perforated tiles include, among others standard-sized perforated tiles, custom-sized perforated tiles, cover grills and open holes. In some embodiments, this information is useful for providing enhanced functionality through design interface 204.
In another embodiment, data center database 210 may store, as a portion of the production and distribution characteristics of the cooling providers, the type of cooling provider, the amount of cool air provided by the cooling provider, and a temperature of cool air provided by the cooling provider. Thus, for example, data center database 210 includes record of a particular type of CRAC unit that is rated to deliver airflow at the rate of 5,600 cfm at a temperature of 68 degrees Fahrenheit. In addition, the data center database 210 may store one or more cooling metrics, such as an airflow leakage rate of an air plenum, such as a raised floor or a drop ceiling.
Data center database 210 may take the form of any logical construction capable of storing information on a computer readable medium including, among other structures, flat files, indexed files, hierarchical databases, relational databases or object oriented databases. The data may be modeled using unique and foreign key relationships and indexes. The unique and foreign key relationships and indexes may be established between the various fields and tables to ensure both data integrity and data interchange performance.
The computer systems shown in FIG. 2, which include data center design and management system 206, network 208 and data center equipment database 210, each may include one or more computer systems. As discussed above with regard to FIG. 1, computer systems may have one or more processors or controllers, memory and interface devices. The particular configuration of system 200 depicted in FIG. 2 is used for illustration purposes only and embodiments of the invention may be practiced in other contexts. Thus, the invention is not limited to a specific number of users or systems.
Design Interface Embodiments
According to various embodiments, design interface 204 may provide users with a high degree of flexibility regarding how and when they design data center cooling systems. In these embodiments, the user may design the entire cooling system in advance of the remainder of the data center configuration, may design the cooling system concurrently with other attributes of the data center or may design the cooling system after other parts of the data center design are complete. Thus, design interface 204 may be used to design new data centers or may be used to modify the designs of existing data centers. The formulation of useful systems and methods for conducting these design activities is impacted by the unique manner in which design interface 204 may be structured and organized. Conversely, the elements used and acts performed in these design activities impact the attributes and facilities of this embodiment of design interface 204.
Design interface 204 may provide functionality through a variety of user interface screens and elements. FIG. 3 illustrates an example of a user interface 300 that may be included in design interface 204 according to some embodiments. As shown, user interface 300 includes many of the user interface elements discussed in PCT/US08/63675 with regard to the floor editor and the rack editor. These elements may function within this embodiment as they function with the floor editor and the rack editor disclosed within PCT/US08/63675.
In the context of this design interface, an embodiment provides features for computing and ensuring cooling redundancy at specific rack locations. Conventionally, there is no concept of cooling redundancy at a specific rack location. A single redundancy level is conventionally stated for an entire facility. In some cases, some racks in a facility will have sufficient redundancy while others will not. Other facilities may be so over-designed to ensure cooling redundancy at all locations that substantial capital and ongoing energy costs are wasted. The exemplary embodiment provides a method by which redundancy can be computed for each rack location in a new or existing facility. With this information, data center designers and operators can make fact-based business decisions related to IT uptime and expenditures. For example, the designer of a new facility can minimize the number of coolers to just satisfy the level of redundancy required—which may be potentially different in different areas of the data center—thereby avoiding costs associated with over-provisioning. As another example, a data center operator may use the method to determine where to install a new server so that the cooling redundancy requirements of the new server will be met and that the cooling redundancy of other nearby IT equipment will not be adversely affected by the installation.
In accordance with further aspects and embodiments, a Cooling Reliability Index (CRI) can be computed in addition to or in lieu of the traditional N+1-style redundancy specification. The CRI takes into account the inherent reliability characteristics (e.g. MTBF, MTTR) of the cooling equipment and can be used to estimate the actual fraction of time that adequate cooling is available at each rack location.
Computing N+1 Redundancy at Rack Level
Redundancy calculations for clusters of racks and coolers, based on N+1-style calculations, can be implemented within any suitable data center design tool. In the illustrative embodiment, the Capture Index (CI), an index described in detail in pending U.S. patent application Ser. No. 11/342,300, filed Jan. 27, 2006, published as document 2007-0038414 A1 on Feb. 15, 2007, incorporated herein by reference. In summary, the CI represents either the percentage of exhaust air from a location of concern within a data center that is “captured” by a cooler for that location (for a hot-aisle location where air is exhausted from the locations to the aisle) or the percentage of cooled air from a cooler that is “captured” by one or more locations of concern within the data center (for cool-aisle locations where air is received at the locations from the aisle). For the purpose of this exemplary embodiment, the CI serves as the cooling performance metric although other metrics, like rack inlet temperature, can be used.
Using real-time, CI-based cooling calculators, it is possible to determine rack cooling performance at the room level under essentially every cooler-failure scenario. In this discussion, a cooler-failure may be a failure of a cooler or any other cooling related equipment that reduces the effective cooling of a location by a specified quantity. Making a determination of rack cooling performance at the room level means considering cooler failures anywhere in the room as they affect the rack in question. Methods and apparatus embodying aspects of the invention simply test all cooler-failure scenarios for the room and keep track of the limiting number and type failures during which adequate cooling at a rack is nevertheless maintained. For example, if cooling performance of a rack remains adequate (adequate cooling performance being a CI above some minimum threshold) with any two coolers in the room “failed”, the rack has “N+2” redundancy at the room level.
The CI only identifies situations where inadequate cooling at a rack arises due to airflow inadequacies. An additional constraint on adequate cooling performance that can be optionally applied is that all remaining functional coolers must have a cooling capacity capable of cooling the total heat load of the room during a failure scenario; if not, such a failure might be interpreted as a cooling failure at all rack locations. A similar additional, optional constraint is that the remaining functional coolers must have a cooling capacity capable of preventing localized hot spots resulting in a rack cooling failure due to effects other than inadequate air flow. These optional constraints can be applied in addition to the CI analysis, or can be, in some cases, built into the CI analysis by incorporating both the CI and temperature information into a more evolved index, or can be applied in any other suitable way. These additional constraints, however, represent unlikely failure modes under current design practices.
To save on calculations, a user-specified “target redundancy level” can be used. For example, if a user sets an “N+1” target cooling redundancy, once all single cooler failure scenarios have been tested and found to be “OK”, the cooling redundancy is known to be “N+1” and multiple-cooler-failure scenarios need not be tested.
Embodiments according to aspects of the invention provide an estimate of the cooling reliability to an end user. Correct placement of cooling units may be difficult to guess due to the large deviations in local and room airflows that even slight adjustments can cause. Therefore, the exemplary tool will estimate a rack's cooling redundancy. The estimated redundancy will be a measure of the ‘extra’ cooling available. This additional cooling will perhaps permit one or more coolers to shut down or fail at a time and maintain full server operations. Thus, the redundancy may be defined differently depending on the metric used as defined in terms of the largest number of coolers that can be shut down, in any combination, while still operating equipment racks safely.
Cooling redundancy may be defined differently depending on scope. The higher levels of room and cluster redundancy can paint a general picture, while the rack-by-rack measure can pinpoint areas for improvement.
Rack Cooling Redundancy
Rack redundancies are the backbone of the tool. On a rack level, the cooling redundancy of a unit is a measure of its ability to handle either expected or unexpected shutdowns or failures of cooling units. There are a few cases:
A. “No coverage”—The current cluster configuration inadequately cools this rack.
B. “N”—The current cluster configuration adequately cools the rack, but the shutdown or failure of at least one cooling unit causes inadequate cooling.
C. “N+1”—The rack is adequately cooled in both the current configuration and under any single cooling unit shutdown or failure.
D. “N+j”, where j is an integer greater than 1—The rack is adequately cooled, no matter what combination of j cooling units are shut down or fail.
Cluster Cooling Redundancy
For an overall cluster cooling redundancy, the redundancies of all racks in the cluster are examined to find the rack that has the least coverage. The coverage of that rack defines the overall cluster redundancy. Thus, a cluster has N+1 redundancy, if all racks are sufficiently cooled under any single cooling unit shutdown.
Room Cooling Redundancy
Similarly, the room has a cooling redundancy corresponding to that of the worst rack redundancy in the room.
Determination of Cooling Redundancy
As every other level depends on rack redundancy, each rack is examined, as illustrated in FIG. 3. In its simplest form, for a given rack, the method 300 of this embodiment checks each possible combination of cooler shutdowns, keeping track of the configurations when the rack is no longer adequately cooled 301, 303 and 305. The redundancy is then identified, 307, as one less than the smallest number of shutdown coolers for which the rack has insufficient cooling to remain at a safe operating temperature.
Method 300 can be performed in either of two ways, as may be desired. Method 300 can be performed for each rack location under consideration, for example in a room, as indicated above. According to this first alternative, the optional decision indicated at 302a is performed and the optional decision indicated at 302b is skipped. According to a second alternative, during each pass through method 300 described below, step 303 checks for adequate cooling at each rack location and step 305 records the results for each rack location checked. To perform this second alternative, the optional decision indicated at 302b is performed and the optional decision indicated at 302a is skipped.
In somewhat greater detail, if following the first alternative, the method 300 will perform the loop defined by the decision 302a for all racks. The method 300 performs a series of checks for all combinations of shut down coolers, 301. During each check, the method first checks the next untested combination to determine if a given rack has adequate cooling, 303. The combination checked and whether the cooling that results at the given rack will be inadequate is recorded, 305, for example in a computer memory or on a computer file. These checks are repeated, 301, 303, 305, until all combinations of shut down coolers are tested. Finally, the rack redundancy is identified as the number, less one, of coolers shut down in that combination having the smallest number of coolers shut down and which also has inadequate cooling, 307. Identification of the redundancy level, 307, can be done by searching the recorded information, by a process which sorts the data as the data is created and recorded, by a process which sorts the data after the data has been recorded, or by any other suitable process.
If following the second alternative, the method 300 enters a loop to perform a series of checks for all combinations of shut down coolers, 301. During each check, the method next enters a sub-loop to test all racks, as defined by the decision 302b. Within the sub-loop, the method first checks the next untested combination to determine if a given rack has adequate cooling, 303. The combination checked and whether the cooling that results at the given rack will be inadequate is recorded, 305, for example in a computer memory or on a computer file. These checks are repeated, 301, 302b, 303, 305, until all combinations of shut down coolers are tested for each rack. Finally, the rack redundancy is identified as the number, less one, of coolers shut down in that combination having the smallest number of coolers shut down and which also has inadequate cooling, 307. Identification of the redundancy level, 307, can be done by searching the recorded information, by a process which sorts the data as the data is created and recorded, by a process which sorts the data after the data has been recorded, or by any other suitable process.
Enumerating all of these combinations is computationally expensive for large numbers of racks and cooler, and for each combination enumerated, an algebraic computation (involving one or more algebraic steps) of the resulting CI is required. If n is the number of coolers, then there are 2n combinations. For example, with two coolers, a first cooler and a second cooler, the 22=4 failure modes are: neither cooler failed, only the first cooler failed, only the second cooler failed, and both coolers failed. Thus, further aspects keep the number of algebraic steps required to a minimum, at least by minimizing the number of combinations enumerated for each rack.
According to one aspect minimizing the computational load, once one rack is determined to have inadequate cooling, the redundancy is reported out as follows. The room level rack redundancy, as well as the redundancy of the rack determined to have inadequate cooling, is the number, less one, of coolers shut down at the point of failure. All remaining racks are reported to have the same or better redundancy, i.e., the same or larger redundancy values.
As shown in FIG. 4, according to an embodiment of a more efficient method, 400, combinations are tested in a fixed order. First, all configurations with one shut down cooler are tested, followed by all double-cooler failure configurations, and so on. This logical ordering ensures that when a rack first fails to be adequately cooled, no additional configurations need be tested for that rack because, once a rack has failed at a given redundancy level, its redundancy level is known.
According to the method, 400, of this embodiment, an index, I, is incremented from 1 to a maximum possible number of shut down coolers, 401. If the index is less than the maximum, then the combinations having I coolers shut down are tested to determine if adequate cooling is available for all combinations of I coolers shut down, 403. The testing, 403, can proceed similarly to method 300, with the modification that all combinations of shut down coolers, 301, is limited to all combinations of I shut down coolers. If, during testing, 403, any combination of I coolers is found to produce inadequate cooling, then redundancy is identified to be N+(I−1), 405, according to standard redundancy notation. Testing is repeated for each incrementally larger index, I, value, up to the maximum, 401. If the maximum is reached, redundancy is identified as N+(I−1) or greater, 405.
According to an embodiment of a method, 500, shown in FIG. 5, the user can specify a desired level of redundancy. Only shutdowns up to the specified level of redundancy need be tested. For example, if a user wants an N+1 redundancy then only all of the single cooling unit shutdowns need be tested. Setting the index, I, 501, and performing the tests, 503, proceed similarly to corresponding elements, 401, 403, of method 400. The maximum index in this method, 500, is simply a number of shut down coolers in a desired test level, 501. If any failure is detected, 503, redundancy is below the test level, 505; whereas, if no failure is detected, 503, and the test level is reached, 501, then redundancy meets or exceeds the test level, 507.
The foregoing aspects often reduce the computation complexity to only a handful of algebraic calculator calls, especially if the user sets a low level of desired redundancy.
Implementation
Implementation is now described in connection with an exemplary embodiment. Implementation may include two parts: establishing the user's desired level of redundancy in a user interface provided for the purpose of selecting desired room properties and output of the tool's results in an output view of a user interface displaying the resulting room airflow.
Room Properties
According to one embodiment of a user interface, the cooling properties selections are displayed, as shown in FIG. 6. Among the parameters that a user can select is the desired cooling redundancy. The label next to the drop down list indicates “Desired cooling redundancy” and the user can select from the drop down list a desired cooling redundancy level to be tested for. A setting here does not guarantee a redundancy, just testing up to the user-specified level, as described in connection with FIG. 5.
The levels of redundancy, N, N+1, and N+2 shown are sufficient for most practical applications, but any level could be specified. Optionally, it is useful to suggest a redundancy level to the user based on any other inputs the user may have made that indicate the user's needs. A level of N+1 redundancy allows for adequate cooling under preventative maintenance or single cooler malfunctions. Redundancy at the N+2 level will mitigate a single cooler malfunction which occurs while preventive maintenance is being performed on another cooler, for example.
Airflow Room View
An embodiment of a user interface, 700, to display the results of a redundancy check is shown in FIG. 7.
The presentation of results of the redundancy check is kept efficient and uncluttered, so as to limit the clutter on the airflow view. An example of an airflow room view is shown in FIG. 7, where the desired redundancy is N+2. The interface, 700, includes a room layout, 701, showing the positions of racks, 703, and cooling equipment, 705, along with parameters related to each. The racks, 703, achieving the desired redundancy level are given one display characteristic, such as solid block color, while the racks with less than N+2 redundancies are given a different, distinguishing display characteristic, for example slightly grayed. The redundancy level achieved is also optionally indicated on the top of each rack, 703.
The actual redundancy calculations can optionally be displayed not on the airflow view, but in a mouse rollover. Then users can inspect racks further if they are grayed, particularly in embodiments which do not include the redundancy number on the rack image itself.
Coding
Preparing code for this tool is within the grasp of the skilled artisans upon reviewing the description, consisting essentially of user interface components, arrays and functions to test the different configurations and store the results.
One embodiment employs the following method to cycle through the combinations of on/off cooling units. The method is general enough to handle any number of coolers, but still test them in a particular order. As mentioned before, this ordering visits all combinations of one shutdown, then all combinations of two shutdowns, and so on.
The method is performed when seeking the next combination.
Algorithm Details
Let the leftmost cell of a vector of coolers be the “first” cell and the rightmost cell be the initial “last” cell, as shown in FIG. 8.
1. Starting from rightmost cell, examine the cell contents and move left until the first zero is located.

    
    
        a. If there are no zeroes in the vector, 801, load a zero into the leftmost cell, 802.
        b. Check whether the combination of coolers on (1's) and coolers off (0's) represented by the vector provides adequate cooling.
    
    


2. Check the cell to the right, 803, of the zero located, 802.

    
    
        a. If the cell checked contains a “1”, swap the located “0” with the adjacent “1”, effectively moving the located zero to the right, 804.
        b. Otherwise, if the last position located has been reached, perform the method on the remaining cells. Now, last=last−1.
    
    


3. If a number of zeros, for example M, are grouped at the end of the array, with all “1's” to the left, all shutdowns of the current (N+M) redundancy level have been checked. If the next level of redundancy is to be tested, move all M zeros to the leftmost positions, add another 0, 805, in the next available cell and repeat from 1, so that the configurations with M+1 shutdowns are tested.
This method ensures a smooth transition between the redundancy levels. It can be stopped as soon as a failure of cooling is detected.
Computing a CRI
As mentioned above, it is also possible to use the Cooling Reliability Index (CRI) in addition to or in lieu of the N+I−style metric. In this case, availability (percentage of uptime, e.g. 99.999%; or probability of availability, e.g. 0.99999) data for the cooling units is required. If this data is available, the various failure modes can be numerically simulated to determine the resulting aggregate availability of cooling at each rack location as a percentage of uptime (0-100%) or as a probability (0.0-1.0).
As above, each failure mode is simulated to assess whether cooling is adequate or not under the particular combination of failed coolers. In addition, the aggregate value, a, availability of adequate cooling for the rack location is computed from the combinations of coolers simulated and their individual availabilities. The aggregate value, “availability at each rack location,” a, is then converted to a CRI number—a value between 0% and 100%.
This approach is more sophisticated than the N+I−style calculation because the actual cooler performance is taken into consideration. For example, if all coolers were 100% reliable the CRI of nearby racks (which have adequate primary cooling to begin with) would be 100% and it would be possible to meet any cooling availability goal without any redundant coolers.
While many functions can relate a value denoted CRI to availability of cooling at a rack location in a useful way, the following function defining CRI in terms of availability of cooling at a rack location, a, has been found to be particularly useful as a predictor of redundancy:




  CRI
  =
  
    
      {
      
        
          
            
              
                (
                
                  2
                  3
                
                )
              
              ⁢
              a
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              <
              0.9
            
          
        
        
          
            
              
                -
                
                  
                    log
                    ⁡
                    
                      (
                      
                        1
                        -
                        a
                      
                      )
                    
                  
                  10
                
              
              +
              
                1
                2
              
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                0.9
              
              ≤
              a
              ≤
              0.99999
            
          
        
        
          
            1
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              >
              0.99999
            
          
        
      
      }
    
    .
  




This definition provides a convenient conversion of “the number of nines” in the decimal place of the availability, a, to an index which varies between 0 and 1. For example, a=0.9 is “one nine” and the corresponding CRI value is 0.6. Similarly, “three nines” (a=0.999) is equivalent to CRI=0.8 and “five nines” (a=0.99999) is equivalent to CRI=100%. Thus in the range of a=0.9 to 0.99999, 0.1 is added to the cooling reliability index for every “additional nine” of availability.
Uses
Aspects of embodiments may be practiced, for example, to perform rack-by-rack redundancy calculations in any suitable data center design and management software.
Each of process 300, 400 and 500 depicts one particular sequence of acts in a particular embodiment. The acts included in each of these processes may be performed by, or using, one or more computer systems specially configured as discussed herein. Thus the acts may be conducted by external entities, such as users or separate computer systems, by internal elements of a system or by a combination of internal elements and external entities. Some acts are optional and, as such, may be omitted in accord with one or more embodiments. Additionally, the order of acts can be altered, or other acts can be added, without departing from the scope of the present invention. In at least some embodiments, the acts have direct, tangible and useful effects on one or more computer systems, such as storing data in a database or providing information to external entities.
Any references to front and back, left and right, top and bottom, and upper and lower are intended for convenience of description, not to limit the present systems and methods or their components to any one positional or spatial orientation.
Any references to embodiments or elements or acts of the systems and methods herein referred to in the singular may also embrace embodiments including a plurality of these elements, and any references in plural to any embodiment or element or act herein may also embrace embodiments including only a single element. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements.
Any embodiment disclosed herein may be combined with any other embodiment, and references to “an embodiment,” “some embodiments,” “an alternate embodiment,” “various embodiments,” “one embodiment,” “at least one embodiment,” “this and other embodiments” or the like are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment. Such terms as used herein are not necessarily all referring to the same embodiment. Any embodiment may be combined with any other embodiment in any manner consistent with the aspects disclosed herein. References to “or” may be construed as inclusive so that any terms described using “or” may indicate any of a single, more than one, and all of the described terms.
Where technical features in the drawings, detailed description or any claim are followed by references signs, the reference signs have been included for the sole purpose of increasing the intelligibility of the drawings, detailed description, and claims. Accordingly, neither the reference signs nor their absence have any limiting effect on the scope of any claim elements.
Having now described some illustrative aspects of the invention, it should be apparent to those skilled in the art that the foregoing is merely illustrative and not limiting, having been presented by way of example only. Similarly, aspects of the present invention may be used to achieve other objectives including allowing users to design facilities other than data centers which may benefit from effective and efficient cooling systems. For example, according to one embodiment, users may design food preparation facilities, food storage facilities, manufacturing facilities and other facilities that may benefit from assured cooling redundancy levels. Numerous modifications and other illustrative embodiments are within the scope of one of ordinary skill in the art and are contemplated as falling within the scope of the invention. In particular, although many of the examples presented herein involve specific combinations of method acts or system elements, it should be understood that those acts and those elements may be combined in other ways to accomplish the same objectives.

## Claims

1. A computer-implemented method of determining cooling redundancy information, comprising:
modeling in a computer at least one location to be cooled by a plurality of coolers, wherein the at least one location includes at least one of an equipment rack, a cluster of equipment racks, and a room of equipment racks;
iteratively modeling one or more cooler failure scenarios until a model of a cooler failure scenario of the one or more cooler failure scenarios indicates inadequate cooling at the at least one location, wherein iteratively modeling the one or more cooler failure scenarios includes calculating whether adequate cooling is available at the at least one location by calculating cooler failure scenarios from a least number of coolers shut down to a most number of coolers shut down and terminating the calculating of cooler failure scenarios and recording when a number of coolers shut down in a cooler failure scenario results in inadequate cooling, and wherein each cooler failure scenario of the one or more cooler failure scenarios includes at least one shut down cooler affecting the at least one location;
recording information identifying each modeled cooler failure scenario along with whether each modeled cooler failure scenario results in adequate cooling;
identifying the cooling redundancy information as one less than the number of coolers shut down in that modeled cooler failure scenario having the smallest number of coolers shut down and also having inadequate cooling available;
computing an aggregate availability, a, of adequate cooling based on combinations of coolers included in each cooler failure scenario of the recorded information
identifying the cooling redundancy information as a Cooling Redundancy Index (CRI), the CRI a function of the aggregate availability, a;
calculating the cooling redundancy information as the CRI; and
configuring data center equipment based on the CRI.

2. The method of claim 1, further comprising aggregating the identified cooling redundancy information at plural locations to determine cooling redundancy information for a site including the plural locations.

3. The method of claim 2, wherein aggregating further comprises selecting as the cooling redundancy information for the site, a smallest redundancy identified.

4. The method of claim 1, further comprising computing the CRI as




  CRI
  =
  
    
      {
      
        
          
            
              
                (
                
                  2
                  3
                
                )
              
              ⁢
              a
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              <
              0.9
            
          
        
        
          
            
              
                -
                
                  
                    log
                    ⁡
                    
                      (
                      
                        1
                        -
                        a
                      
                      )
                    
                  
                  10
                
              
              +
              
                1
                2
              
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                0.9
              
              ≤
              a
              ≤
              0.99999
            
          
        
        
          
            1
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              >
              0.99999
            
          
        
      
      }
    
    .

5. The method of claim 1, further comprising:
setting a desired test level of redundancy,
wherein iteratively modeling the one or more cooler failure scenarios includes iteratively modeling one or more cooler failure scenarios until either a model of a cooler failure scenario of the one or more cooler failure scenarios indicates inadequate cooling at the at least one location or the test level of redundancy is reached; and wherein identifying comprises identifying as the cooling redundancy information, whether the test level was reached.

6. The method of claim 1, further comprising iteratively performing the method at each of a plurality of locations in an environment.

7. The method of claim 1, further comprising iteratively modeling and recording at each of a plurality of locations in an environment.

8. A non-transitory computer readable medium having stored thereon sequences of instruction including instructions for determining cooling redundancy information that will cause a processor to:
model in a computer at least one location to be cooled by a plurality of coolers, wherein the at least one location includes at least one of an equipment rack, a cluster of equipment racks, and a room of equipment racks;
iteratively model one or more cooler failure scenarios until a model of a cooler failure scenario of the one or more cooler failure scenarios indicates inadequate cooling at the at least one location, wherein each model includes a calculation indicating whether adequate cooling is available at the at least one location by calculating cooler failure scenarios from a least number of coolers shut down to a most number of coolers shut down and to terminate the calculating and recording when a number of coolers shut down in a cooler failure scenario results in inadequate cooling, and wherein each cooler failure scenario of the one or more cooler failure scenarios includes at least one shut down cooler affecting the at least one location;
record information identifying each modeled cooler failure scenario along with whether each modeled cooler failure scenario results in adequate cooling;
identify the cooling redundancy information as one less than the number of coolers shut down in that modeled cooler failure scenario having the smallest number of coolers shut down and also having inadequate cooling available;
compute an aggregate availability, a, of adequate cooling based on combinations of coolers included in each cooler failure scenario of the recorded information; and
identify the cooling redundancy information as a Cooling Redundancy Index (CRI), the CRI a function of the aggregate availability, a;
calculate the cooling redundancy information as the CRI; and
configure data center equipment based on the CRI.

9. The non-transitory computer readable medium of claim 8, further having stored thereon sequences of instruction including instructions that will cause a processor to aggregate the identified cooling redundancy information at plural locations to determine cooling redundancy information for a site including the plural locations.

10. The non-transitory computer readable medium of claim 9, wherein aggregating the identified cooling redundancy at plural locations further comprises selecting as the cooling redundancy information for the site, a smallest redundancy identified.

11. The non-transitory computer readable medium of claim 8, further having stored thereon sequences of instruction including instructions that will cause a processor to compute the CRI as




  CRI
  =
  
    
      {
      
        
          
            
              
                (
                
                  2
                  3
                
                )
              
              ⁢
              a
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              <
              0.9
            
          
        
        
          
            
              
                -
                
                  
                    log
                    ⁡
                    
                      (
                      
                        1
                        -
                        a
                      
                      )
                    
                  
                  10
                
              
              +
              
                1
                2
              
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                0.9
              
              ≤
              a
              ≤
              0.99999
            
          
        
        
          
            1
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              >
              0.99999
            
          
        
      
      }
    
    .

12. The non-transitory computer readable medium of claim 8, further having stored thereon sequences of instruction including instructions that will cause a processor to:
set a desired test level of redundancy,
wherein to iteratively model one or more cooler failure scenarios includes iteratively modeling one or more cooler failure scenarios until either a model of a cooler failure scenario of the one or more cooler failure scenarios indicates inadequate cooling at the at least one location or the test level of redundancy is reached, wherein identifying comprises identifying as the cooling redundancy information, whether the test level was reached.

13. The non-transitory computer readable medium of claim 8, further having stored thereon sequences of instruction including instructions that will cause a processor to iteratively perform the method at each of a plurality of locations in an environment.

14. The non-transitory computer readable medium of claim 8, further having stored thereon sequences of instruction including instructions that will cause a processor to iteratively model and record at each of a plurality of locations in an environment.

15. A system for determining cooling redundancy information, comprising:
a computer memory holding a data structure model of at least one location cooled by a plurality of coolers, wherein the at least one location includes at least one of an equipment rack, a cluster of equipment racks, and a room of equipment racks;
a display through which a user views a representation of the model; and
a computer processor which accesses the computer memory and which further executes a sequence of instructions which cause the processor to:
iteratively model one or more cooler failure scenarios until a model of a cooler failure scenario of the one or more cooler failure scenarios indicates inadequate cooling at the at least one location, wherein each model includes a calculation indicating whether adequate cooling is available at the at least one location by calculating cooler failure scenarios from a least number of coolers shut down to a most number of coolers shut down and terminating the calculating and recording when a number of coolers shut down in a cooler failure scenario results in inadequate cooling, and wherein each cooler failure scenario of the one or more cooler failure scenarios includes at least one shut down cooler affecting the at least one location;
record in at least one computer memory location information identifying each modeled cooler failure scenario along with whether each modeled cooler failure scenario results in adequate cooling;
identify the cooling redundancy information as one less than the number of coolers shut down in that modeled cooler failure scenario having the smallest number of coolers shut down and also having inadequate cooling available;
compute an aggregate availability, a, of adequate cooling based on combinations of coolers included in each cooler failure scenario of the recorded information;
identify the cooling redundancy information as a Cooling Redundancy Index (CRI), the CRI a function of the aggregate availability, a;
calculate the cooling redundancy information as the CRI;
display to a user the identified cooling redundancy information; and
configure data center equipment based on the CRI.

16. The system of claim 15, wherein the sequence of instructions further comprise aggregating the identified cooling redundancy information at plural locations to determine cooling redundancy information for a site including the plural locations.

17. The system of claim 16, wherein aggregating further comprises selecting as the cooling redundancy information for the site, a smallest redundancy identified.

18. The system of claim 15, wherein the sequence of instructions further comprise computing the CRI as




  CRI
  =
  
    
      {
      
        
          
            
              
                (
                
                  2
                  3
                
                )
              
              ⁢
              a
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              <
              0.9
            
          
        
        
          
            
              
                -
                
                  
                    log
                    ⁡
                    
                      (
                      
                        1
                        -
                        a
                      
                      )
                    
                  
                  10
                
              
              +
              
                1
                2
              
            
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                0.9
              
              ≤
              a
              ≤
              0.99999
            
          
        
        
          
            1
          
          
            
              
                for
                ⁢
                
                  
                
                ⁢
                a
              
              >
              0.99999
            
          
        
      
      }
    
    .

19. The system of claim 15, further comprising:
setting a desired test level of redundancy,
wherein iteratively modeling the one or more cooler failure scenarios includes iteratively modeling one or more cooler failure scenarios until either a model of a cooler failure scenario of the one or more cooler failure scenarios indicates inadequate cooling at the at least one location or the test level of redundancy is reached; and wherein identifying comprises identifying as the cooling redundancy information, whether the test level was reached.

20. The system of claim 15, wherein the sequence of instructions further comprise iteratively performing the sequence of instructions at each of a plurality of locations in an environment.

21. The system of claim 15, wherein the sequence of instructions further comprise iteratively modeling and recording at each of a plurality of locations in an environment.