Persistent Object References in ROOT I/O Status & Proposal

Slides:



Advertisements
Similar presentations
File Management Chapter 12. File Management File management system is considered part of the operating system Input to applications is by means of a file.
Advertisements

Chapter 10: File-System Interface
File Management Chapter 12. File Management A file is a named entity used to save results from a program or provide data to a program. Access control.
Chapter 10: File-System Interface
File System Interface CSCI 444/544 Operating Systems Fall 2008.
Dr. Kalpakis CMSC 421, Operating Systems. Fall File-System Interface.
1 File Management (a). 2 File-System Interface  File Concept  Access Methods  Directory Structure  File System Mounting  File Sharing  Protection.
04/02/2004CSCI 315 Operating Systems Design1 File System Interface.
11/13/01CS-550 Presentation - Overview of Microsoft disk operating system. 1 An Overview of Microsoft Disk Operating System.
File Management Systems
Operating Systems File Systems (in a Day) Ch
Introduction to Kernel
1 Operating Systems Chapter 7-File-System File Concept Access Methods Directory Structure Protection File-System Structure Allocation Methods Free-Space.
File Management.
File Concept l Contiguous logical address space l Types: Data: numeric, character, binary Program: source, object (load image) Documents.
ROOT courses1 The ROOT System A Data Access & Analysis Framework February 2003 Ren é Brun/EP Trees.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 10: File-System Interface.
Chapter 10 File System Interface
XML I/O in ROOT S. Linev, R. Brun, H.G. Essel CHEP 2004.
File Management Chapter 12. File Management File management system is considered part of the operating system Input to applications is by means of a file.
ITEC 502 컴퓨터 시스템 및 실습 Chapter 10-1: File Systems Mi-Jung Choi DPNM Lab. Dept. of CSE, POSTECH.
Chapter 10: File-System Interface Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Jan 1, 2005 Chapter 10: File-System.
File Systems CSCI What is a file? A file is information that is stored on disks or other external media.
File System Interface. File Concept Access Methods Directory Structure File-System Mounting File Sharing (skip)‏ File Protection.
File Management Chapter 12. File Management File management system is considered part of the operating system Input to applications is by means of a file.
ROOT for Data Analysis1 Intel discussion meeting CERN 5 Oct 2003 Ren é Brun CERN Distributed Data Analysis.
Lecture 5 Cost Estimation and Data Access Methods.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 11: File-System Interface File Concept Access Methods Directory Structure.
Persistent Object References in ROOT1 Persistent Object References in ROOT I/O Status & Proposal CMS-ROOT meeting CERN- November 27 Ren é Brun ftp://root.cern.ch/root/refs.ppt.
Disk & File System Management Disk Allocation Free Space Management Directory Structure Naming Disk Scheduling Protection CSE 331 Operating Systems Design.
CE Operating Systems Lecture 17 File systems – interface and implementation.
Silberschatz and Galvin  Operating System Concepts Module 10: File-System Interface File Concept Access :Methods Directory Structure Protection.
ROOT courses1 The ROOT System A Data Access & Analysis Framework February 2003 Ren é Brun/EP Input/Output.
14.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 10 & 11: File-System Interface and Implementation.
It consists of two parts: collection of files – stores related data directory structure – organizes & provides information Some file systems may have.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Chapter 10: File-System Interface.
March, PROOF - Parallel ROOT Facility Maarten Ballintijn Bring the KB to the PB not the PB to the KB.
ROOT Workshop M.Frank LHCb/CERN Improvements in the I/O Area (*)  General I/O related improvements  Tree related issues  Plans (*) I present.
Trees: New Developments1 Trees: New Developments Folders and Tasks ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN
File System Department of Computer Science Southern Illinois University Edwardsville Spring, 2016 Dr. Hiroshi Fujinoki CS 314.
Instructor: Umar KalimNUST Institute of Information Technology Operating Systems File System Interface.
W4118 Operating Systems Instructor: Junfeng Yang.
CSE Operating System Principles File Systems.
Persistent Object References in ROOT1 Persistent Object References in ROOT I/O Status & Proposal LCG meeting CERN- 5 June Ren é Brun ftp://root.cern.ch/root/longrefs.ppt.
COMP 3500 Introduction to Operating Systems Directory Structures Block Management Dr. Xiao Qin Auburn University
Lecture : chapter 9 and 10 file system 1. File Concept A file is a collection of related information defined by its creator. Contiguous logical address.
File System Design David E. Culler CS162 – Operating Systems and Systems Programming Lecture 23 October 22, 2014 Reading: A&D a HW 4 out Proj 2 out.
File System Implementation
File System Interface CSSE 332 Operating Systems
CMSC 611: Advanced Computer Architecture
Introduction to Kernel
Module 11: File Structure
Structure of Processes
Module 10: File-System Interface
Chapter 11: File-System Interface
File System Structure How do I organize a disk into a file system?
Operation System Program 4
Thrashing If a process does not have “enough” pages, the page-fault rate is very high. This leads to: low CPU utilization operating system thinks that.
Recent Developments in ROOT I/O Support for foreign classes
Chapter 10: File-System Interface
RDBMS Chapter 4.
File-System Interface
Modern PC operating systems
Chapter 16 File Management
Disk Structure Analysis
Zooming on ROOT files and Containers
Module 10: File-System Interface
Department of Computer Science
Lecture 4: File-System Interface
Lecture Topics: 11/20 HW 7 What happens on a memory reference Traps
Presentation transcript:

Persistent Object References in ROOT I/O Status & Proposal ROOT Workshop CERN- 16 October René Brun Persistent Object References in ROOT

Normal Streaming mode References using C++ pointers Only one copy of each object in the graph saved to buffer A TBuffer b; A.Streamer(b) ROOT2002 Rene Brun Persistent Object References in ROOT

Normal Streaming mode References using C++ pointers TBuffer b1; A.Streamer(b1) TBuffer b2; B.Streamer(b2) Objects in red are in b1 and b2 C++ pointer A B ROOT2002 Rene Brun Persistent Object References in ROOT

Normal Streaming mode References using TRef pointers TBuffer b1; A.Streamer(b1) TBuffer b2; B.Streamer(b2) Objects in blue are only in b1 C++ pointer TRef A B Bz z Set pointer to z with: TRef Bz = z; Get pointer to z with: z = Bz.GetObject() ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT ROOT I/O : An Example Program Writing TFile f(“example.root”,”new”); TH1F h(“h”,”My histogram”,100,-3,3); h.FillRandom(“gaus”,5000); h.Write(); Program Reading TFile f(“example.root”); TH1F *h = (TH1F*)f.Get(“h”): h->Draw(); f.Map(); 20010831/171903 At:64 N=90 TFile 20010831/171941 At:154 N=453 TH1F CX = 2.09 20010831/171946 At:607 N=2364 StreamerInfo CX = 3.25 20010831/171946 At:2971 N=96 KeysList 20010831/171946 At:3067 N=56 FreeSegments 20010831/171946 At:3123 N=1 END ROOT2002 Rene Brun Persistent Object References in ROOT

Memory <--> Tree The Tree entry serial number T.GetEntry(6) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 T.Fill() 18 T ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT Tree Friends Entry # 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Public read User Write Public read ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT Tree Friends Collaboration-wide public read Processing time independent of the number of friends unlike table joins in RDBMS Analysis group protected user private x Root > TFile f1(“tree1.root”); Root > tree.AddFriend(“tree2”,“tree2.root”) Root > tree.AddFriend(“tree3”,“tree3.root”); Root > tree.Draw(“x:a”,”k<c”); Root > tree.Draw(“x:tree2.x”,”sqrt(p)<b”); ROOT2002 Rene Brun Persistent Object References in ROOT

Binary search in table above ch.GetEntryWithIndex(12,567); Chains of Trees f0 f1 f2 f3 f4 f5 f6 f7 2 4 4 5 5 4 7 11 12 17 23 26 32 37 45 49 1 2 3 4 5 6 7 TChain ch(“T”); ch.Add(“f0.root”); ch.Add(“f1.root”); ch.Add(“f2.root”); ch.Add(“f3.root”); ch.Add(“f4.root”); ch.Add(“f5.root”); ch.Add(“f6.root”); ch.Add(“f7.root”); Binary search in table above find slot 4, local entry 2 T.GetEntry(2) in f4.root ch.GetEntry(28); ch.GetEntryWithIndex(12,567); ROOT2002 Rene Brun Persistent Object References in ROOT

Existing TRef, TRefArray Designed as light weight entities Assume large number of TRefs per event Very fast dereferencing (direct access tables) Cannot (not designed for) find an object in a file TLongRef, TLongID classes proposed for references with load on demand ROOT2002 Rene Brun Persistent Object References in ROOT

TRef/TRefArray advantages TRef is perfect for referencing objects like hits, clusters, tracks that may be > 10000. You would not like to have the size of a TRef bigger than the size of its referenced object ! A TRef occupies in average 2.5 bytes in the file There is no point in providing load on demand for one single hit, cluster or track. ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT TRef example: Event.h class Event : public TObject { private: char fType[20]; //event type char *fEventName; //run+event number in character format int fNtrack; //Number of tracks int fNseg; //Number of track segments int fNvertex; int fMeasures[10]; float fMatrix[4][4]; float *fClosestDistance; //[fNvertex] EventHeader fEvtHdr; TClonesArray *fTracks; //->array with all tracks TRefArray *fHighPt; //array of High Pt tracks only TRefArray *fMuons; //array of Muon tracks only TRef fLastTrack; //reference pointer to last track TRef fWebHistogram; //EXEC:GetWebHistogram TH1F *fH; //-> public: ... TH1F *GetHistogram() const {return fH;} TH1F *GetWebHistogram(Bool_t reload=kFALSE) const { return (TH1F*)fWebHistogram.GetObject(reload);} Can also do load on demand ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT Additions to TRef in 3.03/09 Thanks to Bill Tanenbaum, TRef has been extended to support references to TFile/TDirectory objects. The TObject part of these classes is not written to the file. A TDirectory has a TUUID object (and TFile). If a TRef points to an object having a TUUID, the TUUID information of the referenced object is also saved when Streaming the TRef. The list of objects having a TUUID is kept in a separate map in class TProcessUUID. ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT TRef extensions The current implementattion of TRef supports load on demand (via the comment field in the data member declaration). This possibility is currently not well documented and used. Not clear if we should go in this direction? We are looking for extending TRef (may be via a new class TLongRef) to support load on demand. Several agorithms have been proposed/rejected. More prototyping is required. ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT TLongRef ??? The following slides have been presented during an LCG persistency RTAG meeting. Conclusion: not much interest to follow this proposal. ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT Load on demand It makes sense for objects like large collections of hits, clusters, tracks files mag field geometry Assuming that an event will contain < 100 such objects to be requested on demand, there is no problem in having fat references (eg 50 bytes) TLongRef TLongID ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT TLongRef, TLongID Map of TLongIDs Object A has a TLongRef Object B is a TLongID File 1 container X File 2 container Y ROOT2002 Rene Brun Persistent Object References in ROOT

Object Identification Pointer to object in memory ID File Identification and directory Access method in file (Tree, etc) ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT TLongID An object referenced by a TLongRef must inherit from class TLongID When a TLongID is created, it is added to one single table (map) of LongIDs When a TLongID is written to a file, its persistent components are written to the file. When a TLongID is read, it is added to the map of LongIDs. ROOT2002 Rene Brun Persistent Object References in ROOT

Persistent Object References in ROOT TLongRef A TLongRef points to an object inheriting from TLongID. TLongRef attributes are identical to TLongID. In addition it includes a pointer to the object. When a TLongRef is written, its TLongID components are written. When a TLongRef is dereferenced, its pointer is computed (if not already there) by searching in the map of TLongIDs. ROOT2002 Rene Brun Persistent Object References in ROOT

TUUID unique in time (nanoseconds) Additional info to be discussed TLongID Up to 128 bits root [0] TUUID u root [1] u.AsString() (const char* 0x40476a80)"c62ad97a-78c9-11d6-9e58-4ed58a89beef" class TLongID { TUUID fUUID; TString fText1; TString fText2; etc… } TUUID unique in time (nanoseconds) and space Additional info to be discussed TLongID could be reduced to TUUID ROOT2002 Rene Brun Persistent Object References in ROOT

A copy of the TUUID in TLongID Additional info to be discussed TLongRef class TLongRef { TUUID fUUID; TString fWhere; TString fHow; etc… } A copy of the TUUID in TLongID Additional info to be discussed FileID subdirectory branch in Tree, etc ROOT2002 Rene Brun Persistent Object References in ROOT