Optimising large dynamic code bases.
|
|
- Peter Fletcher
- 5 years ago
- Views:
Transcription
1 Optimising large dynamic code bases.
2 Who am I? Duncan MacGregor Lead Software Engineer on the Magik on Java project at General Electric in Cambridge Aardvark179 on twitter 2
3 What is Magik? Dynamic, weakly typed message passing based language Does everything "wrong" i.e. numerical type promotion, closures over mutable values, etc. Not that special in terms of the language. 3
4 So what does make it special? It s tightly integrated with a long transaction version managed data store. There are large applications built using it. No, larger than that, I mean really large 4
5 So what is large? A typical application with an open database has 200,000 methods defined About 10% of those are record field accessors and other code generated by the ORM 5
6 It gets worse There are bigger data models out there, some with over 4000 tables Many customers will use third party add ons and their own customisations which may be almost as large as the base apps 6
7 What are our main concerns? Performance must be good enough Need to startup and open the database as fast as possible Must not use ridiculous amounts of memory as the application is used Warmup time needs to be as short as possible 7
8 What I m going to talk about today Memory usage Startup time Smoothing the path of moving from an old VM to a new one 8
9 Memory usage
10 Where we started on Java 8
11 First steps running on Java 8 Measure startup speed relative to Java 7 Examine memory relative to Java 7 Take heap dumps as the application is used Project memory usage of fully exercised application 11
12 What's using the memory? 1. LambdaForms 2. LambdaForms 3. LambdaForms 4. Concurrent Collections (!) 5. Atomics 6. Everything else 12
13 LambdaForms! Binding followed by adapting generated many many LFs Likewise drop arguments These combined to make SwitchPoint GWT surprising inefficient 13
14 Concurrent collections? We want a run time as lock free as possible a bad application shouldn't lock up core language infrastructure Concurrent collections are great in small numbers If every method has a little one to hold type adapted versions then the memory adds up 14
15 Atomics Again, we want things lock free if possible Methods have SwitchPoints to handle invalidation Flags Other meta-data All held in atomics to support update by multiple threads 15
16 What is everything else? Antlr s lexer generation produces large short arrays Our globals are stored in a prefix tree, we need to move them to a more compact structure Reflection caches can be huge Many other small things, but they add up 16
17 Reducing memory usage
18 Prototyping / proof of concept Change MH adaption order Cache unbound adapters for CallSites Reduce the PIC of each site to 1 Write our own SwitchPoint class 18
19 Old CallSite fallback adaption Exact Invoker Fold Type adaption Bind to CallSite Fallback 19
20 Old CallSite fallback adaption Exact Invoker Fold Type adaption Bind to CallSite Fallback 20
21 New CallSite fallback adaption Exact Invoker Drop argument Bind to CallSite Fold Type adaption Fallback 21
22 New CallSite fallback adaption Exact Invoker Drop argument Bind to CallSite Fold Type adaption Fallback 22
23 GuardWithTest issue Guard With Test Bind to Class Target Fallback ClassCheck 23
24 GuardWithTest issue Guard With Test Drop arguments Target Fallback Bind to Class ClassCheck 24
25 GuardWithTest solution Guard With Test Bind to Class Target Fallback Drop arguments ClassCheck 25
26 GuardWithTest solution Guard With Test Bind to Class Target Fallback Drop arguments ClassCheck 26
27 GuardWithTest solution Guard With Test Bind to Class Target Fallback Drop arguments ClassCheck 27
28 SwitchPoint dynamicinvoker Exact Invoker Fold Type adaption Bind to CallSite GET_TARGET 28
29 SwitchPoint dynamicinvoker Exact Invoker Fold Type adaption Bind to CallSite GET_TARGET 29
30 SwitchPoint guardwithtest Guard With Test Drop Arguments Target Fallback Invoker 30
31 SwitchPoint guardwithtest Guard With Test Bind to CallSite Target Fallback Fold Type adaption ExactInvoker GET_TARGET 31
32 SwitchPoint guardwithtest Guard With Test Bind to CallSite Target Fallback Fold Type adaption ExactInvoker GET_TARGET 32
33 Did it help? Yes! More than halved the LFs Applications feel faster when first started Memory usage significantly reduced 33
34 Putting it into production Started by tackling easy parts. Concurrent collections, Atomics etc. Then refactor call sites This work is still on going 34
35 CallSites: optimising for the common cases Method calls are complex Normal, super, self How many results? All sites supported instrumentation Added complexity to each instance 35
36 Refactor into many classes Normal Call Call To Self Super Call Single Result Single PrivateSingle SuperPrivateSingle Tuple Result Tuple PrivateTuple SuperPrivateTuple Unknown Number of Results Private SuperPrivate 36
37 Move towards functional composition Hard to build a good class hierarchy without repetition Some functionality based on choices at runtime (instrumentation etc.) Allows megamorphic costs to only be paid by the sites that need it 37
38 Unexpected advantages MethodSendPrivateSingleCallSite Number 0 5,000 10,000 15,000 20,000 25,000 30,000 35,000 40,000 45,000 MethodSendSingleCallSite MethodSendTupleCallSite MethodSendPrivateTupleCallSite MethodSendCallSite MethodSendPrivateCallSite MethodSendSuperPrivateSingleCallSite MethodSendSuperPrivateCallSite MethodSendSuperPrivateTupleCallSite 38
39 Start up and database open
40 Bootstrapping the system Bootstrapping the system involves loading a lot of code that is only run once Loading a class looks up MethodHandle constants repeatedly Loading a module causes resources to be scanned on disk 40
41 Improving this Improving Java s MH constant caching improves our start up time by over 10% Emitting fewer larger classes may also help Restructure our resource system to stop using the file system We may look at more radical solutions depending on where the time is spent 41
42 Opening the database Lots of meta-programming Subclasses for record types Field access methods Join navigation Old VM allowed images to be saved after all this had been initialised 42
43 Opening the database faster Creating new classes requires reflection Cache data on classes you know you ll need again Be very careful about the reflection calls you make, some are faster than others Be very focused about invalidating CallSites 43
44 Why? Unoptimised class/method creation After performance work MagikSF Alchemy (Java 7u25) Alchemy (Java 8) 0 MagikSF Alchemy (Java 7u25) Alchemy (Java 8) 44 GE Title or job number 7/28/2014
45 Serialisation Need to turn the whole data dictionary into a series of blobs Some things are hard to serialise Want to restore database connections in parallel trial by fire for thread safety Additional work then needed to stitch everything back together 45
46 How much faster is it? 80 Time to open database Without serialisation With serialisation 46
47 What s still to do? Fix some concurrency bugs Test with more databases 47
48 Easing the transition
49 Need to help people moving from our old VM Used to running tests with some form of coverage analysis Not used to threads being truly concurrent 49
50 Coverage of non-java languages Jacoco can compile coverage stats without any problems We ve run large test suites through it and nothing terrible happened Displaying those results is a different story 50
51 Coverage results Presenting coverage data for a large code base requires hierarchical display The packages for your classes need to be in a good hierarchy as well or the results still won t be managable If the class file contains info about the source file then use that, don t depend on Java source conventions 51
52 How much work is this? Prototyping changes to Jacoco took an afternoon Haven t turned those into proper patches yet Changes to our compiler still to be done 52
53 Threading We can instrument thread creation and use of atomic queues and locks That only catches the cases where people thought about thread safety at all 53
54 Summary
55 MethodHandle caching and reuse is vital Serialisation and optimising metaprogramming really help startup speeds No easy answers for finding concurrency issues 55
56
April 15, 2009 John R. Rose, Sr. Staff Engineer
New JVM Plumbing: Method Handles and More April 15, 2009 John R. Rose, Sr. Staff Engineer john.rose@sun.com http://blogs.sun.com/jrose 1 Method Handles are Anonymous references to JVM methods Like methods,
More informationINTRODUCTION. 2
1 INTRODUCTION Being fluent in a programming language can guarantee you a hefty salary and a great job position. Out of the thousands of programming languages that are currently out there, Python has shown
More informationClickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1
Presents A case study by Devin Zander A look into how absolutely easy internet marketing is. Money Mindset Page 1 Hey guys! Quick into I m Devin Zander and today I ve got something everybody loves! Me
More informationDynalink. Dynamic Linker Framework for Languages on the JVM. Attila Szegedi, Software Engineer, Twitter
Dynalink Dynamic Linker Framework for Languages on the JVM Attila Szegedi, Software Engineer, Twitter Inc. @asz 1 What s the problem? circle.color = 0xae17e3 class Circle def color=(value)... end end public
More informationRsyslog: going up from 40K messages per second to 250K. Rainer Gerhards
Rsyslog: going up from 40K messages per second to 250K Rainer Gerhards What's in it for you? Bad news: will not teach you to make your kernel component five times faster Perspective user-space application
More informationLearning from Bad Examples. CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014
Learning from Bad Examples CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014 1 Goals Demonstrate techniques to design for shared mutability Build on an example where multiple threads
More informationJSR 292 and companions Rémi Forax FOSDEM'09
JSR 292 and companions Rémi Forax FOSDEM'09 Da Vinci Mission Prototype (J)VM extensions to run non-java languages efficiently Complete the existing architecture with general purpose extensions New languages
More informationHeap Management. Heap Allocation
Heap Management Heap Allocation A very flexible storage allocation mechanism is heap allocation. Any number of data objects can be allocated and freed in a memory pool, called a heap. Heap allocation is
More informationDeallocation Mechanisms. User-controlled Deallocation. Automatic Garbage Collection
Deallocation Mechanisms User-controlled Deallocation Allocating heap space is fairly easy. But how do we deallocate heap memory no longer in use? Sometimes we may never need to deallocate! If heaps objects
More informationOBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis
UNIT I INTRODUCTION OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis Design Implementation Testing Maintenance
More informationAddressing Verification Bottlenecks of Fully Synthesized Processor Cores using Equivalence Checkers
Addressing Verification Bottlenecks of Fully Synthesized Processor Cores using Equivalence Checkers Subash Chandar G (g-chandar1@ti.com), Vaideeswaran S (vaidee@ti.com) DSP Design, Texas Instruments India
More informationDynamic Dispatch and Duck Typing. L25: Modern Compiler Design
Dynamic Dispatch and Duck Typing L25: Modern Compiler Design Late Binding Static dispatch (e.g. C function calls) are jumps to specific addresses Object-oriented languages decouple method name from method
More informationProcesses and Threads
COS 318: Operating Systems Processes and Threads Kai Li and Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall13/cos318 Today s Topics u Concurrency
More informationThe New Java Technology Memory Model
The New Java Technology Memory Model java.sun.com/javaone/sf Jeremy Manson and William Pugh http://www.cs.umd.edu/~pugh 1 Audience Assume you are familiar with basics of Java technology-based threads (
More informationCS 326: Operating Systems. Process Execution. Lecture 5
CS 326: Operating Systems Process Execution Lecture 5 Today s Schedule Process Creation Threads Limited Direct Execution Basic Scheduling 2/5/18 CS 326: Operating Systems 2 Today s Schedule Process Creation
More information1: Introduction to Object (1)
1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface
More informationThread Safety. Review. Today o Confinement o Threadsafe datatypes Required reading. Concurrency Wrapper Collections
Thread Safety Today o Confinement o Threadsafe datatypes Required reading Concurrency Wrapper Collections Optional reading The material in this lecture and the next lecture is inspired by an excellent
More informationFlow-sensitive rewritings and Inliner improvements for the Graal JIT compiler
1 / 25 Flow-sensitive rewritings and for the Graal JIT compiler Miguel Garcia http://lampwww.epfl.ch/~magarcia/ 2014-07-07 2 / 25 Outline Flow-sensitive rewritings during HighTier Example Rewritings in
More informationPrinciples of Programming Languages. Objective-C. Joris Kluivers
Principles of Programming Languages Objective-C Joris Kluivers joris.kluivers@gmail.com History... 3 NeXT... 3 Language Syntax... 4 Defining a new class... 4 Object identifiers... 5 Sending messages...
More informationCache Coherence Tutorial
Cache Coherence Tutorial The cache coherence protocol described in the book is not really all that difficult and yet a lot of people seem to have troubles when it comes to using it or answering an assignment
More informationTANGO CONTROLS CONCEPTS
TANGO CONTROLS CONCEPTS A brief introduction to Tango Controls Concepts Andy Götz 2 Tango has a number of concepts 3 Tango == actors + microservices Tango is based on the concept of Distributed Devices
More informationSafety SPL/2010 SPL/20 1
Safety 1 system designing for concurrent execution environments system: collection of objects and their interactions system properties: Safety - nothing bad ever happens Liveness - anything ever happens
More informationOptimizing Your Android Applications
Optimizing Your Android Applications Alexander Nelson November 27th, 2017 University of Arkansas - Department of Computer Science and Computer Engineering The Problem Reminder Immediacy and responsiveness
More informationEngineering Robust Server Software
Engineering Robust Server Software Scalability Other Scalability Issues Database Load Testing 2 Databases Most server applications use databases Very complex pieces of software Designed for scalability
More informationData Structures (list, dictionary, tuples, sets, strings)
Data Structures (list, dictionary, tuples, sets, strings) Lists are enclosed in brackets: l = [1, 2, "a"] (access by index, is mutable sequence) Tuples are enclosed in parentheses: t = (1, 2, "a") (access
More informationUnderstanding Hardware Transactional Memory
Understanding Hardware Transactional Memory Gil Tene, CTO & co-founder, Azul Systems @giltene 2015 Azul Systems, Inc. Agenda Brief introduction What is Hardware Transactional Memory (HTM)? Cache coherence
More informationThe Kernel Abstraction
The Kernel Abstraction Debugging as Engineering Much of your time in this course will be spent debugging In industry, 50% of software dev is debugging Even more for kernel development How do you reduce
More informationOverview of OOP. Dr. Zhang COSC 1436 Summer, /18/2017
Overview of OOP Dr. Zhang COSC 1436 Summer, 2017 7/18/2017 Review Data Structures (list, dictionary, tuples, sets, strings) Lists are enclosed in square brackets: l = [1, 2, "a"] (access by index, is mutable
More informationSemantic Analysis. Lecture 9. February 7, 2018
Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average
More informationChecked and Unchecked Exceptions in Java
Checked and Unchecked Exceptions in Java Introduction In this article from my free Java 8 course, I will introduce you to Checked and Unchecked Exceptions in Java. Handling exceptions is the process by
More informationDynamic Languages Strike Back. Steve Yegge Stanford EE Dept Computer Systems Colloquium May 7, 2008
Dynamic Languages Strike Back Steve Yegge Stanford EE Dept Computer Systems Colloquium May 7, 2008 What is this talk about? Popular opinion of dynamic languages: Unfixably slow Not possible to create IDE-quality
More informationCS354 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 informationClean & 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 informationOpenACC Course. Office Hour #2 Q&A
OpenACC Course Office Hour #2 Q&A Q1: How many threads does each GPU core have? A: GPU cores execute arithmetic instructions. Each core can execute one single precision floating point instruction per cycle
More informationParallelism and Concurrency. COS 326 David Walker Princeton University
Parallelism and Concurrency COS 326 David Walker Princeton University Parallelism What is it? Today's technology trends. How can we take advantage of it? Why is it so much harder to program? Some preliminary
More informationSynchronization. CS61, Lecture 18. Prof. Stephen Chong November 3, 2011
Synchronization CS61, Lecture 18 Prof. Stephen Chong November 3, 2011 Announcements Assignment 5 Tell us your group by Sunday Nov 6 Due Thursday Nov 17 Talks of interest in next two days Towards Predictable,
More informationBuilding custom components IAT351
Building custom components IAT351 Week 1 Lecture 1 9.05.2012 Lyn Bartram lyn@sfu.ca Today Review assignment issues New submission method Object oriented design How to extend Java and how to scope Final
More informationStanford University Computer Science Department CS 240 Quiz 1 Spring May 6, total
Stanford University Computer Science Department CS 240 Quiz 1 Spring 2004 May 6, 2004 This is an open-book exam. You have 50 minutes to answer eight out of nine questions. Write all of your answers directly
More informationMethodHandle implemention tips and tricks
MethodHandle implemention tips and tricks Dan Heidinga J9 VM Software Developer daniel_heidinga@ca.ibm.com J9 Virtual Machine 2011 IBM Corporation MethodHandles: a 30 sec introduction A method handle is
More informationHow Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk
How Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk Oscar Callaú, Romain Robbes, Éric Tanter (University of Chile) David Röthlisberger (University of Bern) Proceedings
More informationWelfare Navigation Using Genetic Algorithm
Welfare Navigation Using Genetic Algorithm David Erukhimovich and Yoel Zeldes Hebrew University of Jerusalem AI course final project Abstract Using standard navigation algorithms and applications (such
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Multithreading Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to large compute clusters Can perform multiple
More informationCSE 374 Programming Concepts & Tools
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 22 Shared-Memory Concurrency 1 Administrivia HW7 due Thursday night, 11 pm (+ late days if you still have any & want to use them) Course
More informationEffective Testing for Live Applications. March, 29, 2018 Sveta Smirnova
Effective Testing for Live Applications March, 29, 2018 Sveta Smirnova Table of Contents Sometimes You Have to Test on Production Wrong Data SELECT Returns Nonsense Wrong Data in the Database Performance
More informationThis is the forth SAP MaxDB Expert Session and this session covers the topic database performance analysis.
1 This is the forth SAP MaxDB Expert Session and this session covers the topic database performance analysis. Analyzing database performance is a complex subject. This session gives an overview about the
More informationmismatch between what is maybe possible today and what is going on in many of today's IDEs.
What will happen if we do very, very small and lightweight tools instead of heavyweight, integrated big IDEs? Lecturer: Martin Lippert, VMware and Eclispe tooling expert LIPPERT: Welcome, everybody, to
More informationMethodHandle Introspection: Internals
Dan Heidinga J9 Virtual Machine 30 July 2012 MethodHandle Introspection: Internals Standard disclaimer IBM s statements regarding its plans, directions and intent are subject to change or withdrawal at
More informationSoftware Engineering Testing and Debugging Testing
Software Engineering Testing and Debugging Testing Prof. Dr. Peter Thiemann Universitt Freiburg 08.06.2011 Recap Testing detect the presence of bugs by observing failures Debugging find the bug causing
More informationThe Dynamic Typing Interlude
CHAPTER 6 The Dynamic Typing Interlude In the prior chapter, we began exploring Python s core object types in depth with a look at Python numbers. We ll resume our object type tour in the next chapter,
More information/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/27/17
01.433/33 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/2/1.1 Introduction In this lecture we ll talk about a useful abstraction, priority queues, which are
More informationReversed Buffer Overflow Cross Stack Attacks. Kris Kaspersky Endeavor Security, Inc.
Reversed Buffer Overflow Cross Stack Attacks Kris Kaspersky Endeavor Security, Inc. Who am I? journalist, reversing as a hobby; currently working for: XAKEP magazine (www.xakep.ru) Endeavor Security, Inc
More informationPublic Meeting Agenda Formatting Best Practices
DEFINITIVE GUIDE Public Meeting Agenda Formatting Best Practices In this guide, we will first walk you through some best practices with text and images. Then, we will show you how to execute the best practices
More informationPause-Less GC for Improving Java Responsiveness. Charlie Gracie IBM Senior Software charliegracie
Pause-Less GC for Improving Java Responsiveness Charlie Gracie IBM Senior Software Developer charlie_gracie@ca.ibm.com @crgracie charliegracie 1 Important Disclaimers THE INFORMATION CONTAINED IN THIS
More informationTest Driven Development (TDD)
Test Driven Development (TDD) Test Driven Development Introduction Good programmers write code, great programmers write tests Never, in the field of programming, have so many owed so much to so few - Martin
More information<Insert Picture Here> Implementing lambda expressions in Java
Implementing lambda expressions in Java Brian Goetz Java Language Architect Adding lambda expressions to Java In adding lambda expressions to Java, the obvious question is: what is
More informationSmoother Graphics Taking Control of Painting the Screen
It is very likely that by now you ve tried something that made your game run rather slow. Perhaps you tried to use an image with a transparent background, or had a gazillion objects moving on the window
More informationToday s Hall of Fame and Shame is a comparison of two generations of Google Advanced Search. This is the old interface.
1 Today s Hall of Fame and Shame is a comparison of two generations of Google Advanced Search. This is the old interface. 2 And this is the new interface. (If you can t read the image, go to http://www.google.com/advanced_search.)
More informationAdvanced concurrent programming in Java Shared objects
Advanced concurrent programming in Java Shared objects Mehmet Ali Arslan 21.10.13 Visibility To see(m) or not to see(m)... 2 There is more to synchronization than just atomicity or critical sessions. Memory
More informationObject-Oriented Design
Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration
More informationCPS 310 first midterm exam, 10/6/2014
CPS 310 first midterm exam, 10/6/2014 Your name please: Part 1. More fun with fork and exec* What is the output generated by this program? Please assume that each executed print statement completes, e.g.,
More informationMonitoring Tool Made to Measure for SharePoint Admins. By Stacy Simpkins
Monitoring Tool Made to Measure for SharePoint Admins By Stacy Simpkins Contents About the Author... 3 Introduction... 4 Who s it for and what all can it do?... 4 SysKit Insights Features... 6 Drillable
More informationPYTHON TRAINING COURSE CONTENT
SECTION 1: INTRODUCTION What s python? Why do people use python? Some quotable quotes A python history lesson Advocacy news What s python good for? What s python not good for? The compulsory features list
More informationConcurrency. Glossary
Glossary atomic Executing as a single unit or block of computation. An atomic section of code is said to have transactional semantics. No intermediate state for the code unit is visible outside of the
More informationThere And Back Again
There And Back Again Databases At Uber Evan Klitzke October 4, 2016 Outline Background MySQL To Postgres Connection Scalability Write Amplification/Replication Miscellaneous Other Things Databases at Uber
More informationFS Consistency & Journaling
FS Consistency & Journaling Nima Honarmand (Based on slides by Prof. Andrea Arpaci-Dusseau) Why Is Consistency Challenging? File system may perform several disk writes to serve a single request Caching
More informationPriming Java for Speed
Priming Java for Speed Getting Fast & Staying Fast Gil Tene, CTO & co-founder, Azul Systems 2013 Azul Systems, Inc. High level agenda Intro Java realities at Load Start A whole bunch of compiler optimization
More informationExcel on the Java VM. Generating Fast Code from Spreadsheet Models. Peter Arrenbrecht codewise.ch / Abacus Research AG Submission ID: 30
Excel on the Java VM Generating Fast Code from Spreadsheet Models Peter Arrenbrecht codewise.ch / Abacus Research AG Submission ID: 30 AGENDA > Problem: Customization Is Hard > Idea: Let Users Use Spreadsheets
More informationSwift 5, ABI Stability and
Swift 5, ABI Stability and Concurrency @phillfarrugia Important Documents Concurrency Manifesto by Chris Lattner https: /gist.github.com/lattner/ 31ed37682ef1576b16bca1432ea9f782 Kicking off Concurrency
More informationApple LLVM GPU Compiler: Embedded Dragons. Charu Chandrasekaran, Apple Marcello Maggioni, Apple
Apple LLVM GPU Compiler: Embedded Dragons Charu Chandrasekaran, Apple Marcello Maggioni, Apple 1 Agenda How Apple uses LLVM to build a GPU Compiler Factors that affect GPU performance The Apple GPU compiler
More informationStatus Report. JSR-305: Annotations for Software Defect Detection. William Pugh Professor
JSR-305: Annotations for Software Defect Detection William Pugh Professor Status Report Univ. of Maryland pugh@cs.umd.edu http://www.cs.umd.edu/~pugh/ 1 This JSR is under active development Slides have
More informationTechniques for Optimizing Reusable Content in LibGuides
University of Louisville From the SelectedWorks of Terri Holtze April 21, 2017 Techniques for Optimizing Reusable Content in LibGuides Terri Holtze, University of Louisville Available at: https://works.bepress.com/terri-holtze/4/
More informationStatic Methods. Why use methods?
Static Methods A method is just a collection of code. They are also called functions or procedures. It provides a way to break a larger program up into smaller, reusable chunks. This also has the benefit
More informationAgenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1
Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies
More informationEngineering Robust Server Software
Engineering Robust Server Software Scalability Other Scalability Issues Database Load Testing 2 Databases Most server applications use databases Very complex pieces of software Designed for scalability
More informationPRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE. Speaking the Language of OO
PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE Speaking the Language of OO COURSE INFO Instructor : Alper Bilge TA : Gökhan Çıplak-Ahmet Alkılınç Time : Tuesdays 2-5pm Location
More informationLast Class: Synchronization
Last Class: Synchronization Synchronization primitives are required to ensure that only one thread executes in a critical section at a time. Concurrent programs Low-level atomic operations (hardware) load/store
More informationLecture 14: Exceptions 10:00 AM, Feb 26, 2018
CS18 Integrated Introduction to Computer Science Fisler, Nelson Lecture 14: Exceptions 10:00 AM, Feb 26, 2018 Contents 1 Exceptions and How They Work 1 1.1 Update to the Banking Example.............................
More informationAs a programmer, you know how easy it can be to get lost in the details
Chapter 1 Congratulations, Your Problem Has Already Been Solved In This Chapter Introducing design patterns Knowing how design patterns can help Extending object-oriented programming Taking a look at some
More informationCute Tricks with Virtual Memory
Cute Tricks with Virtual Memory A short history of VM (and why they don t work) CS 614 9/7/06 by Ari Rabkin Memory used to be quite limited. Use secondary storage to emulate. Either by swapping out whole
More informationLow level security. Andrew Ruef
Low level security Andrew Ruef What s going on Stuff is getting hacked all the time We re writing tons of software Often with little regard to reliability let alone security The regulatory environment
More informationFileWave 10 Webinar Q&A
FileWave 10 Webinar Q&A When will 10 be released? October 14 th, but you can sign up today to get into the beta program. Link: www.filewave.com/beta-program How stable is the beta? Should we use it for
More informationLecture 4: Memory Management & The Programming Interface
CS 422/522 Design & Implementation of Operating Systems Lecture 4: Memory Management & The Programming Interface Zhong Shao Dept. of Computer Science Yale University Acknowledgement: some slides are taken
More informationSynchronization SPL/2010 SPL/20 1
Synchronization 1 Overview synchronization mechanisms in modern RTEs concurrency issues places where synchronization is needed structural ways (design patterns) for exclusive access 2 Overview synchronization
More informationCSE341: Programming Languages Lecture 9 Function-Closure Idioms. Dan Grossman Winter 2013
CSE341: Programming Languages Lecture 9 Function-Closure Idioms Dan Grossman Winter 2013 More idioms We know the rule for lexical scope and function closures Now what is it good for A partial but wide-ranging
More informationLecture 11 Unbounded Arrays
Lecture 11 Unbounded Arrays 15-122: Principles of Imperative Computation (Spring 2018) Rob Simmons, Frank Pfenning Arrays have efficient O(1) access to elements given an index, but their size is set at
More informationPROGRAMMING GOOGLE APP ENGINE WITH PYTHON: BUILD AND RUN SCALABLE PYTHON APPS ON GOOGLE'S INFRASTRUCTURE BY DAN SANDERSON
PROGRAMMING GOOGLE APP ENGINE WITH PYTHON: BUILD AND RUN SCALABLE PYTHON APPS ON GOOGLE'S INFRASTRUCTURE BY DAN SANDERSON DOWNLOAD EBOOK : PROGRAMMING GOOGLE APP ENGINE WITH PYTHON: Click link bellow and
More information10/10/ Gribble, Lazowska, Levy, Zahorjan 2. 10/10/ Gribble, Lazowska, Levy, Zahorjan 4
What s in a process? CSE 451: Operating Systems Autumn 2010 Module 5 Threads Ed Lazowska lazowska@cs.washington.edu Allen Center 570 A process consists of (at least): An, containing the code (instructions)
More information12 Follow-up Templates
12 Follow-up Email Templates that help turn prospects into customers in 2018 When you look at the sales process of most B2B sales teams, there s typically A LOT of things that you could improve. I generally
More informationWhat s in a process?
CSE 451: Operating Systems Winter 2015 Module 5 Threads Mark Zbikowski mzbik@cs.washington.edu Allen Center 476 2013 Gribble, Lazowska, Levy, Zahorjan What s in a process? A process consists of (at least):
More informationMoarVM. A metamodel-focused runtime for NQP and Rakudo. Jonathan Worthington
MoarVM A metamodel-focused runtime for NQP and Rakudo Jonathan Worthington What does a VM typically do? Execute instructions (possibly by interpreting, possibly by JIT compilation, often a combination)
More informationKNSP: A Kweelt - Niagara based Quilt Processor Inside Cocoon over Apache
KNSP: A Kweelt - Niagara based Quilt Processor Inside Cocoon over Apache Xidong Wang & Shiliang Hu {wxd, shiliang}@cs.wisc.edu Department of Computer Science, University of Wisconsin Madison 1. Introduction
More informationHigh Quality 4D Development. David Adams
David Adams Introduction 1 Chapter 1 - About This Training 3 What To Expect... 3 Course Organization... 3 Course Contents... 3 About The Materials... 5 Conventions Used in This Manual... 7 Phones & Pagers...
More informationCSE 153 Design of Operating Systems Fall 2018
CSE 153 Design of Operating Systems Fall 2018 Lecture 5: Threads/Synchronization Implementing threads l Kernel Level Threads l u u All thread operations are implemented in the kernel The OS schedules all
More informationOperating Systems. Operating System Structure. Lecture 2 Michael O Boyle
Operating Systems Operating System Structure Lecture 2 Michael O Boyle 1 Overview Architecture impact User operating interaction User vs kernel Syscall Operating System structure Layers Examples 2 Lower-level
More informationKolmo. Making automation & configuration easier. bert hubert. -
Kolmo Making automation & configuration easier bert hubert https://kolmo.org/ - http://tinyurl.org/kolmopreso @PowerDNS_Bert 128Kbit/s, 500ms latency. Also, Biddinghuizen You can t download the configuration?!?!
More informationJSR 292 Cookbook: Fresh Recipes with New Ingredients
JSR 292 Cookbook: Fresh Recipes with New Ingredients John Rose Christian Thalinger Sun Microsystems Overview Got a language cooking on the JVM? JSR 292, a set of major changes to the JVM architecture,
More informationConsistency. CS 475, Spring 2018 Concurrent & Distributed Systems
Consistency CS 475, Spring 2018 Concurrent & Distributed Systems Review: 2PC, Timeouts when Coordinator crashes What if the bank doesn t hear back from coordinator? If bank voted no, it s OK to abort If
More informationObject-oriented Compiler Construction
1 Object-oriented Compiler Construction Extended Abstract Axel-Tobias Schreiner, Bernd Kühl University of Osnabrück, Germany {axel,bekuehl}@uos.de, http://www.inf.uos.de/talks/hc2 A compiler takes a program
More informationComputation Abstractions. Processes vs. Threads. So, What Is a Thread? CMSC 433 Programming Language Technologies and Paradigms Spring 2007
CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Threads and Synchronization May 8, 2007 Computation Abstractions t1 t1 t4 t2 t1 t2 t5 t3 p1 p2 p3 p4 CPU 1 CPU 2 A computer Processes
More informationLecture 5: Declarative Programming. The Declarative Kernel Language Machine. September 12th, 2011
Lecture 5: Declarative Programming. The Declarative Kernel Language Machine September 12th, 2011 1 Lecture Outline Declarative Programming contd Dataflow Variables contd Expressions and Statements Functions
More information