Ext2 On Singularity Scott Finley University of Wisconsin Madison CS 736 Project Ext2 Defined Basic default Linux file system Almost exactly the same as FFS Disk broken into block groups Super block inode block bitmaps etc Microsoft Research s Singularity New from the ground up Reliability as 1 goal Reevaluate conventional OS structure Leverage advances of the last 20 years Languages and compilers Static analysis of whole system My Goals Implement Ext2 on Singularity Focus on read support with caching Investigate how Singularity design impact FS integration Investigate performance implications Overview of Results I have a Ext2 working on Singularity Reading fully supported Caching improves performance Limited write support Singularity design Garbage collection hurts performance Reliability is good I couldn t crash it Outline 1 2 3 Singularity Details Details of my Ext2 implementation Results Singularity Programming Environment Everything is written in C Small pieces of kernel 5 in assembly and C as needed Kernel and processes are garbage collected No virtual machine Compiled to native code Very aggressive optimizing compiler Process Model Singularity is a micro kernel Everything else is a SIP Software Isolated Process No hardware based memory isolation SIP Object Space isolation guaranteed by static analysis and safe language C Context switches are much faster Communication Channels All SIP communication is via message channels No shared memory Messages and data passed via Exchange Heap Object ownership is tracked Zero copy data passing via pointers Disk Read Example Application creates buffer in ExHeap File System App Empty Buffer Exchange Heap Disk Driver Disk Read Example Application send read request to file system File system owns the buffer File System App Empty Buffer Exchange Heap Disk Driver Disk Read Example File system sends read request to driver Driver owns the buffer File System App Empty Buffer Exchange Heap Disk Driver Disk Read Example Driver fills buffer and replies to file system File System App Full Buffer Exchange Heap Disk Driver Disk Read Example File system replies to application File System App Full Buffer Exchange Heap Disk Driver Disk Read Example Application consumes the buffer App File System Exchange Heap Disk Driver Ext2 Implementation Required Pieces Ext2Control Command line application Ext2ClientManager Manages mount points Ext2FS Core file system functionality Ext2Contracts Defines communication Ext2 Client Manager System service SIP launched at boot Accessible at known location in dev directory Does Ext2 stuff Operates on Ext2 volumes and mount points Exports Mount and Unmount Would also provide Format if implemented 300 lines of code Ext2 Control Command line application Allows Ext2 Client Manger interface access Not used by other applications 500 lines of code Ext2Fs Core Ext2 file system Separate instance SIP for each mount point Exports Directory Service Provider interface Clients open files and directories by attaching a communication channel Internally paired with an Inode Reads implemented Writes in progress 2400 Lines of code File Read Sequence 1 2 3 4 Client wants to read file mnt a b txt Ext2 mounted at mnt App CH0 SNS Bind mnt a b txt CH1 App CH0 SNS Reparse mnt App CH0 SNS Bind mnt CH1 App CH0 SNS AckBind File Read Sequence 2 8 App CH1 Ext2Fs App CH1 Ext2Fs App CH2 Ext2Fs App CH2 Ext2Fs 9 5 6 7 Bind a b txt CH2 AckBind Read Buff BOff FOff ReadAck Buff Caching Inodes Used on every access 2 Block Numbers Very important for large files 3 Data Blocks Naturally captures others All use LRU replacement Large files unusable without caching 1 8300X faster reading 350 MB file Results Testing Athlon 64 3200 1 GB RAM Disk 120GB 7200 RPM 2 MB buffer PATA Measured sequential reads Varied read buffer size from 4 KB to 96 MB Timed each request File sizes ranged from 13 MB to 350 MB 35 350MB File Sequential Read Read Speed MB S 30 25 Linux Average 4 KB 8 KB 16 KB 64 KB 256 KB 1 MB 8 MB 64 MB 96 MB Cold 20 15 10 5 0 2 048 20 480 204 800 2 048 000 Buffer Size Bytes 20 480 000 204 800 000 Request Service Time for reads of 350 MB file with 16 KB buffers 35 Request Service Time ms 30 25 20 15 10 5 0 Time 200 Sequential 16 KB Buffer Reads of 350 MB File 35 Read Speed MB s 30 25 20 15 10 5 0 Time Results Linux is faster Not clear that this is fundamental Performance is not horrible Good enough objective met Garbage collection overhead 0 1 Not sensitive to file size Conclusion System programming in a modern language System programming with no crashes Micro kernel is feasible Hurts feature integration mmap cache sharing Clean simple interfaces Questions Extras 35 13 MB File Sequential Read Read Speed MB S 30 25 Linux Average 4 KB 8 KB 16 KB 64 KB 256 KB 1 MB 8 MB 64 MB 96 MB Cold 20 15 10 5 0 2 048 20 480 204 800 2 048 000 Buffer Size Bytes 20 480 000 204 800 000 64 KB Buffer Reads of 350 MB File 35 Read Speed MB s 30 25 20 15 10 5 0 Time 64 MB Buffer Reads of 350 MB File 30 Read Speed MB s 25 20 15 10 5 0 Time Average Sequential Read Speeds 30 Read Speed MB s 25 20 13 MB File 350 MB File 15 10 5 0 2 048 20 480 204 800 2 048 000 Buffer Size 20 480 000 204 800 000
View Full Document
Unlocking...