Desktop Grids Entropia Desktop Grid Commercial Desktop Grid System, designed for enterprise computing Windows-only system Out of business BOINC Berkeley Open Infrastructure for Network Computing Example of a desktop grid and volunteer computing Open source – many clients (Linux, Windows, MacOS). Servers mostly for *nix systems, some Windows servers mostly experimental. SZTAKI Grid Outgrowth of the BOINC project Adds support for connecting local grids into a hierarchy of grids Desktop Grids Digipede C# based grid system. Windows only. Closed source Desktop Grids Why desktop grids? Power $550: AMD Triple Core, 4GB memory, 320 GB hard drive $800: Intel Quad core processor, 5GB memory, 640 GB hard drive $1000: Core2 Quad Processor, 6GB memory, 750 GB hard drive Computers are mostly idle Return on investment Companies have already spent the money on desktops. No need for expensive new hardware if you can harness the power of the desktops Numbers of desktops worldwide expected to exceed 1 billion by 2010 Desktop Grids Requirements for desktop grid systems Efficient: Harvest most of the unused cycles on a computer. Robust: Jobs must complete with predictable performance, masking underlying resouce failures. Must tolerate job, machine, and network failures. Secure: Protect both the integrity of of the distributed application as well as the integrity of the physical node (no tampering with the user's registry, modifying user's data, etc) Scalable: Must scale to 1000s, 10,000s, 100,000s of machines. Not much additional administration should be required. Must scale up and down, depending on who's on and who's off the network. Manageable: Can't depends on dozens of admins to manage the grid. Unobtrusive: The desktop user can't be aware that their computer is also being used as a node in a desktop grid. The primary use of the computer is for spreadsheet, word docs, email, internet, etc Desktop Grids Easy to integrate applications: Must support applications developed with varied programming languages, models,and tools, all with minimal development effort. This includes binaryonly applications where no source code is available – can not require recompilation of code Must see the same improvements in throughput as you would see on a cluster or supercomputer. Desktop Grids Entropia grid architecture Physical Node Management Gathers statistics on the machine: CPU speed, memory, disk size Controls applications that run in the Entropia Virtual Machine Resource Scheduling Matches units of computation with the appropriate resource Must handle failure rates that are greater than in traditional clustered systems Desktop Grids Job Management The end user submits a single logical job. The job manager decomposes the logical job into individual sub-jobs. It provides access to the status of subjobs and aggregates the results of the sub-jobs Desktop Grids The end-user submits an application binary, along with any dll's required, registers any data sets that will be used and Visual Basic scripts that will be used to control sub-job execution. Desktop Grids Sub-job scheduler Maintains a list of clients on which it is allowed to run jobs Client information includes attributes of the physical nodes, whether they're connected, and status Maintains several priority queues for sub-jobs Each scheduler manages jobs for 1000s of clients Reports failed sub-jobs to the Job Manager Helps to cache executable and data files Node Manager Centralized interface to manage all clients on the grid. Allows administrators to monitor, add, remove, stop, and restart clients. Also monitors the status of each client – issues, how much work has been performed. Desktop Grids Desktop Client Runs sub-jobs on the machine at low priority Pauses jobs if desktop use is high. Makes sure that jobs do not get out of control. Kills any out-of-control jobs Mediates access to system resources – file system, registry, and gui. This forms the basis for the sandboxed execution environment Desktop Grids Entropia Virtual Machine Desktop Controller is assigned a sub-job and monitors it for memory, CPU, I/O usage, number of processes and threads Desktop Grids Harvest unused cycles. All process run at the lowest priority. Resource limits are configurable Single Desktop Controller on each machine VM Portal Thread Thread created when the process is started. It is hidden from the process Receives a heart beat from the Desktop Controller. If this is lost, the thread terminates itself. This communication path also controls the pausing and resuming of jobs Desktop Grids Sandbox Layer Desktop Grids Sandbox layer (continued) Works by rewriting the import table of the binary application so that vm.dll is the first dll loaded at runtime When dll_main from vm.dll runs, it modifies the binary and any other dll files to intercept system calls Some of the Windows APIs (file system, registry, and network) are mediated. Others (mouse, graphical user interface, shutting down or logging off the current user) are disabled. Desktop Grids Device Driver Mediation Installed as part of the EVM by the administrator. Software interrupt handler - replaces entries in the jump table with pointers to the EVM functions for certain system calls (eg File I/O) Desktop Conroller shares with the device driver all of the processes running under the EVM - so the driver knows which process to intercept. Small amount of overhead for those system calls that are intercepted. But not all calls are intercepted - File I/O, process/thread creation, registry access. For example File I/O, but not read/write Also protects the EVM - non-sandboxed applications can't look inside the Entropia directory Desktop Grids Self-modifying code is not permitted to execute in the EVM The binary’s virtual address space is locked down. The code portions of the address space are set as “executable” and “non-writable”. Then the rest of the virtual address space has their permissions set as “nonexecutable”. One exception: the Java Virtual Machine, which uses a just-in-time compiler. Desktop Grids Sandbox layer (continued) File System virtualization File I/O routines are intercepted and virtualized to redirect and restrict a subjob’s access to the filesystem For example, a subjob believes that it is accessing a file in the directory C:\Program Files\ when in fact it is accessing a sandbox directory (e.g., C:\Entropia\root\C:\Program Files\). The subjob only sees C:\Program Files\. Certain existing directories (e.g. C:\WINNT\System\) on the desktop can be accessed by subjobs as read-only Registry Virualization Certain parts of the registry are marked as read only, and the rest marked as not accessible All writes to the registry are redirected. Updates to a restricted registry entry will result in a copy on write. Desktop Grids Sandboxing (cont.) Validate binaries for execution A cryptographic checksum of each submitted binary file is created. These values are used to verify that the files to execute have not changed since it was patched. A configuration file containing the list of sandboxed files and their checksums is also sent to the client to provide file validation. The configuration file is encrypted during subjob submission. It is stored on disk in encrypted form, and the key is securely communicated to the EVM. Before any application binary or dll file can be invoked the checksum is first validated. Intercept the CreateProcess call. A sandboxed application is allowed to launch another application only if (a) it is registered with the EVM in the configuration file and (b) its checksum matches. Desktop Grids Prevent subjob processes from opening with write permissions on any binary listed in the configuration file Desktop Grids Application Security – protecting the jobs and data from the desktop user To start, desktop users must not have administrative privileges, and the EVM and the subjob processes are run under a special Entropia user account. This prevents other users from being able to look at the data of the EVM and running subjob processes. The Entropia sandbox keeps all data files encrypted on disk, so that their contents are not accessible even if the disk is compromised. In addition, the sandbox automatically monitors and checks the integrity of a grid application’s binary, input and result files with an encrypted checksum file. If any tampering is found, the subjob is scheduled on another client. Desktop Grids BOINC Desktop Grid Architecture BOINC Server BOINC Client Desktop Grids The server (http://boinc.berkeley.edu/trac/wiki/ServerIntro) Apache Web Server MySQL database PHP Python The scheduler CGI program handles requests from clients, receiving completed results and sending new work to compute Daemons: Feeder: Loads tasks from the database for the scheduler Transitioner: Handles state transitions of workunits and results. Generates results from workunits when they are first created. Validator: Compares results from work units (User-supplied daemon. May use fuzzy comparison in cases of floating-point results where there might be differences in precision.) If the results are valid, creates the “canonical” results. Assimilator: Processes the canonical result File deleter: Deletes output files Desktop Grids BOINC Server Features Homogeneous redundancy (sending workunits only to computers of the same platform -- e.g.: Win XP SP2 only.) Workunit trickling (sending information to the server before the workunit completes) Locality scheduling (sending workunits to computers that already have the necessary files and creating work on demand) Work distribution based on host parameters (workunits requiring 512 MB of RAM, for example, will only be sent to hosts having at least that much RAM) Servers can be clustered for high demand applications. One server can handle ~1000 clients Sends redundant workunits to various clients to aid in validation of results. Desktop Grids BOINC Projects The BOINC runtime library is implemented in C++ and is easiest to use from C/C++ programs. For this approach, the software must be recompiled with the BOINC API for each supported platform (Linux, Windows, MacOS) Or, for legacy applications where source code is not available or for applications written in other languages, BOINC provides a wrapper which acts as a main program, managing communication with the BOINC client, and running the application as a subprocess. Digitally sign the application. (Optional) Register with an Account Manager, such as Grid Republic or BAM (BOINCStats Account Manager). This makes it easier for users to find a project, sign up for it, and manage their account using the BOINC desktop client. Desktop Grids BOINC Desktop Application Desktop Grids BOINC Desktop Application Runs with the same privileges as the user who started the applications. Don't run as an administrator! The only other security provided is from the digital signatures of the downloaded applications. Data may also be encrypted, but users may still be able to view unencrypted data in a debugger Allows users to sign up easily for new projects. Lets you configure your machine for the amount of workload and the scheduling of the workload, CPU, memory, and disk use. Lets you view various statistics about the projects running on your machine. Desktop Grids Desktop Grid Applications The applications exhibit large degrees of parallelism (thousands to even hundreds of millions) with little or no coupling May lead to the reevaluation of many existing algorithms to find novel uncoupled approaches GIMPS (Great Internet Mersenne Prime Search): First application ported to the Entropia Desktop Grid Virtual Screening: The testing of hundreds of thousands (to millions) of candidate drug molecules to see if they alter the activity of a target protein by evaluating the binding affinity of the test molecule to a specific place on a protein in a process called docking. The amount of data required for each molecular evaluation is small - basically the atomic coordinates of the molecules - and the essential results are even smaller, a binding score. Desktop Grids Desktop Grid Applications (cont) Sequence Analysis: DNA or protein sequence analysis applications, including the BLAST, HMMER, and versions of Smith– Waterman programs. One sequence or set of sequences is compared to another sequence or set of sequences and evaluated for similarity. The sequence sizes vary, but each comparison is independent so that sets of millions of sequences (gigabytes) can be partitioned into thousands of slices. Each compute client receives a set of sequences to compare and the size of the database, enabling it to calculate expectation values properly for the final composite result. Molecular Properties and Structure: These programs are deployed in a data parallel mode similar to docking, where the data-parallelism arises from independent molecule evaluations. Desktop Grids Desktop Grid Applications (cont) Financial Risk Management: Involves the use of Monte Carlo methods to evaluate a wide range of possible outcomes The number needed to achieve seed independence is about 10,000. Further increases in the number of samples as well as increased model complexity can increase the accuracy of results. Each sample simulation is independent, and can be executed on a distinct processors Desktop Grids Desktop Grid Performance Entropia Desktop Grids Desktop Grid Performance SZTAKI Grid: Running averages from the previous 48 hours 3488 Hosts 983 Gflops avg. 3.4 Tflops peak (http://szdg.lpds.sztaki.hu/szdg/) Desktop Grids Desktop Grid Performance BONIC (The Computational and Storage Potential of Volunteer Computing David P. Anderson1 and Gilles Fedak2) The BOINC client executing the Whetstone and Dhrystone benchmarks..