Debugging with Online Slicing and Dryrun
|
|
|
- Linette Welch
- 9 years ago
- Views:
Transcription
1 Debugging with Online Slicing and Dryrun Cheng Zhang 1, Longwen Lu 1, Hucheng Zhou 2, Jianjun Zhao 1, Zheng Zhang 2 1 Shanghai Jiao Tong University, 2 Microsoft Research Asia ABSTRACT Efficient tools are indispensable in the battle against software bugs during both development and maintenance. In this short paper, we introduce two techniques that target different phases of an interactive and iterative debugging session. To help fault diagnosis, we split the costly computation of backward slicing into online and offline, and employ incremental updates after program edits. The result is a vast reduction of slicing cost. For the benchmarks we tested, slices can be computed in the range of seconds, which is 0.3% 5% of the unmodified slicing algorithm. The possibility of running slicing in situ and with instant response time gives rise to the possibility of editing-time validation, which we call dryrun. The idea is that a pair of slices, one forward from root cause and one backward from the bug site, defines the scope to validate a fix. This localization makes it possible to invoke symbolic execution and constraint solving that are otherwise too expensive to use in an interactive debugging environment. 1 INTRODUCTION Debugging is both black art and tough business. There does not appear to be a silver bullet that addresses all the major pain points of a developer. In part, this is because debugging itself involves phases that are qualitatively different. Consider a typical debugging session after a bug report is submitted. Assuming that the fault site has been clearly identified, the first phase is to trace back towards the root cause by reasoning about the causality chains. This phase may itself be iterative, as the developer adds new logs and/or mutates inputs to collect additional evidence. Once the root cause is discovered, the developer must select a- mong a number of candidate fixes and apply the best one. Typically, the patched program needs to be compiled and re-run against test cases. Before the patch is officially released, peer review is required. The most expensive resource in this whole process is the human time. However, for large software packages and especially in the cloud computing era, securing hardware resources and perform re-deployment, re-execution and log collection also entail non trivial cost. It is evident that different tools are needed in these different phases, although they share the common objective to reduce primarily the human time. For example, during the phase of analyzing the root cause, the most effective tool should address the tedious issue of causality reasoning. Today, most if not all debugging start with printed logs. Logs can be valuable as they represent a snapshot of execution path as well as selected concrete values of certain states. Logs, however, can be both incomplete and voluminous. The fact that reasoning with logs remains the dominant practice suggests that effective and practical tools in causality reasoning have not matured to the point of adoption. The best tool to identify causality chains is slicing, which constructs a collection of codes called a slice [9]. Basically, starting from a selected statement, a forward slice is the collection of program statements that this statement has effect on, and a backward slice is the collection of program statements that affects this statement. Taken together, they are powerful concepts to reveal data dependency. Slicing can be further divided into dynamic and static slicing. Dynamic slicing [1, 17], which records the exact execution path, requires heavy instrumentation, imposes high runtime overhead, and is therefore seldom used in practice. Static slicing is typically done at compile time and has zero runtime overhead. Lacking enough dynamic information, however, static slicing can be ambiguous. In our previous work [16], we show that logging and slicing can complement each other: log entries can prune uncertainties of slices; slices, on the other hand, represent the developer s focus in her reasoning about the bugs, and thus can prune irrelevant logs. Moreover, new log entries can be suggested or
2 even automatically inserted to improve slicing precision, and help to zoom in the root cause in an interactive manner. While the approach appears promising, it has made the assumption that static slicing can be integrated in the interactive and iterative debugging process, instead of being a one-time offline process; any new updates will render previous computed s- lices stale. Such updates should be done in situ and instantaneously. Unfortunately, our previous experiments have shown that employing classic slicing method is prohibitively slow: one of the Hadoop bug that we identified took 10 minutes to produce the s- lice. Our first contribution is the implementation of online slicing, bringing down slicing updates to seconds, instead of minutes. The magnitude of performance improvement makes it possible to use slicing as a primary tool at debugging time, in a responsive and interactive manner. This is achieved by splitting slicing into offline and online portion, and employs a combination of techniques to make updates incremental and local. Once a fix is applied, the updated software must be thoroughly tested. Doing so requires both resource and also human time. Worse yet, if a partial fix is prematurely released, the cost is even higher; for security bug, the incomplete fix actually reveals the vulnerability even further. One would argue that the process of understanding the root cause and devising the fixes has intrinsically performed the validation. However, as bugs become more complex, so do their patches. Nearly 70% of patches are buggy in their first release [8]; and 14.8% 24.4% of fixes released out in large OSes are reportedly bad patches [11]. Clearly, we need some way to validate the patches as early as possible. In the same spirit of bringing slicing online, we propose the idea of editing-time patch validation using a concept called dryrun. Conceptually, the forward slice rooted at the (supposedly) root cause will intersect the backward slice rooted at the bug site. The resulting set, called RB-scope, defines the impact scope of the patch. The basic idea is that, for a patch to be effective it must satisfy two conditions. First, it must be located inside the RB-scope. Second, it should disable conditions that has led to the original failure. Thus, by using symbolic execution and constraint solving (and possibly symbolic model checking), we can perform a step of patch validation even before the code is compiled. This is a concept that is still being developed. However, manual inspection upon a few bugs reveals that this may be a new and promising direction. The rest of the paper is organized as follows. Section 2 gives an overview, followed by description of online slicing and dryrun validation. We present preliminary result in Section 3, along with a short discussion. Section 4 covers related work, and we conclude with Section 5. 2 SYSTEM ARCHITECTURE Our system provides a set of fundamental services to support bug diagnosis and patch validation (Figure 1). These services, in turn, rely on a number of building blocks. By themselves, these building blocks perform classic static analysis. However, we pay particular attention in making them rapidly responsive in an iterative and interactive debugging session. online phase edits incremental update edits on CFG and CG offline analysis results root cause finding online slicing in-memory cache (CFG', CG', PDG', log info) offline DB (CFG0, CG0, PDG0) dryrun validation symbolic execution constraint solving Figure 1: System overview. log info data transmission debugging progress Our system is split into offline and online portion. The offline engine performs expensive but (more) precise static analysis, and stores the results in a database, which are loaded into an in-memory cache at the beginning of the session. Online slicing (see Section 2.1) is triggered by developer for bug diagnosis or new edits for patches, the results can be committed to the database at user s control. Online slicing also feeds the slices to the dryrun engine, which calls symbolic execution and/or constraint solver to perform in-edit validation (see Sec-
3 tion 2.2). Finally, log information are collected during runtime to help refine the precision. 2.1 Online Slicing In our system, slicing plays an important role, it needs to be as fast as possible, and at the same time maintain precision. Program slicing essentially i- dentifies the slice of a variable at given program points by analyzing both data and control dependencies from program dependence program (PDG) [4]. Data dependency can be computed from reaching definitions analysis, while control dependency can be derived from control flow graph (CFG) by building post-dominator trees. In our current approach, we focus on the data dependencies and leave control dependencies for future work, but compensate the loss of precision partially by incorporating log entries. Compared with computing the CFGs and call graph (CG), data flow analysis is generally much more expensive and thus takes a dominant part of the runtime of slicing. As is the case for most static analysis, speed and precision is a difficult tradeoff: improving precision requires more extensive analysis, and thus takes longer to complete. Therefore, in order to achieve online slicing, we separate the analysis into online and offline parts. Intuitively, the most timeconsuming but relatively stable analysis is computed once offline, and the results are stored in the database and loaded on-demand. In our system, we put the entire program intermediate representation as well as the corresponding CFGs and CG into disk in binary format like ELF 1 ; alternatively we can store the semantic information in BDB thus using bddbddb [10] to query the result. More importantly we also put the analysis results of alias, reaching definitions, as well as the resulting PDG into the offline database. We do not keep slicing results since the slicing criterion is selected by the user and unknown a priori. Given up-to-date PDGs and CG, computing both backward slice and forward slice is straightforward and cheap. This happens at the beginning of the debugging session. The challenge arises when new edits are introduced. 1 Executable_and_Linkable_Format We investigated and implemented two approaches, demand-driven [3] and incremental [5] data flow analysis. Due to space limitation, we will describe the second approach. We first decompose edits into the set of structural ones that changes CFGs and CG of the program, and non-structural ones that do not. Updating CFGs and CG is generally cheap. We then incrementally re-compute the data flow analysis. The data flow algorithm is iterative in nature, potentially touching the entire program variables and points. Provided that the edits are local, however, by propagating those changes outwards from edit sites, the data flow analysis can typically arrive fix point earlier [5]. As described in our previous work [16], slicing and log analysis can complement each other. In particular, online slicing can leverage log entries to refine related parts in graphs (both CFGs and CG) (e.g. which branch has been taken). 2.2 Dryrun Validation Once a patch is applied, it needs to be validated. Existing practises entail a chain of events: compilation, deployment and running against test cases, submission for peer reviews and then release. Some of the steps are costly and time-consuming. Worse yet, incomplete patches will trigger the whole debugging processes all over again, while exposing vulnerability in between. Dryrun follows our principle of applying static analysis in situ, but doing so instantaneously at the bug fixing time as soon as an edit is inserted. Its goal is to do as much validation as possible before the code even starts to get built. In a nutshell, the intuition is that the intersection of forward slice at the root cause with backward s- lice starting at the bug site has defined the scope of bug fixing and validation. We call the intersection of the two slices the RB-scope. This localization limits the scope of applying expensive but powerful static analysis such as symbolic execution and constraint solving, and does so only on relevant states identified by the slices. The basic intuition behind dryrun is that, for a patch to be valid it must satisfy two conditions. First, it must lie in the RB-scope described above. Second, the patch must disable some old conditions and/or enforce the right constraints, such
4 1 /* fs/xfs/linux-2.6/xfs_acl.c */ 2 static struct posix_acl * 3 xfs_acl_from_disk(struct xfs_acl *aclp) 4 { 5 const size_t size; 6 /* New patch */ 7 - int count, i; 8 + unsigned int count, i; 9 10 count = be32_to_cpu(aclp->acl_cnt); 11 /* Partial Patch */ 12 + if (count > XFS_ACL_MAX_ENTRIES) 13 + return ERR_PTR(-EFSCORRUPTED); 14 acl = posix_acl_alloc(count, flag); for (i = 0; i < count; i++) { 17 /* initialize the content of acl here. */ 18 acl_e = &acl->a_entries[i]; } } /* fs/posix_acl.c */ 25 struct posix_acl * 26 posix_acl_alloc(int count, gfp_t flags) 27 { 28 size_t size = sizeof(struct posix_acl) + 29 count * sizeof(struct posix_acl_entry); 30 struct posix_acl *acl = kmalloc(size, flags); } Figure 2: Dryrun example from XFS filesystem. that the bug will not manifest. A comprehensive patch should disable all the violation of constraints, whereas a partial patch disables only part of them. We will illustrate the idea of dryrun with a bug of integer overflow in the Linux kernel s XFS filesystem 2, shown in Figure 2. Note that count is converted from aclp acl cnt, which is directly read from disk in line 10 thus can be any signed value. Given a large count with positive value (e.g. 0x080000FF) and both sizeof operations returns 16, integer overflow would occur at the multiply operation (line 27 in posix acl alloc). As a result, kmalloc() in line 28 allocates a smaller memory (i.e. 141) than count dictates. It is worth to note that the two functions are located at different files under different directories. A patch was devised (line 12-13) that enforces a upbound of count. The problem is that the attacker can submit a negative value, completely bypass the sanity check and yet still causes integer overflow, leading to possible memory corruption. 2 cgi?id= We note that with program analysis, at the time when count is used, we can derive a constraint: count < SIZE MAX/sizeof (struct posix acl entry) (from kmalloc()), and count > 0 (from the loop constraint in line 16). A forward symbolic execution a- long the slice of count from line 12 shows that, without the patch, no constraint is imposed. Further, it indicates that the patch still leaves one side of the constraints unsatisfied, indicating that the patch is incomplete. An additional patch is added at line 7 line 8. As evident in this example, the RB-scope is small, consisting the intersection of forward slice on count at line 10, and the backward slice on count at line 16. We have also found that in some other cases symbolic execution and constraint solving are not enough, since multiple paths (and hence slices) can reach the bug site in non-deterministic fashion. As such, symbolic model checking will show a concrete order of interleaving. The sweetspot is when the distance between root cause and bug site is sufficiently far such that pure mental reasoning is hard, and yet close enough such that using slicing, thus local application of symbolic execution, constraint solving and model checking is cheap and effective. 3 IMPLEMENTATION AND PRELIMINARY RESULTS We have implemented most of the components of online slicing as described in Section 2.1. For the time being, we used an in-memory data structure to implement the database. We leveraged Soot analysis framework 3 for constructing CFG, CG, and PDG. We have integrated the slicing with log pruning [16]. As program edits may invalidate the log information, log pruning and log-based hybrid slicing are only performed in the first iteration of slicing. How to reuse valid logs across edits is one of our future work. We are in the process of investigating more details of dryrun, and integrating symbolic execution, constraint solving and symbolic model checking. We use Apache Velocity 4 (88K LOC) and A- pache Hadoop Common 5 (174K LOC) as the
5 benchmarks. We selected four bug reports for evaluation (three from Velocity and one from Hadoop Common). The selection criterion is based on the reproducibility of failures, clear identification of root causes, and the size of patches. The evaluation on Velocity is performed on a typical developer s machine with 2.80GHz dualcore CPU and 4GB memory, running Windows 7. The Hadoop case is run on a machine with 96GB memory, running Ubuntu Linux, since its analysis results are far bigger. Initial Update & Program Bug No. Offline Slicing Slicing Velocity Hadoop Table 1: Average run time of each step (sec.) 3.1 Results We performed the following three steps and report their running times. 1) Offline analysis; including building CFGs and CG, exhaustive data flow analysis, and PDG construction. This the most timeconsuming step. 2) Online backwards slicing; to prepare the developer for causality reasoning. The slicing is rooted at the bug site, and takes the PDGs and CG that is computed offline. 3) Slicing after edits; it simulates the impromptu program edits, based on the patches in the bug report. A patch for bug fix may not represent the actual sequence of edits during the debugging session, but we believe that this is a reasonable approximation. We decompose the changes into elementary edits and then perform the corresponding incremental updates on the information computed by the offline step. The updated PDGs and CG drive the re-computation of online slicing: backward slicing to continue aiding causality reasoning, and forward slicing in helping dryrun-based validation. Table 1 shows the analysis time of each step. As expected, the offline part is the most timeconsuming, whereas the online part, especially the incremental update, is significantly faster. This is mainly due to the fact that the patches in these bug cases are local and thus the incremental update can complete very quickly. Slicing has to transitively track dependencies (some of which are interprocedural), they are more expensive than the incremental update, but they are quick enough to support interactive debugging, where developers are likely to make code inspection or edits between iterations of slicing. Since Hadoop Common is much larger and complex than Velocity, its runtime is also much longer. The call graph in Hadoop is 800% more than Velocity (408,038 versus 50,271), thus slicing has to take into account more inter-procedure dependencies. 3.2 Discussion Our results are encouraging. However, there are many places to improve, some of them more immediate than others. The use of a high performing disk-based database will eliminate the need of large memory, especially for large-scale packages such as Hadoop. Similarly, slices could have been precomputed and/or cached. Also, to fully develop the idea of dryrun, we need to look into more bug cases. We have also learned a number of hard lessons, resolving them comprise our longer term agenda. Most of the lessons belong to the classic issue of trading off precision with cost. The problem is all the more significant for us, since running analysis is directly on the critical path. Controlling the aggressiveness of slicing, for instance the choice of when to use context-sensitive slicing, whether control dependencies are important (several bug cases show that they do), may take the path of learning the surface features from empirical data in order to be adaptive. 4 RELATED WORK There is a large body of research work related to our system, in the field of failure diagnosis and test-driven development. In terms of failure diagnosis, there are broadly speaking three major directions: execution comparison [7, 8, 15], source code and runtime information correlation [12, 13, 14, 2], and slicing [9, 1]. All these works entail a tradeoff between cost and precision in various ways. Our general approach combines runtime information to make slicing more precise. However, we recognize the need to integrate log-assisted slicing into an interactive and iterative debugging experience, and hence the challenge of handling slicing quickly.
6 Our technique of performing online slicing borrows ideas from incremental data flow analysis [5] and demand driven data flow analysis [3]. Most of these ideas were proposed nearly two decades ago, and were never tested in real settings. The complex landscape of modern software as well the advancement of hardware has made this line of work both relevant and practical. As far as we know, this is the first serious attempt to implement the algorithms. As we have shown, while our results are encouraging, by exercising the algorithms in real, we have uncovered a number of new research problems, such as how to combine the algorithms in the best synergistical way, and how to improve precision while keeping the cost down for practical use. Development and testing are usually thought as two closely related but temporally separate phases. However, there have been proposals that integrate the two more closely, such as continuous testing [6]. The idea is to integrate testing harness in IDE so as to run test asynchronously, and notify developers if regression exists. The hope is to improve the quality of a programming task. Dryrun shares the same philosophy that validation should happen as early as possible. However, dryrun focuses directly on validating whether a fix is sound, and does so by using an array of powerful and sophisticated static analysis tools such as symbolic execution and constraint solver, and yet limit their expense by defining the scope where the tools are applied. This novel approach potentially opens a new direction where advanced static tools can be applied. 5 CONCLUSION AND FUTURE WORK Given that developers spend much of their time finding bugs and fixing them iteratively and interactively in an IDE, we believe it s time to bring more sophisticated analysis tool into editing time. We developed online slicing to rapidly response to program change, and further leverage its power to perform editing-time validation of fixes. While the preliminary results are encouraging, much work remains. Our future work includes optimizations to online slicing to make better tradeoffs between precision and cost strategically, and to develop dryrun methodology fully. REFERENCES [1] H. Agrawal and J. R. Horgan. Dynamic program slicing. In PLDI, [2] O. Crameri, R. Bianchini, and W. Zwaenepoel. Striking a new balance between program instrumentation and debugging time. In EuroSys, [3] E. Duesterwald, R. Gupta, and M. L. Soffa. A practical framework for demand-driven interprocedural data flow analysis. TOPLAS. [4] J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst., [5] L. L. Pollock and M. L. Soffa. An incremental version of iterative data flow analysis. IEEE Trans. Softw. Eng. [6] D. Saff and M. D. Ernst. An experimental evaluation of continuous testing during development. In ISSTA, [7] W. N. Sumner, T. Bao, and X. Zhang. Selecting peers for execution comparison. In ISSTA, [8] J. Tucek, W. Xiong, and Y. Zhou. Efficient online validation with delta execution. In ASPLOS, [9] M. Weiser. Program slicing. In ICSE, [10] J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI 04, [11] Z. Yin, D. Yuan, Y. Zhou, S. Pasupathy, and L. N. Bairavasundaram. How do fixes become bugs? In SIGSOFT FSE, [12] D. Yuan, H. Mai, W. Xiong, L. Tan, Y. Zhou, and S. Pasupathy. Sherlog: error diagnosis by connecting clues from run-time logs. In ASPLOS, [13] D. Yuan, S. Park, and Y. Zhou. Characterising logging practices in open-source software. In SIGSOFT ICSE, [14] D. Yuan, J. Zheng, S. Park, Y. Zhou, and S. Savage. Improving software diagnosability via log enhancement. In ASPLOS, [15] C. Zamfir and G. Candea. Execution synthesis: a technique for automated software debugging. In EuroSys, [16] C. Zhang, Z. Guo, M. Wu, L. Lu, Y. Fan, J. Zhao, and Z. Zhang. Autolog: facing log redundancy and insufficiency. In APSys, [17] X. Zhang, S. Tallam, and R. Gupta. Dynamic slicing long running programs through execution fast forwarding. In SIGSOFT FSE, 2006.
Full System Emulation:
Full System Emulation: Achieving Successful Automated Dynamic Analysis of Evasive Malware Christopher Kruegel Lastline, Inc. [email protected] 1 Introduction Automated malware analysis systems (or sandboxes)
A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS
Embedded Systems White Paper GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS September 2009 ABSTRACT Android is an open source platform built by Google that includes an operating system,
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
ProTrack: A Simple Provenance-tracking Filesystem
ProTrack: A Simple Provenance-tracking Filesystem Somak Das Department of Electrical Engineering and Computer Science Massachusetts Institute of Technology [email protected] Abstract Provenance describes a file
Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland
Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static
Static Data Mining Algorithm with Progressive Approach for Mining Knowledge
Global Journal of Business Management and Information Technology. Volume 1, Number 2 (2011), pp. 85-93 Research India Publications http://www.ripublication.com Static Data Mining Algorithm with Progressive
Database Application Developer Tools Using Static Analysis and Dynamic Profiling
Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic
Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic The challenge When building distributed, large-scale applications, quality assurance (QA) gets increasingly
Data Model Bugs. Ivan Bocić and Tevfik Bultan
Data Model Bugs Ivan Bocić and Tevfik Bultan Department of Computer Science University of California, Santa Barbara, USA [email protected] [email protected] Abstract. In today s internet-centric world, web
What Is Specific in Load Testing?
What Is Specific in Load Testing? Testing of multi-user applications under realistic and stress loads is really the only way to ensure appropriate performance and reliability in production. Load testing
A Case for Dynamic Selection of Replication and Caching Strategies
A Case for Dynamic Selection of Replication and Caching Strategies Swaminathan Sivasubramanian Guillaume Pierre Maarten van Steen Dept. of Mathematics and Computer Science Vrije Universiteit, Amsterdam,
Static Taint-Analysis on Binary Executables
Static Taint-Analysis on Binary Executables Sanjay Rawat, Laurent Mounier, Marie-Laure Potet VERIMAG University of Grenoble October 2011 Static Taint-Analysis on Binary Executables 1/29 Outline 1 Introduction
Practical Online Filesystem Checking and Repair
Practical Online Filesystem Checking and Repair Daniel Phillips Samsung Research America (Silicon Valley) [email protected] 1 2013 SAMSUNG Electronics Co. Why we want online checking: Fsck
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 26 Debugging, Integration and System Testing Specific Instructional Objectives At the end of this lesson the student would be able to: Explain why debugging is needed.
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
Condusiv s V-locity Server Boosts Performance of SQL Server 2012 by 55%
openbench Labs Executive Briefing: April 19, 2013 Condusiv s Server Boosts Performance of SQL Server 2012 by 55% Optimizing I/O for Increased Throughput and Reduced Latency on Physical Servers 01 Executive
FPGA area allocation for parallel C applications
1 FPGA area allocation for parallel C applications Vlad-Mihai Sima, Elena Moscu Panainte, Koen Bertels Computer Engineering Faculty of Electrical Engineering, Mathematics and Computer Science Delft University
Research on Clustering Analysis of Big Data Yuan Yuanming 1, 2, a, Wu Chanle 1, 2
Advanced Engineering Forum Vols. 6-7 (2012) pp 82-87 Online: 2012-09-26 (2012) Trans Tech Publications, Switzerland doi:10.4028/www.scientific.net/aef.6-7.82 Research on Clustering Analysis of Big Data
CSE-E5430 Scalable Cloud Computing Lecture 2
CSE-E5430 Scalable Cloud Computing Lecture 2 Keijo Heljanko Department of Computer Science School of Science Aalto University [email protected] 14.9-2015 1/36 Google MapReduce A scalable batch processing
1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
Branch-and-Price Approach to the Vehicle Routing Problem with Time Windows
TECHNISCHE UNIVERSITEIT EINDHOVEN Branch-and-Price Approach to the Vehicle Routing Problem with Time Windows Lloyd A. Fasting May 2014 Supervisors: dr. M. Firat dr.ir. M.A.A. Boon J. van Twist MSc. Contents
Chapter 8 Software Testing
Chapter 8 Software Testing Summary 1 Topics covered Development testing Test-driven development Release testing User testing 2 Program testing Testing is intended to show that a program does what it is
Automating Security Testing. Mark Fallon Senior Release Manager Oracle
Automating Security Testing Mark Fallon Senior Release Manager Oracle Some Ground Rules There are no silver bullets You can not test security into a product Testing however, can help discover a large percentage
Embracing Microsoft Vista for Enhanced Network Security
Embracing Microsoft Vista for Enhanced Network Security Effective Implementation of Server & Domain Isolation Requires Complete Network Visibility throughout the OS Migration Process For questions on this
General Flow-Sensitive Pointer Analysis and Call Graph Construction
General Flow-Sensitive Pointer Analysis and Call Graph Construction Endre Horváth, István Forgács, Ákos Kiss, Judit Jász and Tibor Gyimóthy University of Szeged 4D Soft Ltd. Aradi Vértanúk tere 1. Soroksári
Solving the Software Quality Challenges of Agile Development
Solving the Software Quality Challenges of Agile Development 2 Solving the Software Quality Risks of Agile Development Agile software development is a series of iterative and incremental development methods
x64 Servers: Do you want 64 or 32 bit apps with that server?
TMurgent Technologies x64 Servers: Do you want 64 or 32 bit apps with that server? White Paper by Tim Mangan TMurgent Technologies February, 2006 Introduction New servers based on what is generally called
Architectural patterns for building real time applications with Apache HBase. Andrew Purtell Committer and PMC, Apache HBase
Architectural patterns for building real time applications with Apache HBase Andrew Purtell Committer and PMC, Apache HBase Who am I? Distributed systems engineer Principal Architect in the Big Data Platform
Access Control Fundamentals
C H A P T E R 2 Access Control Fundamentals An access enforcement mechanism authorizes requests (e.g., system calls) from multiple subjects (e.g., users, processes, etc.) to perform operations (e.g., read,,
PERFORMANCE ANALYSIS OF KERNEL-BASED VIRTUAL MACHINE
PERFORMANCE ANALYSIS OF KERNEL-BASED VIRTUAL MACHINE Sudha M 1, Harish G M 2, Nandan A 3, Usha J 4 1 Department of MCA, R V College of Engineering, Bangalore : 560059, India [email protected] 2 Department
Recommended hardware system configurations for ANSYS users
Recommended hardware system configurations for ANSYS users The purpose of this document is to recommend system configurations that will deliver high performance for ANSYS users across the entire range
To convert an arbitrary power of 2 into its English equivalent, remember the rules of exponential arithmetic:
Binary Numbers In computer science we deal almost exclusively with binary numbers. it will be very helpful to memorize some binary constants and their decimal and English equivalents. By English equivalents
MAGENTO HOSTING Progressive Server Performance Improvements
MAGENTO HOSTING Progressive Server Performance Improvements Simple Helix, LLC 4092 Memorial Parkway Ste 202 Huntsville, AL 35802 [email protected] 1.866.963.0424 www.simplehelix.com 2 Table of Contents
Code Coverage Testing Using Hardware Performance Monitoring Support
Code Coverage Testing Using Hardware Performance Monitoring Support Alex Shye Matthew Iyer Vijay Janapa Reddi Daniel A. Connors Department of Electrical and Computer Engineering University of Colorado
StACC: St Andrews Cloud Computing Co laboratory. A Performance Comparison of Clouds. Amazon EC2 and Ubuntu Enterprise Cloud
StACC: St Andrews Cloud Computing Co laboratory A Performance Comparison of Clouds Amazon EC2 and Ubuntu Enterprise Cloud Jonathan S Ward StACC (pronounced like 'stack') is a research collaboration launched
Performance Optimization Guide
Performance Optimization Guide Publication Date: July 06, 2016 Copyright Metalogix International GmbH, 2001-2016. All Rights Reserved. This software is protected by copyright law and international treaties.
Practical Performance Understanding the Performance of Your Application
Neil Masson IBM Java Service Technical Lead 25 th September 2012 Practical Performance Understanding the Performance of Your Application 1 WebSphere User Group: Practical Performance Understand the Performance
(Refer Slide Time: 2:03)
Control Engineering Prof. Madan Gopal Department of Electrical Engineering Indian Institute of Technology, Delhi Lecture - 11 Models of Industrial Control Devices and Systems (Contd.) Last time we were
Physical Data Organization
Physical Data Organization Database design using logical model of the database - appropriate level for users to focus on - user independence from implementation details Performance - other major factor
Smarter Balanced Assessment Consortium. Recommendation
Smarter Balanced Assessment Consortium Recommendation Smarter Balanced Quality Assurance Approach Recommendation for the Smarter Balanced Assessment Consortium 20 July 2012 Summary When this document was
WHITE PAPER. Five Steps to Better Application Monitoring and Troubleshooting
WHITE PAPER Five Steps to Better Application Monitoring and Troubleshooting There is no doubt that application monitoring and troubleshooting will evolve with the shift to modern applications. The only
Linux Process Scheduling Policy
Lecture Overview Introduction to Linux process scheduling Policy versus algorithm Linux overall process scheduling objectives Timesharing Dynamic priority Favor I/O-bound process Linux scheduling algorithm
Basics of VTune Performance Analyzer. Intel Software College. Objectives. VTune Performance Analyzer. Agenda
Objectives At the completion of this module, you will be able to: Understand the intended purpose and usage models supported by the VTune Performance Analyzer. Identify hotspots by drilling down through
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
Google File System. Web and scalability
Google File System Web and scalability The web: - How big is the Web right now? No one knows. - Number of pages that are crawled: o 100,000 pages in 1994 o 8 million pages in 2005 - Crawlable pages might
The Real Challenges of Configuration Management
The Real Challenges of Configuration Management McCabe & Associates Table of Contents The Real Challenges of CM 3 Introduction 3 Parallel Development 3 Maintaining Multiple Releases 3 Rapid Development
Fast Arithmetic Coding (FastAC) Implementations
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
Intrusion Detection via Static Analysis
Intrusion Detection via Static Analysis IEEE Symposium on Security & Privacy 01 David Wagner Drew Dean Presented by Yongjian Hu Outline Introduction Motivation Models Trivial model Callgraph model Abstract
Replication on Virtual Machines
Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism
APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION
1 APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION Validation: Are we building the right product? Does program meet expectations of user? Verification: Are we building the product right?
Your guide to DevOps. Bring developers, IT, and the latest tools together to create a smarter, leaner, more successful coding machine
Your guide to DevOps Bring developers, IT, and the latest tools together to create a smarter, leaner, more successful coding machine Introduction The move to DevOps involves more than new processes and
POMPDs Make Better Hackers: Accounting for Uncertainty in Penetration Testing. By: Chris Abbott
POMPDs Make Better Hackers: Accounting for Uncertainty in Penetration Testing By: Chris Abbott Introduction What is penetration testing? Methodology for assessing network security, by generating and executing
Wait-Time Analysis Method: New Best Practice for Performance Management
WHITE PAPER Wait-Time Analysis Method: New Best Practice for Performance Management September 2006 Confio Software www.confio.com +1-303-938-8282 SUMMARY: Wait-Time analysis allows IT to ALWAYS find the
Linux Kernel. Security Report
Linux Kernel Security Report September 25 Authors: Andy Chou, Bryan Fulton and Seth Hallem Coverity has combined two years of analysis work carried out in a commercial setting at Coverity with four years
Research Statement Immanuel Trummer www.itrummer.org
Research Statement Immanuel Trummer www.itrummer.org We are collecting data at unprecedented rates. This data contains valuable insights, but we need complex analytics to extract them. My research focuses
Big Data with Rough Set Using Map- Reduce
Big Data with Rough Set Using Map- Reduce Mr.G.Lenin 1, Mr. A. Raj Ganesh 2, Mr. S. Vanarasan 3 Assistant Professor, Department of CSE, Podhigai College of Engineering & Technology, Tirupattur, Tamilnadu,
Environment Modeling for Automated Testing of Cloud Applications
Environment Modeling for Automated Testing of Cloud Applications Linghao Zhang, Tao Xie, Nikolai Tillmann, Peli de Halleux, Xiaoxing Ma, Jian Lv {lzhang25, txie}@ncsu.edu, {nikolait, jhalleux}@microsoft.com,
Improving Grid Processing Efficiency through Compute-Data Confluence
Solution Brief GemFire* Symphony* Intel Xeon processor Improving Grid Processing Efficiency through Compute-Data Confluence A benchmark report featuring GemStone Systems, Intel Corporation and Platform
Static Program Transformations for Efficient Software Model Checking
Static Program Transformations for Efficient Software Model Checking Shobha Vasudevan Jacob Abraham The University of Texas at Austin Dependable Systems Large and complex systems Software faults are major
Information, Entropy, and Coding
Chapter 8 Information, Entropy, and Coding 8. The Need for Data Compression To motivate the material in this chapter, we first consider various data sources and some estimates for the amount of data associated
Lecture 8: Binary Multiplication & Division
Lecture 8: Binary Multiplication & Division Today s topics: Addition/Subtraction Multiplication Division Reminder: get started early on assignment 3 1 2 s Complement Signed Numbers two = 0 ten 0001 two
White Paper. Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1
White Paper Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1 INTRODUCTION...3 FRAMEWORKS AND LANGUAGES...3 SECURITY AND UPGRADES...4 Major Upgrades...4 Minor Upgrades...5
International Journal of Advancements in Research & Technology, Volume 3, Issue 2, February-2014 10 ISSN 2278-7763
International Journal of Advancements in Research & Technology, Volume 3, Issue 2, February-2014 10 A Discussion on Testing Hadoop Applications Sevuga Perumal Chidambaram ABSTRACT The purpose of analysing
Testing LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
How To Trace
CS510 Software Engineering Dynamic Program Analysis Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-cs510-se
IEC 61131-3. The Fast Guide to Open Control Software
IEC 61131-3 The Fast Guide to Open Control Software 1 IEC 61131-3 The Fast Guide to Open Control Software Introduction IEC 61131-3 is the first vendor-independent standardized programming language for
Raima Database Manager Version 14.0 In-memory Database Engine
+ Raima Database Manager Version 14.0 In-memory Database Engine By Jeffrey R. Parsons, Senior Engineer January 2016 Abstract Raima Database Manager (RDM) v14.0 contains an all new data storage engine optimized
Analysis of Compression Algorithms for Program Data
Analysis of Compression Algorithms for Program Data Matthew Simpson, Clemson University with Dr. Rajeev Barua and Surupa Biswas, University of Maryland 12 August 3 Abstract Insufficient available memory
Keywords: Regression testing, database applications, and impact analysis. Abstract. 1 Introduction
Regression Testing of Database Applications Bassel Daou, Ramzi A. Haraty, Nash at Mansour Lebanese American University P.O. Box 13-5053 Beirut, Lebanon Email: rharaty, [email protected] Keywords: Regression
1.1 Difficulty in Fault Localization in Large-Scale Computing Systems
Chapter 1 Introduction System failures have been one of the biggest obstacles in operating today s largescale computing systems. Fault localization, i.e., identifying direct or indirect causes of failures,
Wiggins/Redstone: An On-line Program Specializer
Wiggins/Redstone: An On-line Program Specializer Dean Deaver Rick Gorton Norm Rubin {dean.deaver,rick.gorton,norm.rubin}@compaq.com Hot Chips 11 Wiggins/Redstone 1 W/R is a Software System That: u Makes
Highly Available Mobile Services Infrastructure Using Oracle Berkeley DB
Highly Available Mobile Services Infrastructure Using Oracle Berkeley DB Executive Summary Oracle Berkeley DB is used in a wide variety of carrier-grade mobile infrastructure systems. Berkeley DB provides
APPENDIX 1 USER LEVEL IMPLEMENTATION OF PPATPAN IN LINUX SYSTEM
152 APPENDIX 1 USER LEVEL IMPLEMENTATION OF PPATPAN IN LINUX SYSTEM A1.1 INTRODUCTION PPATPAN is implemented in a test bed with five Linux system arranged in a multihop topology. The system is implemented
Implementing Portfolio Management: Integrating Process, People and Tools
AAPG Annual Meeting March 10-13, 2002 Houston, Texas Implementing Portfolio Management: Integrating Process, People and Howell, John III, Portfolio Decisions, Inc., Houston, TX: Warren, Lillian H., Portfolio
Behavior Analysis of TCP Traffic in Mobile Ad Hoc Network using Reactive Routing Protocols
Behavior Analysis of TCP Traffic in Mobile Ad Hoc Network using Reactive Routing Protocols Purvi N. Ramanuj Department of Computer Engineering L.D. College of Engineering Ahmedabad Hiteishi M. Diwanji
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation Mathias Payer, ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application
VMware Server 2.0 Essentials. Virtualization Deployment and Management
VMware Server 2.0 Essentials Virtualization Deployment and Management . This PDF is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.
Data Structures and Algorithms
Data Structures and Algorithms Computational Complexity Escola Politècnica Superior d Alcoi Universitat Politècnica de València Contents Introduction Resources consumptions: spatial and temporal cost Costs
Analysis and Modeling of MapReduce s Performance on Hadoop YARN
Analysis and Modeling of MapReduce s Performance on Hadoop YARN Qiuyi Tang Dept. of Mathematics and Computer Science Denison University [email protected] Dr. Thomas C. Bressoud Dept. of Mathematics and
Unifying IT How Dell Is Using BMC
Unifying IT Management: How Dell Is Using BMC Software to Implement ITIL ABSTRACT Companies are looking for ways to maximize the efficiency with which they plan, deliver, and manage technology services.
Statistical Machine Translation: IBM Models 1 and 2
Statistical Machine Translation: IBM Models 1 and 2 Michael Collins 1 Introduction The next few lectures of the course will be focused on machine translation, and in particular on statistical machine translation
ZooKeeper. Table of contents
by Table of contents 1 ZooKeeper: A Distributed Coordination Service for Distributed Applications... 2 1.1 Design Goals...2 1.2 Data model and the hierarchical namespace...3 1.3 Nodes and ephemeral nodes...
hmetrix Revolutionizing Healthcare Analytics with Vertica & Tableau
Powered by Vertica Solution Series in conjunction with: hmetrix Revolutionizing Healthcare Analytics with Vertica & Tableau The cost of healthcare in the US continues to escalate. Consumers, employers,
