350 likes | 449 Views
One Seek File System. Sharath R. Cholleti sharath@cs.wustl.edu. Center for Distributed Object Computing Department of Computer Science and Engineering Washington University. Fall 03 E71 CS 6785 Programming Languages Seminar 07 Nov 2003. Outline. Fixed size blocks file system
E N D
One Seek File System Sharath R. Cholleti sharath@cs.wustl.edu Center for Distributed Object Computing Department of Computer Science and Engineering Washington University Fall 03 E71 CS 6785 Programming Languages Seminar 07 Nov 2003
Outline • Fixed size blocks file system • Extent based file system • Buddy system • Buddy file system • Sum of powers of 2 blocks • Experiments • Heap manager algorithm • Defragmentation • Bounds
Fixed size blocks • Blocks could be non-contiguous • Could be spread all over the disk • Number of seeks proportional to file size • O(S)
Extent based File System • Limited number of extents per file • An extent can be of arbitrarily large • Number of seeks is limited • O(1) • Problems • Difficult to predict the size of the extents • Cross the limit of number of extents per file • Variable size gives rise to fragmentation • DTSS – shown to be practical without too much internal or external fragmentation
Knuth’s Buddy System • Free lists segregated by size 128 64 32 • All the requests are rounded up to a power of 2 16 8 4 2 1
Buddy System (1) • Begin with one large block • Suppose we want a block of size 8 128 64 32 16 8 4 2 1
Buddy System (2) • Begin with one large block • Suppose we want a block of size 8 • Subdivide recursively 128 64 32 16 8 4 2 1
Buddy System (3) • Begin with one large block • Suppose we want a block of size 8 • Subdivide recursively 128 64 32 16 8 4 2 1
Buddy System (4) • Begin with one large block • Suppose we want a block of size 8 • Subdivide recursively 128 64 32 16 8 4 2 1
Buddy System (5) • Begin with one large block • Suppose we want a block of size 8 • Subdivide recursively • 2 blocks of size 8 128 64 32 16 8 4 2 1
Buddy System (6) • Begin with one large block • Suppose we want a block of size 8 • Subdivide recursively • 2 blocks of size 8 • One of those given to the program 128 64 32 16 8 4 Given to the program 2 1
Buddy System (7) • Coalescing • Only buddies coalesce 128 64 32 16 8 4 Deallocated 2 1
Buddy File System • Round the file size to a power of 2 • Only one large block • Mostly only 1 seek • Fast allocation • Deallocation – coalescing with its buddy • High internal fragmentation • Worse case almost 50% • Average 25%
Buddy System: Tree Notation Free Allocate block of size 1 Occupied 16 8 4 2 1
Buddy System: Tree Notation(2) Free Allocate block of size 1 Occupied 16 8 4 2 1
Buddy System: Tree Notation(3) Free Allocate block of size 1 Occupied 16 8 4 2 1
Buddy System: Tree Notation(4) Free Allocate block of size 1 Occupied 16 8 4 2 1
Buddy System: Tree Notation(6) Free Allocate block of size 4 Occupied 16 8 4 2 1
Sum of powers of 2 blocks Free • Buddy blocks of different sizes • 13 = 8 + 4 + 1 Occupied 32 16 8 4 2 1
Allocation as Sum of powers of 2 blocks • Internal fragmentation same as file system with blocks of equal size • Buddy type coalescing helps control the external fragmentation • Number of seeks is O(log S) • What if allocate the blocks contiguously? • Or make it contiguous after allocation • Only one seek necessary
Experiments • CEC data • user file sizes • Usual (blocks of same size) vs Buddy vs Sum of powers of 2 • Total blocks (segments) • Wasted space • Min/avg/max number of segments
Results • Sum of powers of 2 • Much lesser internal fragmentation compared to buddy • Very few blocks compared to fixed block size file system • Experiments to limit the number of segments to a constant
Heap Manager Algorithm 16 8 8 3 5 4 3 0 1 4 2 2 1 0 0 1 02 1
Defragmentation • Need to allocate a block of size 8 • No free block of size 8 -- relocate Free Occupied 32 16 8 4 2 1
Defragmentation (2) • Need to allocate a block of size 8 • No free block of size 8 -- relocate Free Occupied 32 16 8 4 2 1
Cost • M – disk size • Allocation O(logM) • Deallocation O(logM) • Relocation O(slogM) – file of size s
Defragmentation Theory Assumptions • All files are stored contiguously • Each file is stored big to small • File of size S, 2^n<S<=2^(n+1), lies entirely within a buddy block of 2^(n+1) • Unit of the file is a block • There is a way to allocate or relocate a file
Bound on relocated file size • For the relocation to be minimum, allocation of a file of size 2^n does not relocate file of size greater than 2^(n-1) • Proof: • X: a file or a set of files • R(X): number of blocks moved to relocate X
Proof (cont) B a D E R = R(a) + R(B) = |a| + R(D) + R(B) > |E| + R(D) + R(B)
Proof (cont) B a D E
Worst case relocation file size • In worst case, to allocate a file of size 2^n, two files of size 2^(n-1) are relocated
Worst Case Defragmentation • Worst-case relocation for a file of size S • SlogS blocks • R(S) = S + 2*R(S/2) • 2(S-1) files • R(S) = 1 + 2*R(S/2)