More Than Storage Margo Seltzer Canada 150 Research Chair in Computer Systems University of British Columbia 1 May 2019
How do you build a mechanical computing device? 2 May 2019
Computer Systems Hardware, Software, and Programming 3 May 2019
Computer Systems Software Hardware 4 May 2019
Computer Systems Programming Languages Operating Systems Hardware Databases 5 May 2019
Computer Systems Programming HPC Languages Operating Systems Architecture Databases 6 May 2019
Computer Systems Programming HPC Languages Operating Distributed Networking Computing Systems Architecture Databases 7 May 2019
Computer Systems Programming HPC Languages Operating Distributed Networking Computing Systems Architecture Databases Security 8 May 2019
Computer Systems Programming HPC Languages Operating Distributed Networking Computing Systems Architecture Databases Security Storage 9 May 2019
Computer Systems HPC Programming Scientific Computing Languages Operating Distributed Networking Computing Systems Architecture Databases Security Storage 10 May 2019
Computer Systems Programming HPC Networked Scientific Languages Systems Computing Operating Distributed Networking Computing Systems Architecture Databases Security Storage 11 May 2019
Computer Systems Programming HPC Networked Scientific Languages Systems Computing Operating Distributed Networking Mobile Computing Systems Architecture Databases Security Storage 12 May 2019
Computer Systems Programming Networked Scientific HPC Languages IoT Systems Computing Operating Distributed Networking Mobile Computing Systems Architecture Embedded Databases Security Storage Systems 13 May 2019
Computer Systems Programming Scientific Networked HPC Languages IoT Computing Systems Architecture Operating Distributed Networking Mobile Computing Systems Embedded Databases Security VLSI Storage Systems 14 May 2019
Computer Systems Programming Scientific Networked HPC Languages IoT Computing Systems Architecture Operating Distributed Networking Mobile Computing Systems Embedded Databases Security VLSI Storage Systems 15 May 2019
Storage? Programming Scientific Networked Scientific Networked HPC HPC Languages IoT Computing Systems Computing Systems Architecture Architecture Distributed Operating Distributed Networking Mobile Computing Computing Systems Embedded Databases Security Databases Security VLSI Storage Systems 16 May 2019
Three Storage Vignettes Adapting Existing Solutions Runtime Provenance Applications Keys Values Session1 Cidon, Manno, Evans, Guyot Session2 Blomer, Hallak, Bbrown, Manno Session3 Strauss, Peglar, Gervasi Sesson4 Lightning Talks Building Custom Solutions Keys Values Session1 Cidon, Manno, Evans, Guyot Session2 Blomer, Hallak, Bbrown, Manno Session3 Strauss, Peglar, Gervasi Sesson4 Lightning Talks 17 May 2019
Runtime Provenance Applications Michael Thomas Pasquier (Xueyuan)Han David Eyers Oliveir Hermant Jean Bacon Adam Bates Thomas Moyer 18 May 2019
Runtime Provenance Applications Programming Scientific Networked HPC Languages IoT Computing Systems Architecture Operating Distributed Networking Mobile Computing Systems Embedded Databases Security VLSI Storage Systems 19 May 2019
Provenance 101 20 May 2019
Provenance 101 Provenance < 1662 Simon de Vos, Antwerp (possibly) by 1662 Guilliam I Forchoudt, Antwerp (possibly) to 1747 Jacques de Roore, The Hague 1747 - 1771 Anthonis de Groot and Stephanus de Groot, The Hague 1771 - ? Abelsz to 1779 Jacques Clemens to 1798 Supertini and Platina, Brussels to 1814 Pauwels, Brussels to 1822 Robert Saint-Victor, Paris 1822 - ? Roux to 1924 Marquise d'Aoust, France 1924 Galerie Georges Petit, Paris to 1940 Federico Gentili di Giuseppe, died 1940, Paris 1940 - 1950 Mrs. A. Salem, Boston (Mr. Gentili di Giuseppe's daughter ) 1950 - 1954 Frederick Mont and Newhouse Galleries, New York 1954 - 1961 Samuel H. Kress Foundation, New York 12/09/1961 Seattle Art Museum 21 May 2019
From Art to Computer Science Provenance-Aware Storage Systems env=“USER…” Kernel argv=“sort a” name=“sort modules=“pasta…” kernel=“Linux…” Task struct input=sort input=a Inode cache sort b a To file system 22 May 2019
The Big Idea in one Slide Query/Analyze Provenance Query/Analyze Provenance Provenance Capture Provenance Capture 23 May 2019
Digital Provenance Child dataset1 Raw data collected from Derivation system operation My Program Dataset execution Subset operation Program Child dataset2 24 May 2019
Digital Provenance Child dataset1 Raw data collected Agent from Derivation system operation My Program Dataset execution Subset operation Program Child dataset2 25 May 2019
Digital Provenance Child dataset1 Raw data collected Agent from Derivation system operation Activities My Program Dataset execution Subset operation Program Child dataset2 26 May 2019
Digital Provenance Child dataset1 Raw data collected Agent from Derivation system operation Activities My Program Dataset execution Subset operation Entities Program Child dataset2 27 May 2019
Digital Provenance Child dataset1 Raw data collected from Derivation system operation My Program Dataset execution Subset operation Program Relationships Child dataset2 28 May 2019
All Kinds of Provenance Provenance 29 May 2019
CamQuery Architecture Query/Analyze Provenance Query/Analyze Provenance Delay CamFlow Provenance Capture NetFilter LSM Provenance Capture OS OS 30 May 2019
CamQuery Architecture Query/Analyze Provenance Query/Analyze Provenance Delay CamFlow NetFilter LSM Provenance Capture OS OS 31 May 2019
CamQuery Architecture Query/Analyze Provenance Delay Query/Analyze Provenance CamFlow NetFilter LSM Provenance Capture OS OS 32 May 2019
Architectural Implications Conventional CamQuery Provenance Applications Provenance Applications Static Graph Analysis Streaming Graph Analysis Detection Prevention F(Graph) F(Function) Immutable Mutable 33 May 2019
Sample Applications Information Flow 34 May 2019
Writing an Application #define KERNEL_QUERY static int #include “include/camquery.h” in_edge (union prov_msg *edge, union prov_msg * node) static label_t confidential; { if (has_label(edge, confidential)) { static void init (void) add_label(node, confidential); confidential = if (node_type(node) == ENT_INODE_SOCKET) get_label(“confidential”); return PROV_RAISE_WARNING; } } return 0; } static int out_edge (union prov_msg *node, union prov_msg *edge) { switch (edge_type(edge)) { case RL_WRITE: case RL_READ: QUERY_NAME(“Propagate labels”); case RL_SND: QUERY_DESCRIPTION(“Example query”); case RL_RCV: QUERY_AUTHOR(“Not me.”); case RL_VERSION: QUERY_VERSION(“0.1”); case RL_VERSION_PROCESS: QUERY_LICENSE(“GPL”); case RL_CLONE: register_query(init, in_edge, out_edge); if (has_label(node, confidential)) add_label(edge, confidential); } return 0; } 35 May 2019
Writing an Application #define KERNEL_QUERY static int #include “include/camquery.h” in_edge(union prov_msg *edge, union prov_msg * node) static label_t confidential; { if (has_label(edge, confidential)) { static void init(void) add_label(node, confidential); confidential = if (node_type(node) == ENT_INODE_SOCKET) get_label(“confidential”); return PROV_RAISE_WARNING; } } return 0; } static int out_edge(union prov_msg *node, union prov_msg *edge) { switch (edge_type(edge)) { case RL_WRITE: case RL_READ: QUERY_NAME(“Propagate labels”); case RL_SND: QUERY_DESCRIPTION(“Example query”); case RL_RCV: QUERY_AUTHOR(“Not me.”); case RL_VERSION: QUERY_VERSION(“0.1”); case RL_VERSION_PROCESS: QUERY_LICENSE(“GPL”); case RL_CLONE: register_query(init, in_edge, out_edge); if (has_label(node, confidential)) add_label(edge, confidential); } return 0; } 36 May 2019
Writing an Application #define KERNEL_QUERY static int #include “include/camquery.h” in_edge(union prov_msg *edge, union prov_msg * node) static label_t confidential; { if (has_label(edge, confidential)) { static void init(void) add_label(node, confidential); confidential = if (node_type(node) == ENT_INODE_SOCKET) get_label(“confidential”); return PROV_RAISE_WARNING; } } return 0; } static int out_edge(union prov_msg *node, union prov_msg *edge) { switch (edge_type(edge)) { case RL_WRITE: case RL_READ: QUERY_NAME(“Propagate labels”); case RL_SND: QUERY_DESCRIPTION(“Example query”); case RL_RCV: QUERY_AUTHOR(“Not me.”); case RL_VERSION: QUERY_VERSION(“0.1”); case RL_VERSION_PROCESS: QUERY_LICENSE(“GPL”); case RL_CLONE: register_query(init, in_edge, out_edge); if (has_label(node, confidential)) add_label(edge, confidential); } return 0; } 37 May 2019
Recommend
More recommend