350 likes | 453 Vues
This seminar presentation discusses various file system strategies, including fixed size blocks, extent-based file systems, and the Buddy System. It covers significant concepts such as block allocation, coalescing, defragmentation, and experiments comparing different file systems' efficiency. Key focus areas include the impact of fragmentation and allocation mechanisms, specifying the advantages of the Buddy System over fixed blocks in managing memory allocation and reducing internal fragmentation. Insights from experiments highlight performance metrics and seek optimization techniques in file systems.
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)