Parallel Build Visualization Diagnosing and Troubleshooting Common Pitfalls of Parallel Builds

Size: px
Start display at page:

Download "Parallel Build Visualization Diagnosing and Troubleshooting Common Pitfalls of Parallel Builds"

Transcription

1 Parallel Build Visualization Diagnosing and Troubleshooting Common Pitfalls of Parallel Builds John Graham-Cumming Chief Scientist Electric Cloud, Inc. February, 2006

2 Contents Parallel Build Visualization... 3 Background: The Serial Assumption... 4 Background: Amdahl's Law... 5 Diagnosis and Repair of Common Parallel Build Mistakes... 9 Parallel Problem #1: The shared debugging log file... 9 Parallel Problem #2: The very long link Parallel Problem #3: The sub-make that blocks progress Parallel Problem #4: The slow start Parallel Problem #5: Shared intermediate files Conclusion About Electric Cloud Parallel Build Visualization Page 2 Electric Cloud, Inc. All rights reserved.

3 Parallel Build Visualization Software builds are widely regarded as the next opportunity for real productivity improvements in the software development lifecycle. Code complexity has increased for virtually any sort of application, which typically contributes to longer and longer software builds. At the same time, time-to-market pressures will continue to increase in competitive markets, which means that long builds are no longer tolerable. Many build teams are turning to parallel builds as the solution to this problem. Hardware has become much cheaper and software to parallelize builds (both commercial and open source) is available. So as build managers come under pressure to speed up builds, the simplest response is to build a cluster of machines and parallelize the build. But in doing so the build manager creates a build debugging problem. Parallel builds almost never provide the theoretical maximum speedup possible, and finding out why is hard. It's one thing to attempt to understand the performance of a software build run serially on a single processor; it's quite another when the build is run in parallel. To rapidly understand the performance bottlenecks in a parallel build requires flexible visualization tools; looking through log files with existing text-based tools is time-consuming and next-to-impossible for a real build. In this paper, we will identify several of the most common performance problems with parallel builds (in this case, Make-based builds), as well as techniques to debug them. To illustrate these points, we will use ElectricInsight, a new graphical build visualization tool that displays the innards of a parallel build in graphical form and shows the relationships between build elements (jobs, rules, etc.) as well as the complex dependencies among them. This is key to understanding how to effectively debug and optimize a parallel build. Parallel Build Visualization Page 3 Electric Cloud, Inc. All rights reserved.

4 Background: The Serial Assumption One common problem in parallelizing a build is that most existing builds have been implemented with the Serial Assumption: the expectation that jobs are going to be handled one at a time in some well defined sequential order. Here's an example Makefile to illustrate the serial assumption (foo-header and bar-header already exist before running any builds): all: foo bar foo: foo-header build foo bar: bar-header bar1 bar2 build bar bar1: build bar1 bar2: build bar2 A full build using this Makefile will produce the following output: build foo build bar1 build bar2 build bar And it will always produce that output. Internally Make builds a tree of the work to be done and then proceeds to walk the tree in a depth-first manner: foo foo-header all bar-header bar bar1 bar2 The tree is built starting from the first target in the Makefile (in this case all) and then working from left-to-right across the prerequisites for each target. Hence the first target added to the tree after all is foo (and then its prerequisite foo-header). This left-to-right building of the tree and depth-first execution is the Serial Assumption. When the same build is run in parallel only the actual dependencies matter, the order in which the tree was built or walked is irrelevant. For example, there's no reason why bar2 can't be built before bar1 and no reason why either of them can't be built before foo. As long as all dependencies are specified explicitly in the Makefile, the Serial Assumption poses no problems. Unfortunately, it's so ingrained in the users of Make that, in practice, most Makefiles have fallen into assuming at least the left-to-right build order. If those Makefiles actually rely on that order, or there are side effects within rules, the parallel build will either be slow or break. Parallel Build Visualization Page 4 Electric Cloud, Inc. All rights reserved.

5 Background: Amdahl's Law The second problem build managers face in parallelizing builds is over-inflated expectations. It's common, but incorrect, to believe that taking a build that lasts H hours and running it on P processors will result in a build that is roughly H/P hours long. This is a common expectation because builds naturally contain lots of small pieces of work (compiles, etc.) that are independent of each other; in the example in the previous section bar1, bar2 and foo were all independent and could run on three processors in parallel. For real builds the number of independent build steps is much higher allowing more processors to be used. Figure 1 shows a real serial build visualized using ElectricInsight. The blue bars are individual build steps (most of which are very short; the areas of black are actually hundreds of tiny jobs steps packed together) with a few large steps through the build. Figure 1: A serial build Figure 2 shows an idealized parallel build visualized with ElectricInsight. The build has been spread evenly across 10 processors running in a cluster. It uses the cluster at close to 100% utilization on all cluster nodes and hence the speed up will be approximately H/P (in this case P is 10 meaning the build was sped up almost 10x). Parallel Build Visualization Page 5 Electric Cloud, Inc. All rights reserved.

6 Figure 2: An evenly spread parallel build Reality is usually quite different. To determine how much parallelism is possible in a build it's necessary to identify the longest part of the build that cannot be parallelized. The simplest example is a single long step, such as a long link: by definition this single step cannot be decomposed into smaller pieces and run in parallel. The build cannot run faster than that single step requires. In Figure 1 there's a long job step near the beginning; highlighting it in ElectricInsight reveals that it lasts 639 seconds. The total build time is also shown in the ElectricInsight display at 4380 seconds. The statistics for the long job step and total time can be seen in Figure 3. Hence, no matter how many processors are used to parallelize the build it can never be shorter than 639 seconds. That means that the greatest speedup offered by parallelizing this build is 4380/639 or 6.9x. And that's probably an overestimate because the longest job step may be preceded in the serial build by jobs on which it depends, making the longest part of the build greater than 639 seconds and hence the maximum speedup even smaller. Parallel Build Visualization Page 6 Electric Cloud, Inc. All rights reserved.

7 Figure 3: A long job step The maximum possible speedup in any parallel application is governed by Amdahl's Law, which states that if F is the fraction of the application that cannot be parallelized (in a build that is the longest serialized part of the build) and P processors are used than the maximum speedup possible is 1 1 F F P Figure 4: Amdahl's Law In the example above, F is 639/4380 or 0.15, 1 F is Graphing the number of processors against the speedup shows the effect of Amdahl's law. Figure 5 shows Amdahl's Law applied to the build in Figure 1 assuming that the longest serial part is 639 seconds. It's clear that the speedup tails off as the number of nodes is added to the cluster and that somewhere between 10 and 20 nodes are worth investing in to parallelize this particular build. Parallel Build Visualization Page 7 Electric Cloud, Inc. All rights reserved.

8 Figure 5: Amdahl's Law with F = 0.15 Having covered the theoretical background, let's now take a look at some specific example problems. Parallel Build Visualization Page 8 Electric Cloud, Inc. All rights reserved.

9 Diagnosis and Repair of Common Parallel Build Mistakes Parallel Problem #1: The shared debugging log file A common technique in Make-based projects is to write the output of each rule to a log file that can be examined in the event that the build fails. For example, the rule to build an object file might look something like this: LOG_FILE := error.log.phony: all all: foo.o %.o: -c -Wall -Werror -o $@ $< &> $(LOG_FILE) In the event that a particular compilation fails the $(LOG_FILE) will contain just the output from the specific step that failed. That's handy because Make's output can be difficult to interpret in the event of a failure. If this rule was used to build foo.o from foo.c the $(LOG_FILE) (which was set to error.log in the example above) might contain the following if a compilation error occurred: foo.c: In function `main': foo.c:6: warning: control reaches end of non-void function This is obviously very useful when trying to diagnose and correct a build failure. More complex Makefiles might output additional information to the log file to make the debugging even easier. However, this style of Makefile completely breaks when parallelized. Since every compilation will write to the same file (and each compilation truncates the file to start with) a parallel build system will either completely serialize the compilations to ensure that no two rules write to the same file at the same time (in which case there's no difference between a parallel and a serial build) or the build system allows the simultaneous writes and so that content of error.log is unpredictable in the best case it would contain the complete error information from a single error in the build; in the worst case, the contents could be completely corrupted. In ElectricInsight a completely serialized build looks the same as a serial build (see Figure 3 for example), if only part of the build is serialized by a log file then part of the build may execute in parallel and part in serial order (see Figure 6). Parallel Build Visualization Page 9 Electric Cloud, Inc. All rights reserved.

10 Figure 6: A parallel build with a long stretch of serialization To solve this problem, the shared log file needs to be removed. Either unique log file names for each rule should be used, or the log file should be removed entirely. To use unique log file names, we could use $@-$(LOG_FILE) instead of $(LOG_FILE). The error log when building foo.o would be foo.o-error.log. These uniquely named log files could be deleted automatically if the command is successful, to avoid littering the build output. For example, the Makefile could be rewritten: LOG_FILE := error.log UNIQUE = $@-$(LOG_FILE) all: foo.o %.o: -c -Wall -Werror -o $@ $< &> -f $(UNIQUE) The log file only gets deleted if the gcc runs successfully; in the event of a failure a single log file will be found with the relevant compiler output (in this case foo.o-error.log). Eliminating use of the log file is even easier. At first this suggestion may seem contradictory to the earlier assertion that Make's output is hard to interpret in case of failures, but if you have a powerful build analysis tool, this approach becomes very practical. ElectricInsight makes it easy to see the output of a failed job, so that debugging log files are made unnecessary. A failed job shows up in the ElectricInsight UI; clicking on the job brings up detailed information about the job that failed, and all its output. Parallel Build Visualization Page 10 Electric Cloud, Inc. All rights reserved.

11 ElectricInsight makes it easy to see the output of a failed rule such that log files are often unnecessary. A failed rule shows up in the ElectricInsight UI and clicking on the job brings up detailed information about the job that failed, and all its output. Figure 7 shows a failed build with the final, failing job highlighted. Something went wrong while building coretools.ocx. Figure 7: A failure viewed in ElectricInsight Clicking on the failing job brings up ElectricInsight's Job Details window that shows the command executed and the way in which it failed. Other information points to the specific Makefile and line where the failing rule was defined (in this case in Makefile at line 8463). Figure 8: The error output for coretools.ocx Parallel Problem #2: The very long link Another common problem with parallel builds is that a final job step, often a link, consumes Parallel Build Visualization Page 11 Electric Cloud, Inc. All rights reserved.

12 a large percentage of the overall build time. Because the link can only happen after the objects have been created, and because it cannot be parallelized, the link limits the speedup possible with parallelization. Figure 9 shows a parallel build with a final long link step that can utilize only a single node in the parallel build cluster. Figure 9: A long link If the final link is significantly limiting the speedup possible through parallelization, there are a number of possible remedies. Some platforms have linkers that can perform incremental (instead of complete) links. The linker is able to take a partly linked binary and perform partial linking (for example, linking in a single library) before writing a new partially linked binary. By breaking the link up into a number of partial links, the build system will be able to link in parallel with only a small, final link needed to create the complete binary. On systems with no incremental linker, the simplest remedy may be to upgrade the system doing the link. By targeting the link to a specific node in the build cluster that has additional memory and a fast disk the link time may be significantly reduced. Parallel Problem #3: The sub-make that blocks progress Most build systems use the 'recursive Make' style. A top-level Makefile executes Make in a Parallel Build Visualization Page 12 Electric Cloud, Inc. All rights reserved.

13 large number of subdirectories. Each subdirectory is handled by an invocation of Make which reads that directory's Makefile and executes the jobs described by it. Commonly the recursive Make system will change into each subdirectory in turn and execute Make. This can cause non-optimal use of the build cluster. It is unlikely that the subdirectories have to be built in this serial order and doing so prevents a parallel build system from finding the maximum number of jobs to work on. By limiting the number of jobs, the build cluster may be under utilized. For example, Figure 10 shows a recursive Make system where the cluster is not fully utilized for a period. That occurred because one of the subdirectories did not have enough parallelism in its Makefile to fully utilize the cluster. Figure 10: Sub-Make underutilization Electric Cloud's ElectricAccelerator product automatically fixes this problem without Makefile changes by examining the structure of every sub-make and merging the job tree for each sub-make into a single large tree. This large tree contains all the available parallelism across the subdirectories and hence ElectricAccelerator is able to unlock the maximum amount of parallelism and keep the build cluster fully utilized. And ElectricAccelerator's Electric File System ensures that the build results are correct every time. Other parallel build systems (e.g. GNU Make's -j option) will require rewriting the Makefile structure to either remove recursive Makes completely, or allow parallel execution of the sub-makes. Achieving either of these goals can be quite difficult, because you must ensure Parallel Build Visualization Page 13 Electric Cloud, Inc. All rights reserved.

14 that no dependency information is missing. It's common for a Makefile s author to have assumed the serial ordering implicit in the walk from subdirectory to subdirectory; when the same build system is parallelized it is possible that the build will break or produce incorrect results unless care is taken to ensure that dependencies between subdirectories are accurately specified in the Makefile. Parallel Problem #4: The slow start The opposite of Parallel Problem #2 (the long link at the end) is a slow start to the build. A common reason that a build runs serially at the start before becoming parallel is that the build begins with a job that must be completed before any other work can begin. For example, many builds start with a 'make depend' step that builds the dependency information for the entire build before the build is allowed to proceed. Figure 11 shows how a long make depend step at the start of a build appears in ElectricInsight. Figure 11: Doing make depend at the start of a build A long serial build step at the start of the build will limit the maximum speedup available because all but one of the cluster nodes is unused during the job. The Amdahl's Law section above showed how the maximum speedup available in a parallel build is limited by the longest sequence of jobs that must be performed serially. A long serial job at the start of a build can seriously limit the possible speedup when the build is parallelized. Parallel Build Visualization Page 14 Electric Cloud, Inc. All rights reserved.

15 To eliminate a large make depend there are a number of options. Firstly, the make depend itself can be parallelized. Since the output of make depend is typically just a text Makefile, it's possible to run multiple make depends. Each make depend handles dependencies for part of the overall build and the results of each make depend are merged into the main Makefile before the build proceeds. Breaking up make depend means that multiple instances of the depend process can run simultaneously and in parallel. If the build is being run with ElectricAccelerator, the make depend step can, most likely, be completely eliminated. ElectricAccelerator's Electric File System does dependency checking on the fly as the build runs and will detect the dependency information necessary as the build runs. Lastly, if the build being run is a scratch or full build then dependency information from make depend is probably irrelevant and can be ignored. By definition, every object file is created in a full build, so the dependency information gathered by make depend is not needed. The make depend step can be safely removed and the build will be able to run in parallel without the initial delay while make depend completes. Parallel Problem #5: Shared intermediate files A difficult-to-diagnose problem that occurs when a build is parallelized is the reuse of a hidden intermediate file. Some compilers or code generators reuse common files because they make the assumption that every build is serial and that it is safe to use a common file name for some hidden purpose. For example, the Flex lexical analyzer generator (and similar tools) have default names for the files that they generate that are used by other tools (e.g. Bison). If a build contains multiple calls to Flex, the same generated files are created. This is safe in a serial build since the calls to Flex can never interfere with each other. In a parallel build, the use of these default names is dangerous and can result in broken builds and strange errors. For example, the files generated by an instance of Flex might be incorrectly used by an instance of Bison that was expecting files generated by a different Flex invocation. This type of problem is difficult to diagnose. To prevent this from happening, it is vital that generated files have unique names (or unique directories) so that they cannot be incorrectly used by parallelized jobs. Most parallel build systems will produce incorrect or unstable builds if a default file name is reused under the assumption that the build runs serially. ElectricAccelerator's Electric File System will detect misuse of default file names and correct the build, but the implicit serialization caused by this reuse will impact build speed. And ElectricInsight makes it easy first to detect the problem, and then to identify the cause. Conclusion While parallel builds are the optimal way to maximize build speed, they are often difficult to execute effectively, and even more difficult to debug and troubleshoot. Without graphical visualization of the build, tracking down build problems is an arduous, manual task involving examination of literally thousands upon thousands of lines of information from a build output. And understanding build timings when trying to optimize a build is even more difficult. Parallel Build Visualization Page 15 Electric Cloud, Inc. All rights reserved.

16 In this paper, we have explored several parallel build pitfalls and debugging techniques using ElectricInsight as a means to visualize build output and relationships between jobs or rules. This kind of visualization would be impossible without a graphical visualization tool. Graphical build visualization tools like ElectricInsight give build managers and build novices alike instant information about the state of a build and provide vital clues for debugging and optimizing builds. Parallel Build Visualization Page 16 Electric Cloud, Inc. All rights reserved.

17 About Electric Cloud Electric Cloud was founded in 2002 by software technologists tired of seeing software development productivity impacted by the "build bottleneck." Software builds are the last opportunity for real, measurable improvement for most development organizations, and yet are one of the least addressed parts of the lifecycle. Development process improvements and automated tools can only do so much to improve productivity if builds are still limiting your throughput. Electric Cloud breaks the build bottleneck with tools that reduce your build times, make full and incremental builds more accurate, and provide the visibility and agility you need to continuously improve your build environment. The ElectricAccelerator solution uses clusters of inexpensive servers to reduce software build times by as much as 20x. ElectricAccelerator is based on sophisticated patent-pending technology for managing dependencies, resulting in vastly greater scalability than previous parallel build systems. Electric Cloud s new ElectricInsight tool is a breakthrough software build visualization tool that provides job-level detail into parallel builds and provides unprecedented visibility into build results for simplified troubleshooting and performance tuning. It mines the information produced by ElectricAccelerator to provide an easy-to-understand, graphical representation of the build structure for performance analysis. Learn more about Electric Cloud at Electric Cloud, Inc Leghorn Street Mountain View, CA Tel: Fax: Electric Cloud, Electric Make, ElectricAccelerator, and ElectricInsight are trademarks of Electric Cloud, Inc. All other names are used for identification purposes only and are trademarks or registered trademarks of their respective companies. Parallel Build Visualization Page 17 Electric Cloud, Inc. All rights reserved.

Here s another makefile snippet that works some of the time:

Here s another makefile snippet that works some of the time: Silent Failure Here s another makefile snippet that works some of the time: clean: @-rm *.o &> /dev/null The @ means that the command isn t echoed. The - means that any error returned is ignored and all

More information

HOW TO WRITE PARALLEL PROGRAMS AND UTILIZE CLUSTERS EFFICIENTLY

HOW TO WRITE PARALLEL PROGRAMS AND UTILIZE CLUSTERS EFFICIENTLY HOW TO WRITE PARALLEL PROGRAMS AND UTILIZE CLUSTERS EFFICIENTLY Sarvani Chadalapaka HPC Administrator University of California Merced, Office of Information Technology schadalapaka@ucmerced.edu it.ucmerced.edu

More information

This document contains information about the ElectricAccelerator Solution Support Add-in. Topics include: Overview 2. New Features and Improvements 2

This document contains information about the ElectricAccelerator Solution Support Add-in. Topics include: Overview 2. New Features and Improvements 2 Electric Cloud ElectricAccelerator version 7.0 Technical Notes MS Visual Studio Solution Support Add-in version 3.2.3 May 2013 This document contains information about the ElectricAccelerator Solution

More information

ElectricAccelerator Error Messages Guide. Electric Cloud, Inc. 35 South Market Street, Suite 100 San Jose, CA

ElectricAccelerator Error Messages Guide. Electric Cloud, Inc. 35 South Market Street, Suite 100 San Jose, CA ElectricAccelerator Error Messages Guide Electric Cloud, Inc. 35 South Market Street, Suite 100 San Jose, CA 95113 www.electric-cloud.com ElectricAccelerator Error Messages Guide Copyright 2002 2016 Electric

More information

Week - 04 Lecture - 01 Merge Sort. (Refer Slide Time: 00:02)

Week - 04 Lecture - 01 Merge Sort. (Refer Slide Time: 00:02) Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 04 Lecture - 01 Merge Sort (Refer

More information

Designing Data Protection Strategies for Oracle Databases

Designing Data Protection Strategies for Oracle Databases WHITE PAPER Designing Data Protection Strategies for Oracle Databases VERITAS Backup Exec 9.0 for Windows Servers Agent for Oracle VERSION INCLUDES TABLE OF CONTENTS STYLES 1 TABLE OF CONTENTS Introduction...3

More information

Parallel Nested Loops

Parallel Nested Loops Parallel Nested Loops For each tuple s i in S For each tuple t j in T If s i =t j, then add (s i,t j ) to output Create partitions S 1, S 2, T 1, and T 2 Have processors work on (S 1,T 1 ), (S 1,T 2 ),

More information

Parallel Partition-Based. Parallel Nested Loops. Median. More Join Thoughts. Parallel Office Tools 9/15/2011

Parallel Partition-Based. Parallel Nested Loops. Median. More Join Thoughts. Parallel Office Tools 9/15/2011 Parallel Nested Loops Parallel Partition-Based For each tuple s i in S For each tuple t j in T If s i =t j, then add (s i,t j ) to output Create partitions S 1, S 2, T 1, and T 2 Have processors work on

More information

These are notes for the third lecture; if statements and loops.

These are notes for the third lecture; if statements and loops. These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern

More information

Rapid Bottleneck Identification A Better Way to do Load Testing. An Oracle White Paper June 2008

Rapid Bottleneck Identification A Better Way to do Load Testing. An Oracle White Paper June 2008 Rapid Bottleneck Identification A Better Way to do Load Testing An Oracle White Paper June 2008 Rapid Bottleneck Identification A Better Way to do Load Testing. RBI combines a comprehensive understanding

More information

NON-CALCULATOR ARITHMETIC

NON-CALCULATOR ARITHMETIC Mathematics Revision Guides Non-Calculator Arithmetic Page 1 of 30 M.K. HOME TUITION Mathematics Revision Guides: Level: GCSE Foundation Tier NON-CALCULATOR ARITHMETIC Version: 3.2 Date: 21-10-2016 Mathematics

More information

Designing Data Protection Strategies for Oracle Databases

Designing Data Protection Strategies for Oracle Databases WHITE PAPER Designing Data Protection Strategies for Oracle Databases VERITAS Backup Exec 9.1 for Windows Servers Agent for Oracle 11/20/2003 1 TABLE OF CONTENTS Introduction...3 Oracle Backup Basics...3

More information

These Release Notes contain supplemental information about ElectricAccelerator, version 6.1. Topics include:

These Release Notes contain supplemental information about ElectricAccelerator, version 6.1. Topics include: Electric Cloud ElectricAccelerator version 6.1 Release Notes June 8, 2012 These Release Notes contain supplemental information about ElectricAccelerator, version 6.1. Topics include: Product Description...

More information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 gdb Tutorial Written by Chris Feilbach CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that

More information

Regression testing. Whenever you find a bug. Why is this a good idea?

Regression testing. Whenever you find a bug. Why is this a good idea? Regression testing Whenever you find a bug Reproduce it (before you fix it!) Store input that elicited that bug Store correct output Put into test suite Then, fix it and verify the fix Why is this a good

More information

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal Administrivia Software Process CS169 Lecture 2 Added 20 more so far Will limit enrollment to ~65 students Only one TA so far Start thinking about project proposal Bonus points for proposals that will be

More information

5.11 Parallelism and Memory Hierarchy: Redundant Arrays of Inexpensive Disks 485.e1

5.11 Parallelism and Memory Hierarchy: Redundant Arrays of Inexpensive Disks 485.e1 5.11 Parallelism and Memory Hierarchy: Redundant Arrays of Inexpensive Disks 485.e1 5.11 Parallelism and Memory Hierarchy: Redundant Arrays of Inexpensive Disks Amdahl s law in Chapter 1 reminds us that

More information

EMC GREENPLUM MANAGEMENT ENABLED BY AGINITY WORKBENCH

EMC GREENPLUM MANAGEMENT ENABLED BY AGINITY WORKBENCH White Paper EMC GREENPLUM MANAGEMENT ENABLED BY AGINITY WORKBENCH A Detailed Review EMC SOLUTIONS GROUP Abstract This white paper discusses the features, benefits, and use of Aginity Workbench for EMC

More information

Is IPv4 Sufficient for Another 30 Years?

Is IPv4 Sufficient for Another 30 Years? Is IPv4 Sufficient for Another 30 Years? October 7, 2004 Abstract TCP/IP was developed 30 years ago. It has been successful over the past 30 years, until recently when its limitation started emerging.

More information

Intel Parallel Studio 2011

Intel Parallel Studio 2011 THE ULTIMATE ALL-IN-ONE PERFORMANCE TOOLKIT Studio 2011 Product Brief Studio 2011 Accelerate Development of Reliable, High-Performance Serial and Threaded Applications for Multicore Studio 2011 is a comprehensive

More information

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS164 Spring 2009 P. N. Hilfinger Basic Compilation Control with Gmake Even relatively small

More information

Debugging. CSE 2231 Supplement A Annatala Wolf

Debugging. CSE 2231 Supplement A Annatala Wolf Debugging CSE 2231 Supplement A Annatala Wolf Testing is not debugging! The purpose of testing is to detect the existence of errors, not to identify precisely where the errors came from. Error messages

More information

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

Programming Standards: You must conform to good programming/documentation standards. Some specifics: CS3114 (Spring 2011) PROGRAMMING ASSIGNMENT #3 Due Thursday, April 7 @ 11:00 PM for 100 points Early bonus date: Wednesday, April 6 @ 11:00 PM for a 10 point bonus Initial Schedule due Thursday, March

More information

Applying Machine Learning to Real Problems: Why is it Difficult? How Research Can Help?

Applying Machine Learning to Real Problems: Why is it Difficult? How Research Can Help? Applying Machine Learning to Real Problems: Why is it Difficult? How Research Can Help? Olivier Bousquet, Google, Zürich, obousquet@google.com June 4th, 2007 Outline 1 Introduction 2 Features 3 Minimax

More information

Computer Organization & Assembly Language Programming

Computer Organization & Assembly Language Programming Computer Organization & Assembly Language Programming CSE 2312 Lecture 11 Introduction of Assembly Language 1 Assembly Language Translation The Assembly Language layer is implemented by translation rather

More information

ENCM 369 Winter 2017 Lab 3 for the Week of January 30

ENCM 369 Winter 2017 Lab 3 for the Week of January 30 page 1 of 11 ENCM 369 Winter 2017 Lab 3 for the Week of January 30 Steve Norman Department of Electrical & Computer Engineering University of Calgary January 2017 Lab instructions and other documents for

More information

Eli System Administration Guide

Eli System Administration Guide Eli System Administration Guide Compiler Tools Group Department of Electrical and Computer Engineering University of Colorado Boulder, CO, USA 80309-0425 Copyright c 2002, 2009 The Regents of the University

More information

The compiler is spewing error messages.

The compiler is spewing error messages. Appendix B Debugging There are a few different kinds of errors that can occur in a program, and it is useful to distinguish between them in order to track them down more quickly. Compile-time errors are

More information

Design of Parallel Algorithms. Course Introduction

Design of Parallel Algorithms. Course Introduction + Design of Parallel Algorithms Course Introduction + CSE 4163/6163 Parallel Algorithm Analysis & Design! Course Web Site: http://www.cse.msstate.edu/~luke/courses/fl17/cse4163! Instructor: Ed Luke! Office:

More information

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Objective PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Explain what is meant by compiler. Explain how the compiler works. Describe various analysis of the source program. Describe the

More information

Lecture Notes on Garbage Collection

Lecture Notes on Garbage Collection Lecture Notes on Garbage Collection 15-411: Compiler Design André Platzer Lecture 20 1 Introduction In the previous lectures we have considered a programming language C0 with pointers and memory and array

More information

Can "scale" cloud applications "on the edge" by adding server instances. (So far, haven't considered scaling the interior of the cloud).

Can scale cloud applications on the edge by adding server instances. (So far, haven't considered scaling the interior of the cloud). Recall: where we are Wednesday, February 17, 2010 11:12 AM Recall: where we are Can "scale" cloud applications "on the edge" by adding server instances. (So far, haven't considered scaling the interior

More information

Basic Compilation Control with Make

Basic Compilation Control with Make by P.N. Hilfinger (U.C. Berkeley) modified by M. Clancy (UCB) and C. Bono Basic Compilation Control with Make Even relatively small software systems can require rather involved, or at least tedious, sequences

More information

Compiling and Linking

Compiling and Linking Compiling and Linking ECE2893 Lecture 17 ECE2893 Compiling and Linking Spring 2011 1 / 10 The gcc/g++ Compiler 1 The Gnu C and C++ compiler (gcc and g++ respectively) have been under development for decades,

More information

Introduction to Parallel Programming and Computing for Computational Sciences. By Justin McKennon

Introduction to Parallel Programming and Computing for Computational Sciences. By Justin McKennon Introduction to Parallel Programming and Computing for Computational Sciences By Justin McKennon History of Serialized Computing Until recently, software and programs have been explicitly designed to run

More information

Bridge Course On Software Testing

Bridge Course On Software Testing G. PULLAIAH COLLEGE OF ENGINEERING AND TECHNOLOGY Accredited by NAAC with A Grade of UGC, Approved by AICTE, New Delhi Permanently Affiliated to JNTUA, Ananthapuramu (Recognized by UGC under 2(f) and 12(B)

More information

Process size is independent of the main memory present in the system.

Process size is independent of the main memory present in the system. Hardware control structure Two characteristics are key to paging and segmentation: 1. All memory references are logical addresses within a process which are dynamically converted into physical at run time.

More information

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful? Chapter 1 :: Introduction Introduction Programming Language Pragmatics Michael L. Scott Why are there so many programming languages? evolution -- we've learned better ways of doing things over time socio-economic

More information

Quickly Repair the Most Common Problems that Prevent Windows XP from Starting Up

Quickly Repair the Most Common Problems that Prevent Windows XP from Starting Up XP: Solving Windows Startup Problems X 34/1 Quickly Repair the Most Common Problems that Prevent Windows XP from Starting Up With the information in this article you can: The four most common Windows Startup

More information

CST8207: GNU/Linux Operating Systems I Lab Ten Boot Process and GRUB. Boot Process and GRUB

CST8207: GNU/Linux Operating Systems I Lab Ten Boot Process and GRUB. Boot Process and GRUB Student Name: Lab Section: Boot Process and GRUB 1 Due Date - Upload to Blackboard by 8:30am Monday April 16, 2012 Submit the completed lab to Blackboard following the Rules for submitting Online Labs

More information

A Practical Guide to Cost-Effective Disaster Recovery Planning

A Practical Guide to Cost-Effective Disaster Recovery Planning White Paper PlateSpin A Practical Guide to Cost-Effective Disaster Recovery Planning Organizations across the globe are finding disaster recovery increasingly important for a number of reasons. With the

More information

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26.

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26. git status Steps for project success Homework 1 submitted Homework 2 will be posted October 26 due November 16, 9AM Projects underway project status check-in meetings November 9 System-building project

More information

9 th CA 2E/CA Plex Worldwide Developer Conference 1

9 th CA 2E/CA Plex Worldwide Developer Conference 1 1 Introduction/Welcome Message Organizations that are making major changes to or replatforming an application need to dedicate considerable resources ot the QA effort. In this session we will show best

More information

A Practitioner s Approach to Successfully Implementing Service Virtualization

A Practitioner s Approach to Successfully Implementing Service Virtualization A Practitioner s Approach to Successfully Implementing Service Virtualization The Final Piece of the Puzzle Gaurish Vijay Hattangadi Executive Summary Service virtualization envisions a promising solution

More information

Visual Design Flows for Faster Debug and Time to Market FlowTracer White Paper

Visual Design Flows for Faster Debug and Time to Market FlowTracer White Paper Visual Design Flows for Faster Debug and Time to Market FlowTracer White Paper 2560 Mission College Blvd., Suite 130 Santa Clara, CA 95054 (408) 492-0940 Introduction As System-on-Chip (SoC) designs have

More information

Most real programs operate somewhere between task and data parallelism. Our solution also lies in this set.

Most real programs operate somewhere between task and data parallelism. Our solution also lies in this set. for Windows Azure and HPC Cluster 1. Introduction In parallel computing systems computations are executed simultaneously, wholly or in part. This approach is based on the partitioning of a big task into

More information

VERITAS Backup Exec for Windows NT/2000 Intelligent Disaster Recovery

VERITAS Backup Exec for Windows NT/2000 Intelligent Disaster Recovery VERITAS Backup Exec for Windows NT/2000 Intelligent Disaster Recovery Table of Contents Overview... 1 Point-in-Time Disaster Recovery... 1 Manual Disaster Recovery is Time-Consuming and Technically Difficult...2

More information

Mobile App:IT. Methods & Classes

Mobile App:IT. Methods & Classes Mobile App:IT Methods & Classes WHAT IS A METHOD? - A method is a set of code which is referred to by name and can be called (invoked) at any point in a program simply by utilizing the method's name. -

More information

5 REASONS YOUR BUSINESS NEEDS NETWORK MONITORING

5 REASONS YOUR BUSINESS NEEDS NETWORK MONITORING 5 REASONS YOUR BUSINESS NEEDS NETWORK MONITORING www.intivix.com (415) 543 1033 NETWORK MONITORING WILL ENSURE YOUR NETWORK IS OPERATING AT FULL CAPACITY 5 Reasons Your Business Needs Network Monitoring

More information

Dante Firmware Update Manager

Dante Firmware Update Manager Dante Firmware Update Manager User Guide for Windows and Mac OS X For Dante Firmware Update Manager software version: 3.10.4.6 and up Document version: 2.6 April 13 th, 2018 Document name: AUD-MAN-Firmware_Update_Manager-v2.6

More information

Performance analysis basics

Performance analysis basics Performance analysis basics Christian Iwainsky Iwainsky@rz.rwth-aachen.de 25.3.2010 1 Overview 1. Motivation 2. Performance analysis basics 3. Measurement Techniques 2 Why bother with performance analysis

More information

Automated trace analysis for testing of CANopen devices

Automated trace analysis for testing of CANopen devices Automated trace analysis for testing of CANopen devices Andrew Ayre, Embedded Systems Academy, Inc. When it comes to testing of CANopen devices, one of the tests often conducted is the test of a device

More information

CSE 303: Concepts and Tools for Software Development

CSE 303: Concepts and Tools for Software Development CSE 303: Concepts and Tools for Software Development Dan Grossman Spring 2007 Lecture 19 Profiling (gprof); Linking and Libraries Dan Grossman CSE303 Spring 2007, Lecture 19 1 Where are we Already started

More information

Computing and compilers

Computing and compilers Computing and compilers Comp Sci 1570 to Outline 1 2 3 4 5 Evaluate the difference between hardware and software Find out about the various types of software Get a high level understanding of how program

More information

2 Compiling a C program

2 Compiling a C program 2 Compiling a C program This chapter describes how to compile C programs using gcc. Programs can be compiled from a single source file or from multiple source files, and may use system libraries and header

More information

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation Language Implementation Methods The Design and Implementation of Programming Languages Compilation Interpretation Hybrid In Text: Chapter 1 2 Compilation Interpretation Translate high-level programs to

More information

Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn

Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn Problem Write and test a Scheme program to compute how many days are spanned by two given days. The program will include a procedure

More information

CS664 Compiler Theory and Design LIU 1 of 16 ANTLR. Christopher League* 17 February Figure 1: ANTLR plugin installer

CS664 Compiler Theory and Design LIU 1 of 16 ANTLR. Christopher League* 17 February Figure 1: ANTLR plugin installer CS664 Compiler Theory and Design LIU 1 of 16 ANTLR Christopher League* 17 February 2016 ANTLR is a parser generator. There are other similar tools, such as yacc, flex, bison, etc. We ll be using ANTLR

More information

Optimizing Parallel Access to the BaBar Database System Using CORBA Servers

Optimizing Parallel Access to the BaBar Database System Using CORBA Servers SLAC-PUB-9176 September 2001 Optimizing Parallel Access to the BaBar Database System Using CORBA Servers Jacek Becla 1, Igor Gaponenko 2 1 Stanford Linear Accelerator Center Stanford University, Stanford,

More information

Programming with MPI

Programming with MPI Programming with MPI p. 1/?? Programming with MPI One-sided Communication Nick Maclaren nmm1@cam.ac.uk October 2010 Programming with MPI p. 2/?? What Is It? This corresponds to what is often called RDMA

More information

ECE 462 Object-Oriented Programming using C++ and Java. Testing

ECE 462 Object-Oriented Programming using C++ and Java. Testing ECE 462 Object-Oriented Programming g using C++ and Java Testing Yung-Hsiang Lu yunglu@purdue.edu YHL Testing 1 Unreachable Code If a, b, and c are zeros or positive numbers (a + c) < b a > b is impossible

More information

Designing Data Protection Strategies for Lotus Domino

Designing Data Protection Strategies for Lotus Domino WHITE PAPER Designing Data Protection Strategies for Lotus Domino VERITAS Backup Exec 9.0 for Windows Servers Agent for Lotus Domino VERSION INCLUDES TABLE OF CONTENTS STYLES 1 TABLE OF CONTENTS Introduction...3

More information

Parallelism. Parallel Hardware. Introduction to Computer Systems

Parallelism. Parallel Hardware. Introduction to Computer Systems Parallelism We have been discussing the abstractions and implementations that make up an individual computer system in considerable detail up to this point. Our model has been a largely sequential one,

More information

Running the model in production mode: using the queue.

Running the model in production mode: using the queue. Running the model in production mode: using the queue. 1) Codes are executed with run scripts. These are shell script text files that set up the individual runs and execute the code. The scripts will seem

More information

CBS For Windows CDROM Backup System Quick Start Guide Installation Preparation:

CBS For Windows CDROM Backup System Quick Start Guide Installation Preparation: CBS For Windows CDROM Backup System Quick Start Guide Installation If you have your CBS CD Writer Backup system on CD, simply insert the CD. It will automatically start and install the software. If you

More information

MONITORING STORAGE PERFORMANCE OF IBM SVC SYSTEMS WITH SENTRY SOFTWARE

MONITORING STORAGE PERFORMANCE OF IBM SVC SYSTEMS WITH SENTRY SOFTWARE MONITORING STORAGE PERFORMANCE OF IBM SVC SYSTEMS WITH SENTRY SOFTWARE WHITE PAPER JULY 2018 INTRODUCTION The large number of components in the I/O path of an enterprise storage virtualization device such

More information

CS 520 Theory and Practice of Software Engineering Fall 2018

CS 520 Theory and Practice of Software Engineering Fall 2018 CS 520 Theory and Practice of Software Engineering Fall 2018 Nediyana Daskalova Monday, 4PM CS 151 Debugging October 30, 2018 Personalized Behavior-Powered Systems for Guiding Self-Experiments Help me

More information

BENEFITS OF VERITAS INDEPTH FOR IBM S DB2 UNIVERSAL DATABASE WITHIN AN OPERATIONAL ENVIRONMENT

BENEFITS OF VERITAS INDEPTH FOR IBM S DB2 UNIVERSAL DATABASE WITHIN AN OPERATIONAL ENVIRONMENT TUTORIAL: WHITE PAPER VERITAS Indepth For IBM s DB2 Universal Database BENEFITS OF VERITAS INDEPTH FOR IBM S DB2 UNIVERSAL DATABASE WITHIN AN OPERATIONAL ENVIRONMENT 1 1. Management Summary... 3 2. VERITAS

More information

DESIGN AND ANALYSIS OF ALGORITHMS. Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES

DESIGN AND ANALYSIS OF ALGORITHMS. Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES DESIGN AND ANALYSIS OF ALGORITHMS Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES http://milanvachhani.blogspot.in USE OF LOOPS As we break down algorithm into sub-algorithms, sooner or later we shall

More information

1 Introduction to Parallel Computing

1 Introduction to Parallel Computing 1 Introduction to Parallel Computing 1.1 Goals of Parallel vs Distributed Computing Distributed computing, commonly represented by distributed services such as the world wide web, is one form of computational

More information

Recommended Design Techniques for ECE241 Project Franjo Plavec Department of Electrical and Computer Engineering University of Toronto

Recommended Design Techniques for ECE241 Project Franjo Plavec Department of Electrical and Computer Engineering University of Toronto Recommed Design Techniques for ECE241 Project Franjo Plavec Department of Electrical and Computer Engineering University of Toronto DISCLAIMER: The information contained in this document does NOT contain

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

The make utility automatically determines which pieces of a large program need to be recompiled, and issues commands to recompile them.

The make utility automatically determines which pieces of a large program need to be recompiled, and issues commands to recompile them. What is make? 1 make is a system utility for managing the build process (compilation/linking/etc). There are various versions of make; these notes discuss the GNU make utility included on Linux systems.

More information

Introduction to Parallel Performance Engineering

Introduction to Parallel Performance Engineering Introduction to Parallel Performance Engineering Markus Geimer, Brian Wylie Jülich Supercomputing Centre (with content used with permission from tutorials by Bernd Mohr/JSC and Luiz DeRose/Cray) Performance:

More information

Reviewing gcc, make, gdb, and Linux Editors 1

Reviewing gcc, make, gdb, and Linux Editors 1 Reviewing gcc, make, gdb, and Linux Editors 1 Colin Gordon csgordon@cs.washington.edu University of Washington CSE333 Section 1, 3/31/11 1 Lots of material borrowed from 351/303 slides Colin Gordon (University

More information

Break Through Your Software Development Challenges with Microsoft Visual Studio 2008

Break Through Your Software Development Challenges with Microsoft Visual Studio 2008 Break Through Your Software Development Challenges with Microsoft Visual Studio 2008 White Paper November 2007 For the latest information, please see www.microsoft.com/vstudio This is a preliminary document

More information

CSE 374 Final Exam Sample Solution 3/15/12

CSE 374 Final Exam Sample Solution 3/15/12 Question 1. (12 points) (strings and things) Write a function are_same that has two parameters of type char* and returns: 0 if the two parameters point to locations holding different string values, 1 if

More information

CASE STUDY INSIGHTS: MICRO-SEGMENTATION TRANSFORMS SECURITY. How Organizations Around the World Are Protecting Critical Data

CASE STUDY INSIGHTS: MICRO-SEGMENTATION TRANSFORMS SECURITY. How Organizations Around the World Are Protecting Critical Data CASE STUDY INSIGHTS: MICRO-SEGMENTATION TRANSFORMS SECURITY How Organizations Around the World Are Protecting Critical Data The Growing Risk of Security Breaches Data center breaches are nothing new but

More information

Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES

Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES DESIGN AND ANALYSIS OF ALGORITHMS Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES http://milanvachhani.blogspot.in USE OF LOOPS As we break down algorithm into sub-algorithms, sooner or later we shall

More information

SYSTEM UPGRADE, INC Making Good Computers Better. System Upgrade Teaches RAID

SYSTEM UPGRADE, INC Making Good Computers Better. System Upgrade Teaches RAID System Upgrade Teaches RAID In the growing computer industry we often find it difficult to keep track of the everyday changes in technology. At System Upgrade, Inc it is our goal and mission to provide

More information

Copyright 2018, Oracle and/or its affiliates. All rights reserved.

Copyright 2018, Oracle and/or its affiliates. All rights reserved. Beyond SQL Tuning: Insider's Guide to Maximizing SQL Performance Monday, Oct 22 10:30 a.m. - 11:15 a.m. Marriott Marquis (Golden Gate Level) - Golden Gate A Ashish Agrawal Group Product Manager Oracle

More information

A Sophomoric Introduction to Shared-Memory Parallelism and Concurrency Lecture 2 Analysis of Fork-Join Parallel Programs

A Sophomoric Introduction to Shared-Memory Parallelism and Concurrency Lecture 2 Analysis of Fork-Join Parallel Programs A Sophomoric Introduction to Shared-Memory Parallelism and Concurrency Lecture 2 Analysis of Fork-Join Parallel Programs Dan Grossman Last Updated: January 2016 For more information, see http://www.cs.washington.edu/homes/djg/teachingmaterials/

More information

Unit 6 Chapter 15 EXAMPLES OF COMPLEXITY CALCULATION

Unit 6 Chapter 15 EXAMPLES OF COMPLEXITY CALCULATION DESIGN AND ANALYSIS OF ALGORITHMS Unit 6 Chapter 15 EXAMPLES OF COMPLEXITY CALCULATION http://milanvachhani.blogspot.in EXAMPLES FROM THE SORTING WORLD Sorting provides a good set of examples for analyzing

More information

WHITE PAPER OCTOBER 2016 MAKING THE INTELLIGENT DECISION. vrealize Network Insight

WHITE PAPER OCTOBER 2016 MAKING THE INTELLIGENT DECISION. vrealize Network Insight WHITE PAPER OCTOBER 2016 MAKING THE INTELLIGENT DECISION vrealize Network Insight Introduction Like the topic of information technology as a whole, both virtualization and cloud computing are complex subjects.

More information

C A S P E R USER GUIDE V ERSION 10

C A S P E R USER GUIDE V ERSION 10 TM C A S P E R TM USER GUIDE V ERSION 10 Copyright and Trademark Information Information in this document is subject to change without notice. Federal law prohibits unauthorized use, duplication, and distribution

More information

Software Engineering

Software Engineering Software Engineering chap 4. Software Reuse 1 SuJin Choi, PhD. Sogang University Email: sujinchoi@sogang.ac.kr Slides modified, based on original slides by Ian Sommerville (Software Engineering 10 th Edition)

More information

NVIDIA DGX SYSTEMS PURPOSE-BUILT FOR AI

NVIDIA DGX SYSTEMS PURPOSE-BUILT FOR AI NVIDIA DGX SYSTEMS PURPOSE-BUILT FOR AI Overview Unparalleled Value Product Portfolio Software Platform From Desk to Data Center to Cloud Summary AI researchers depend on computing performance to gain

More information

Divisibility Rules and Their Explanations

Divisibility Rules and Their Explanations Divisibility Rules and Their Explanations Increase Your Number Sense These divisibility rules apply to determining the divisibility of a positive integer (1, 2, 3, ) by another positive integer or 0 (although

More information

Clean & Speed Up Windows with AWO

Clean & Speed Up Windows with AWO Clean & Speed Up Windows with AWO C 400 / 1 Manage Windows with this Powerful Collection of System Tools Every version of Windows comes with at least a few programs for managing different aspects of your

More information

Documentation Nick Parlante, 1996.Free for non-commerical use.

Documentation Nick Parlante, 1996.Free for non-commerical use. Documentation Nick Parlante, 1996.Free for non-commerical use. A program expresses an algorithm to the computer. A program is clear or "readable" if it also does a good job of communicating the algorithm

More information

Using Simulation to Understand Bottlenecks, Delay Accumulation, and Rail Network Flow

Using Simulation to Understand Bottlenecks, Delay Accumulation, and Rail Network Flow Using Simulation to Understand Bottlenecks, Delay Accumulation, and Rail Network Flow Michael K. Williams, PE, MBA Manager Industrial Engineering Norfolk Southern Corporation, 1200 Peachtree St., NE, Atlanta,

More information

LotusScript Optimization:

LotusScript Optimization: LotusScript Optimization: Improving Application Reliability, Speed and the End User Experience By Teamstudio, Inc. Teamstudio, Inc. 900 Cummings Center Suite 326T Beverly MA, 01915 Phone: 800.632.9787

More information

Healthcare IT A Monitoring Primer

Healthcare IT A Monitoring Primer Healthcare IT A Monitoring Primer Published: February 2019 PAGE 1 OF 13 Contents Introduction... 3 The Healthcare IT Environment.... 4 Traditional IT... 4 Healthcare Systems.... 4 Healthcare Data Format

More information

Improving Performance and Ensuring Scalability of Large SAS Applications and Database Extracts

Improving Performance and Ensuring Scalability of Large SAS Applications and Database Extracts Improving Performance and Ensuring Scalability of Large SAS Applications and Database Extracts Michael Beckerle, ChiefTechnology Officer, Torrent Systems, Inc., Cambridge, MA ABSTRACT Many organizations

More information

12 Common Mistakes while Backing Up Databases

12 Common Mistakes while Backing Up Databases 12 Common Mistakes while Backing Up Databases This article was initially intended for Firebird DBMS developers and administrators, but contacts with administrators of other databases made it clear that

More information

RECORD LEVEL CACHING: THEORY AND PRACTICE 1

RECORD LEVEL CACHING: THEORY AND PRACTICE 1 RECORD LEVEL CACHING: THEORY AND PRACTICE 1 Dr. H. Pat Artis Performance Associates, Inc. 72-687 Spyglass Lane Palm Desert, CA 92260 (760) 346-0310 drpat@perfassoc.com Abstract: In this paper, we will

More information

RealTime. RealTime. Real risks. Data recovery now possible in minutes, not hours or days. A Vyant Technologies Product. Situation Analysis

RealTime. RealTime. Real risks. Data recovery now possible in minutes, not hours or days. A Vyant Technologies Product. Situation Analysis RealTime A Vyant Technologies Product Real risks Data recovery now possible in minutes, not hours or days RealTime Vyant Technologies: data recovery in minutes Situation Analysis It is no longer acceptable

More information

What Every Programmer Should Know About Floating-Point Arithmetic

What Every Programmer Should Know About Floating-Point Arithmetic What Every Programmer Should Know About Floating-Point Arithmetic Last updated: October 15, 2015 Contents 1 Why don t my numbers add up? 3 2 Basic Answers 3 2.1 Why don t my numbers, like 0.1 + 0.2 add

More information

HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS

HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS INTRODUCTION A program written in a computer language, such as C/C++, is turned into executable using special translator software.

More information

Designing Data Protection Strategies for Lotus Domino

Designing Data Protection Strategies for Lotus Domino WHITE PAPER Designing Data Protection Strategies for Lotus Domino VERITAS Backup Exec 10 for Windows Servers Agent for Lotus Domino 1/17/2005 1 TABLE OF CONTENTS Executive Summary...3 Introduction to Lotus

More information