{ DeltaShell 64bit Considerations for developers.

Slides:



Advertisements
Similar presentations
Creating a Dialog-Based Comet Windows Program Brian Levantine.
Advertisements

Building a UE4 Plugin FMOD STUDIO Case Study.
Compiler Optimized Dynamic Taint Analysis James Kasten Alex Crowell.
Building Localized Applications with Microsoft.NET Framework and Visual Studio.NET Achim Ruopp International Program Manager Microsoft Corp.
Advanced microprocessor optimization Kampala August, 2007 Agner Fog
Chapter 11 (3 rd Edition) Hash-Based Indexes Xuemin COMP9315: Database Systems Implementation.
Copyright ©: Lawrence Angrave, Vikram Adve, Caccamo 1 Virtual Memory III.
Computer Organization CS224 Fall 2012 Lesson 12. Synchronization  Two processors or threads sharing an area of memory l P1 writes, then P2 reads l Data.
16.317: Microprocessor System Design I
1 Hash-Based Indexes Yanlei Diao UMass Amherst Feb 22, 2006 Slides Courtesy of R. Ramakrishnan and J. Gehrke.
Computer ArchitectureFall 2008 © CS : Computer Architecture Lecture 22 Virtual Memory (1) November 6, 2008 Nael Abu-Ghazaleh.
Memory Management. 2 How to create a process? On Unix systems, executable read by loader Compiler: generates one object file per source file Linker: combines.
1 Hash-Based Indexes Chapter Introduction  Hash-based indexes are best for equality selections. Cannot support range searches.  Static and dynamic.
1 Real-Time System Design Developing a Cross Compiler and libraries for a target system.
1 Hash-Based Indexes Chapter Introduction : Hash-based Indexes  Best for equality selections.  Cannot support range searches.  Static and dynamic.
1 CE6130 現代作業系統核心 Modern Operating System Kernels 許 富 皓.
Efficiently Sharing Common Data HTCondor Week 2015 Zach Miller Center for High Throughput Computing Department of Computer Sciences.
Rona Lustig Senior Consultant Microsoft Consulting Services
Microsoft ® Application Virtualization 4.5 Infrastructure Planning and Design Series.
Source Code Basics. Code For a computer to execute instructions, it needs to be in binary Each instruction is given a number Known as “operation code”
Version Control. What is Version Control? Manages file sharing for Concurrent Development Keeps track of changes with Version Control SubVersion (SVN)
Oracle Memory Configuration on Windows Server Configuring Large Memory for Oracle on 32-bit and 64-bit Windows.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Visual Basic: An Object Oriented Approach 12 – Creating and using ActiveX objects.
Chapter 4 COB 204. What do you need to know about hardware? 
CIS NET Applications1 Chapter 2 –.NET Component- Oriented Programming Essentials.
.NET Framework & C#.
Computing IV Visual C Introduction with OpenCV Example Xinwen Fu.
A genda for Today What is memory management Source code to execution Address binding Logical and physical address spaces Dynamic loading, dynamic linking,
Chapter 8 Memory Management Dr. Yingwu Zhu. Outline Background Basic Concepts Memory Allocation.
MIPS coding. SPIM Some links can be found such as:
‘Tirgul’ # 7 Enterprise Development Using Visual Basic 6.0 Autumn 2002 Tirgul #7.
Roopa.T PESIT, Bangalore. Source and Credits Dalvik VM, Dan Bornstein Google IO 2008 The Dalvik virtual machine Architecture by David Ehringer.
Chapter 4 Storage Management (Memory Management).
CIS250 OPERATING SYSTEMS Memory Management Since we share memory, we need to manage it Memory manager only sees the address A program counter value indicates.
Lecture Topics: 11/17 Page tables TLBs Virtual memory flat page tables
CRT State Stuff Dana Robinson The HDF Group. In the next slide, I show a single executable linked to three dlls. Two dlls and the executable were built.
Hashing and Hash-Based Index. Selection Queries Yes! Hashing  static hashing  dynamic hashing B+-tree is perfect, but.... to answer a selection query.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
Writing a Run Time DLL The application loads the DLL using LoadLibrary() or LoadLibraryEx(). The standard search sequence is used by the operating system.
1.1 CS220 Database Systems Indexing: Hashing Slides courtesy G. Kollios Boston University via UC Berkeley.
Database Management Systems, R. Ramakrishnan and J. Gehrke1 Hash-Based Indexes Chapter 10.
Garbage Collection and Classloading Java Garbage Collectors  Eden Space  Surviver Space  Tenured Gen  Perm Gen  Garbage Collection Notes Classloading.
Review °Apply Principle of Locality Recursively °Manage memory to disk? Treat as cache Included protection as bonus, now critical Use Page Table of mappings.
Computer Architecture Lecture 27 Fasih ur Rehman.
Swap Space and Other Memory Management Issues Operating Systems: Internals and Design Principles.
Nachos Lecture 2 Xiaorui Sun. Phase 2 You have got one machine (machine package) You have to implements the incomplete OS (userprog package) Run programs.
CPS110: Intro to memory Landon Cox February 14, 2008.
Module 7: SQL Server Special Considerations. Overview SQL Server High Availability Unicode.
REFERENCE: CHAPTER 1 High-level languages + Python.
Win32 Programming Lesson 19: Introduction to DLLs.
1 Introduction to Object Oriented Programming Chapter 10.
By Anand George SourceLens.org Copyright. All rights reserved. Content Owner - Meera R (meera at sourcelens.org)
Module 1: Designing IIS Web Farms Changes in a Nutshell shell-shared-hosting-improvements-on-iis7.aspx.
Memory Management. 2 How to create a process? On Unix systems, executable read by loader Compiler: generates one object file per source file Linker: combines.
Mastering Windows Network Forensics and Investigation Chapter 6: Live Analysis Techniques.
OE-NIK HP Advanced Programming Using and creating DLL files.
Chapter 7: Main Memory CS 170, Fall Program Execution & Memory Management Program execution Swapping Contiguous Memory Allocation Paging Structure.
W4118 Operating Systems Instructor: Junfeng Yang.
Muen Policy & Toolchain
Diskpool and cloud storage benchmarks used in IT-DSS
2.1. Compilers and Interpreters
Programming Languages
Lecture 25: Introduction to Memory Management
Page Replacement.
Embedded Development Application Note: Endian-Independence
Oracle Memory Configuration on Windows Server
Understanding DLLs and headers, and libs… Jeff Chastine.
Shared Hosting Workshop
Lecture 25: Introduction to Memory Management
Presentation transcript:

{ DeltaShell 64bit Considerations for developers

 A 32 bit process can:  Run on a 64bit OS  Load only 32bit native dlls  Allocate about 2 to 3GB  Throw OutOfMemoryException > 800mb  A 64 bit process can:  Not run on a 32bit OS  Load only 64bit native dlls  Allocate enough (16TB)  Slow down (swapping) > a few GB 32 vs 64

 Why 64 bit?  More memory!  Managed code doesn’t care, mostly (AnyCPU)  Machines sold today are 64bit  Why not 64 bit (yet)?  32bit support still required  Requires 64bit native dlls  Slightly slower (caching blah blah) Pros / cons

64bit Status March 2014 Component64bit status DeltaShellfull - GuiAnyCPU: two copies - ConsoleAnyCPU: two copies - Gdal2x native dlls - NetCdf2x native dlls - Sqlite2x native dlls Sobek (Flow, RR, RTC, Waq)32bit remote instance FMfull Wave32bit wave/swan Morphan / Xbeach / Habitat / WFD etcnot implemented FewsAdapter / OpenMInot implemented

 Types of binaries / projects:  Managed dlls[50%]  Test dlls[45%]  Native dll(s) [4%]  Exe[1%] How does it work?

 Create one configuration: AnyCPU  Set platform to AnyCPU  Refer only AnyCPU references Managed dll projects

 Create x86 and x64 configuration  Set platforms accordingly  If you want to test x86/x64 simultaneously, see tricks in Exe projects Test projects

 Get both 32bit and 64bit versions, including their dependencies!  Place them in x86 and x64 directories accordingly (in lib)  Note: copying to test projects (ExternalDependencies) requires recursive copy now!  Adjust wix for MSI ;-) Native dlls - files

 Add static constructor to DllImport class (see image)  (Or otherwise make sure that correct LoadLibrary is done before any DllImports can be resolved) Native dlls - code

 What if you don’t have a 64bit version (yet)?  -> Remote instance container Native dlls – no 64bit?!

Nothing changes… you can continue to use the 32bit version Native exe

How it’s done for DeltaShell.Gui.exe (and others):  Create two configuration: x86 & x64  Set x64 to x64  Set x86 to AnyCPU (!)  x86/32bit build:  DeltaShell.Gui.exe is build as AnyCPU  Copy DeltaShell.Gui.exe to DeltaShell.Gui.x64.exe  Force DeltaShell.Gui.exe to run 32bit (x86), using ‘corflags’ tool in postbuild  VS run/debug: starts 32 bit  FOR DEPLOYMENT (builds 32 & 64 bit)!!  x64/64bit build:  DeltaShell.Gui.exe is AnyCPU (thus 64bit)  VS run/debug: starts 64 bit  FOR LOCAL TESTING ONLY!! (Managed) exe projects

Why??  No double compilation time to build both 32bit & 64bit  AnyCPU for 95% of the binaries anyway  Match deployment situation closely  64bit configuration exists for testing purposes in single build

 Think about test-coverage.. Duplicate all tests?  Start working on 64bit dlls for Sobek  Same for other projects… Discussion…