Rene Brun Booting ROOT with BOOT René Brun, Fons Rademakers CERN Geneva, Switzerland.

Slides:



Advertisements
Similar presentations
The new The new MONARC Simulation Framework Iosif Legrand  California Institute of Technology.
Advertisements

Wide-area cooperative storage with CFS
 Contents 1.Introduction about operating system. 2. What is 32 bit and 64 bit operating system. 3. File systems. 4. Minimum requirement for Windows 7.
InBatch 9.0 Jos Peters Technical Support Engineer.
Bertrand Bellenot root.cern.ch ROOT I/O in JavaScript Reading ROOT files from any web browser ROOT Users Workshop
Reading ROOT files in any browser ROOT I/O IN JAVASCRIPT Bertrand Bellenot CERN, PH-SFT.
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
6/1/2001 Supplementing Aleph Reports Using The Crystal Reports Web Component Server Presented by Bob Gerrity Head.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Sept 11, 2003ROOT Day1, Suzanne Panacek39 ROOT An object oriented HEP analysis framework. Day 1.
ROOT An object oriented HEP analysis framework.. Computing in Physics Physics = experimental science =>Experiments (e.g. at CERN) Planning phase Physics.
CSCI 224 Introduction to Java Programming. Course Objectives  Learn the Java programming language: Syntax, Idioms Patterns, Styles  Become comfortable.
CIS NET Applications1 Chapter 2 –.NET Component- Oriented Programming Essentials.
SUSE Linux Enterprise Server Administration (Course 3037) Chapter 4 Manage Software for SUSE Linux Enterprise Server.
5 Chapter Five Web Servers. 5 Chapter Objectives Learn about the Microsoft Personal Web Server Software Learn how to improve Web site performance Learn.
JAS3 + AIDA LC Simulations Workshop SLAC 19 th May 2003.
Infrastructure for Better Quality Internet Access & Web Publishing without Increasing Bandwidth Prof. Chi Chi Hung School of Computing, National University.
Why Java? A brief introduction to Java and its features Prepared by Mithat Konar.
ROOT impossible wishes1 Alice workshop Sibiu 21 August 2008 Ren é Brun CERN/PH/SFT ROOT Impossible wishes ?
Irina Sourikova Brookhaven National Laboratory for the PHENIX collaboration Migrating PHENIX databases from object to relational model.
Chapter 34 Java Technology for Active Web Documents methods used to provide continuous Web updates to browser – Server push – Active documents.
Java Root IO Part of the FreeHEP Java Library Tony Johnson Mark Dönszelmann
The Network Performance Advisor J. W. Ferguson NLANR/DAST & NCSA.
Presentation: SOAP/WS in a distributed object framework, Application Servers & AXIS SOAP.
CInt Function Stub Removal ROOT Team Meeting CERN Leandro Franco (Joint work with Diego Marcos)
V. Serbo, SLAC ACAT03, 1-5 December 2003 Interactive GUI for Geant4 by Victor Serbo, SLAC.
CINT C++ Interpreter update ROOT2001 at Fermi-Lab Masaharu Goto.
Operating Systems David Goldschmidt, Ph.D. Computer Science The College of Saint Rose CIS 432.
Acat OctoberRene Brun1 Future of Analysis Environments Personal views Rene Brun CERN.
ROOT and Federated Data Stores What Features We Would Like Fons Rademakers CERN CC-IN2P3, Nov, 2011, Lyon, France.
ROOT Future1 Some views on the ROOT future ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN.
6/1/2001 Supplementing Aleph Reports Using The Crystal Reports Web Component Server Presented by Bob Gerrity Head.
CHEP 2013, Amsterdam Reading ROOT files in a browser ROOT I/O IN JAVASCRIPT B. Bellenot, CERN, PH-SFT B. Linev, GSI, CS-EE.
OnX & ROOT1 OnX & ROOT on behalf of Guy Barrand ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN.
Getting rid of the “G__” thingies ROOT Team Meeting CERN Diego Marcos && Leandro Franco.
Apr. 8, 2002Calibration Database Browser Workshop1 Database Access Using D0OM H. Greenlee Calibration Database Browser Workshop Apr. 8, 2002.
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev CHEP 2003 GSI Online Offline Object Oriented Go4.
Scripting Languages Client Side and Server Side. Examples of client side/server side Examples of client-side side include: JavaScript Jquery (uses a JavaScript.
Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Tools and techniques for managing virtual machine images Andreas.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
ROOT I/O in JavaScript Browsing ROOT Files on the Web For more information see: For any questions please use following address:
Dispatching Java agents to user for data extraction from third party web sites Alex Roque F.I.U. HPDRC.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Super Scaling PROOF to very large clusters Maarten Ballintijn, Kris Gulbrandsen, Gunther Roland / MIT Rene Brun, Fons Rademakers / CERN Philippe Canal.
LCG AA Meeting 31 October 2007 The new dynamically and extensively customizable ROOT browser Bertrand Bellenot.
D. Duellmann - IT/DB LCG - POOL Project1 The LCG Dictionary and POOL Dirk Duellmann.
CINT & Reflex – The Future CINT’s Future Layout Reflex API Work In Progress: Use Reflex to store dictionary data Smaller memory footprint First step to.
Overview, Major Developments, Directions1 ROOT Project Status Major developments Directions NSS05 Conference 25 October Ren é Brun CERN Based on my presentation.
Institute for the Protection and Security of the Citizen HAZAS – Hazard Assessment ECCAIRS Technical Course Provided by the Joint Research Centre - Ispra.
S.Linev: Go4 - J.Adamczewski, H.G.Essel, S.Linev ROOT 2005 New development in Go4.
1 G4UIRoot Isidro González ALICE ROOT /10/2002.
Go4 Workshop J.Adamczewski-Musch, S.Linev Go4 advanced features.
20 October 2005 LCG Generator Services monthly meeting, CERN Validation of GENSER & News on GENSER Alexander Toropin LCG Generator Services monthly meeting.
Some ideas for possible future developments LCG Applications area meeting 8 March 2006 Ren é Brun CERN.
What is New in Core Fons Rademakers 1. Library Reorganization Split off from libCore: libRIO libNet libMath (soon) These libraries are now loaded at run-
1 Copyright © 2008, Oracle. All rights reserved. Repository Basics.
2001 ROOT Workshop The Summary. Content Most Requested Request already satisfied Build and Distribution Web Page Information and Documentation.
“Port Monitor”: progress & open questions Torsten Wilde and James Kohl Oak Ridge National Laboratory CCA Forum Quarterly Meeting Santa Fe, NM ~ October.
Cosc 4765 Antivirus Approaches. In a Perfect world The best solution to viruses and worms to prevent infected the system –Generally considered impossible.
ROOT : Outlook and Developments WLCG Jamboree Amsterdam June 2010 René Brun/CERN.
HYDRA Framework. Setup of software environment Setup of software environment Using the documentation Using the documentation How to compile a program.
Packaging and Deploying Windows Applications
Ideas for ROOT in the future
ROOT Base and SealBase Fons Rademakers Ilka Antcheva Bertrand Bellenot
ROOT Project Status Report
Chapter 2: System Structures
PHP / MySQL Introduction
caQtDM: future use of a display manager
Support for ”interactive batch”
(Computer fundamental Lab)
Presentation transcript:

Rene Brun Booting ROOT with BOOT René Brun, Fons Rademakers CERN Geneva, Switzerland

2 Rene Brun: Booting ROOT with BOOT Plan The BOOT ideas were introduced at CHEP06 in Mumbay. Meanwhile these ideas have matured and many are now a reality. In this talk we will describe: Achievements already in released version 5.16 (June 07) Developments in current CVS head -> in December release 5.18 Plans for short and medium term. Note that BOOT is the name of the project and not necessarily the name of an executable module.

3 Rene Brun: Booting ROOT with BOOT BOOT: Ideas The goal is to facilitate the life of an average user Making the installation trivial Providing automatic updates Loading only what you need, ie minimizing memory use Dynamic linking via plug-in manager Making the UI (in particular the GUI widgets) more dynamic to accommodate extensions (ROOT or user classes).

4 Rene Brun: Booting ROOT with BOOT Some Facts ROOTIn1995 ROOTIn shared libs 200 classes 100 shared libs 1800 classes PAW model Plug-in manager

5 Rene Brun: Booting ROOT with BOOT Fraction of ROOT code really used in a batch job Shared lib size in bytes

6 Rene Brun: Booting ROOT with BOOT Fraction of ROOT code really used in a job with graphics

7 Rene Brun: Booting ROOT with BOOT Can we gain with a better packaging? Can we gain with a better packaging? Yes and no. Going beyond the recent ROOT restructuring is difficult. One shared lib per class implies more administration, more dictionaries, more dependencies. 96 shared libs for ROOT is already a lot would be non sense A small CORE library is essential. Plug-in Manager helps

8 Rene Brun: Booting ROOT with BOOT Requirements for BOOT Reorganize the internal structure with more granularity and reduce dependencies as much as possible. Provide a system kernel as small as possible (code and memory) easy to install, possibly a stand-alone executable module less than a few Megabytes in memory (say <10). Reorganize several components (eg TBrowser) such that other applications can easily plug-in their services. graf ROOT.exe ROOTROOT.exeROOT.py source graf network Install only what you need. Easy access to bug fixes Lib with patch DLLs

Rene Brun Phase 1 (nearly completed) Libraries reorganization Plug-in manager extensions Improvements in dictionary size Speed-up file access in WANs

10 Rene Brun: Booting ROOT with BOOT Improving file access in WANs One of the BOOT requirements was to provide fast file access to files in WANs (in particular source files to be compiled locally). Techniques to package the source from CVS/SVN have been tested. Accessing sources (eg in ROOT compact binary files) requires to minimize the number of network transactions (key point on WANs). This requirement forced us to implement a ROOT cache that turned out to be a major improvement in I/O in general (in particular for trees) (see talk on this topic by Leo Franco).talk on this topic by Leo Franco This improvement has required developments in I/O servers like rootd, xrootd and Dcache.

11 Rene Brun: Booting ROOT with BOOT Disk cache improvements with high latency networks The file is on a CERN machine connected to the CERN LAN at at 100MB/s. The client A is on the same machine as the file (local read) The client B is on a CERN LAN connected at 100 Mbits/s with a network latency of 0.3 milliseconds (P IV 3 Ghz). The client C is on a CERN Wireless network connected at 10 Mbits/s with a network latency of 2 milliseconds (Mac Intel Coreduo 2Ghz). The client D is in Orsay (LAN 100 Mbits/s) connected to CERN via a WAN with a bandwith of 1 Gbits/s and a network latency of 11 milliseconds (P IV 3 Ghz). The client E is in Amsterdam (LAN 100 Mbits/s) connected to CERN via a WAN with a bandwith of 10 Gbits/s and a network latency of 22 milliseconds (AMD64 280). The client F is connected via ADSL with a bandwith of 8Mbits/s and a latency of 70 milliseconds (Mac Intel Coreduo 2Ghz). The client G is connected via a 10Gbits/s to a CERN machine via Caltech latency 240 ms. The times reported in the table are realtime seconds client latency(ms) cachesize=0 cachesize=64KB cachesize=10MB A B C D E F G >1800s 125.4s 9.9s One query to a 280 MB Tree I/O = 6.6 MB Downloading only a few classes from a main source tree is a similar problem

12 Rene Brun: Booting ROOT with BOOT More Modularity Improve modularity with new subdirs “io”, “math”, ”net” Reduce the size of libCore Reduce libraries dependencies Reduce compilation time when changing the most important header files. Better documentation in sources

13 Rene Brun: Booting ROOT with BOOT Libraries Organization (5.14) base clib cont meta net zip cint graf graf3d gpad hist tree Postscript Matrix physics root.exe libCore 12 MB 2 MB pmap=44 MB

14 Rene Brun: Booting ROOT with BOOT Libraries Reorganization base-- clib cont-- meta-- math io net reflex cint 7 MB 2 MB 1 MB 2 MB 1 MB root.exe pmap=12 MB

15 Rene Brun: Booting ROOT with BOOT Large Heap Size Reduction ROOT size at start-up Also speed-up start-up time

16 Rene Brun: Booting ROOT with BOOT Substantial gain in memory

Rene Brun Phase 2 (completed in December 07) More libraries reorganization Improvements in dictionary size Substantial reduction of code in dictionaries A more powerful and dynamic browser

18 Rene Brun: Booting ROOT with BOOT Problem with Dictionaries Today cint/reflex dictionaries are machine dependent. They represent a very substantial fraction of the total code. *.oG_*.oDict % mathcore % mathmore % base % physics % treeplayer % geom % tree % g3d % geompainter % graf % matrix % meta % hist % gl % gpad % histpainter % minuit %

19 Rene Brun: Booting ROOT with BOOT What is inside a dictionary file Code describing the C++ classes (inheritance, members, functions) Additional code for I/O: member offsets calculation, interface to class streamers. Stubs to call the member functions from the interpreters (CINT or Python)

20 Rene Brun: Booting ROOT with BOOT At loading time we have one “G__memfunc_setup” call for each stub function (in a file like G__Hist.cxx). This function creates a new field in the G__ifunc_table with attributes like name, hash, type, parameters, etc. (Including the pointer to the stub function!) CINT Stubs Generated code in the dictionary... for every single method!!!

21 Rene Brun: Booting ROOT with BOOT CINT so far G__G__Hist_118_0_39()

22 Rene Brun: Booting ROOT with BOOT New Schema Only one Function for all methods !!

23 Rene Brun: Booting ROOT with BOOT Dictionaries: Direction The new algorithm with automatic stubs (no code generated) has been developed for gcc only (need to implement it for vc++ and icc too). We would like to suppress a very large fraction of the code in dictionaries (if not all), instead storing the same information in a ROOT file. In this way we minimize the amount of information to be loaded in memory, and this decouple the dictionary from the real code. However we will still have to support the old and new schema in case of exotic compilers/linkers.

24 Rene Brun: Booting ROOT with BOOT Browser Improvements The browser (TBrowser and derivatives) is an essential component (from beginners to advanced applications). It is currently restricted to the browsing of ROOT files or Trees. We are extending TBrowser such that it could be the central interface and the manager for any GUI application (editors, web browsers, event displays, etc). The new browser will be an essential component of BOOT See next slides for some examples. Thanks to Bertrand Bellenot Old/current browser

25 Rene Brun: Booting ROOT with BOOT The TGhtml web browser plug-in URL You can browse a root file You can execute a script

26 Rene Brun: Booting ROOT with BOOT Hist Browser + stdin/stdout

27 Rene Brun: Booting ROOT with BOOT Macro Manager/Editor plug-in Click on button to execute script with CINT or ACLIC

28 Rene Brun: Booting ROOT with BOOT GL Viewer plug-in Alice event display prototype using the new browser (Matevz Tadel)

Rene Brun Phase 3 (early next year) Substantial reduction of code in dictionaries Improved ACLIC A simple installation procedure Automatic Updates

30 Rene Brun: Booting ROOT with BOOT ACLIC Improvements The ACLIC system is becoming a class (TACLIC). root >.x script.C root >.x script.C++ root >.x script.C+ The new ACLIC will be used more and more to compile dynamically code generated on the fly (eg tree proxies). It could be used as a Makefile replacement in most situations with data analysis (including PROOF). Trade-off between compilation time and interpretation time

31 Rene Brun: Booting ROOT with BOOT BOOT Installation Script Manage installation of the ROOT system Users download small script (python/perl) This script then downloads the actual minimal ROOT system for the desired platform, i.e. root.exe If binary for platform does not exist, or if platform optimized version is desired, script downloads sources and initiates compilation of root.exe The script also allows the easy installation of any tagged version All downloaded and installed versions are stored in a local user space cache To avoid server overload Squid can be used for proxying and caching To avoid the installation of malicious code all installed material is digitally signed

32 Rene Brun: Booting ROOT with BOOT Examples $ wget (or via web browser) $ root --versions Binary versions available for platform macosx: v v g $ root --v Downloading v … Installing v … Welcome to ROOT v for macosx root [0].q $ root Welcome to ROOT v for maxosx root [0]

33 Rene Brun: Booting ROOT with BOOT Examples (2) $ root --source-versions Source versions available: v v v g $ root --v macosxicc [build with Intel icc] Downloading v … Compiling v … Installing v … Welcome to ROOT v for macosxicc root [0].q $ root Welcome to ROOT v for macosxicc root [0]

34 Rene Brun: Booting ROOT with BOOT Examples (3) $ root --local-versions Local versions available: v for macosxicc [default] v for macosx $ root Welcome to ROOT v for macosxicc root [0].q $ root --v Welcome to ROOT v for macosx root [0].q $ root Welcome to ROOT v for macosx root [0]

35 Rene Brun: Booting ROOT with BOOT Examples (4) $ root Welcome to ROOT v root [0] TTree *T = (TTree*)file->Get(“T”); root[1] TMultiLayerPerceptrom mlp(“var1,var2”,T); Do you want to download the libMLP library? (y) Downloading libMLP. Compiling libMLP. Installing libMLP. root [2] mlp.Train(10000); root [3] mlp.Export(“example”); root [4].q

36 Rene Brun: Booting ROOT with BOOT Patch/Plug-ins Management The same download, proxy, cache and security infrastructure will be used to manage the installation of patch versions and to announce new releases Patches can be installed automatically or on demand ROOT patch releases will be binary compatible and not require recompilation of user code. Ie, you can install only the patched shared lib. Instead of distributing always the almost 100 ROOT plug-ins we will use the same download infrastructure to retrieve (and optionally compile) plug-ins on demand

37 Rene Brun: Booting ROOT with BOOT Summary We are progressing with the BOOT project: More modularity in splitting large libraries and taking advantage of the improved plug-in manager. Reduction of the size of dictionaries (memory and generated code). Making the UI/GUI more general with the possibility to plug-in user extensions. Simplifying the installation procedure and providing an automatic update procedure.