28.07.2013 Views

Performance Analysis and Optimization of the Hurricane File System ...

Performance Analysis and Optimization of the Hurricane File System ...

Performance Analysis and Optimization of the Hurricane File System ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CHAPTER 7. MACROBENCHMARK 79<br />

is made at <strong>the</strong> Web server application level <strong>and</strong> is not an issue <strong>of</strong> <strong>the</strong> file system core. Various technique can<br />

be used due to <strong>the</strong> nature <strong>of</strong> Web server files <strong>and</strong> <strong>the</strong> fact that all disks are identical replicas. If a thread<br />

cannot find <strong>the</strong> target meta-data in a particular hash list or if <strong>the</strong> target hash list is highly contended, it<br />

could search for <strong>the</strong> meta-data in o<strong>the</strong>r sections <strong>of</strong> <strong>the</strong> hash table by modifying <strong>the</strong> target disk number. This<br />

technique is only possible because all disks are identical <strong>and</strong> all threads perform similar work, suggesting<br />

that <strong>the</strong> target meta-data may exist under o<strong>the</strong>r sections <strong>of</strong> <strong>the</strong> hash table.<br />

7.6 Applicability <strong>of</strong> Clustered Objects<br />

The K42 clustered object mechanism [4] may be useful in maintaining scalability in HFS. The clustered object<br />

mechanism is used for designing, implementing, <strong>and</strong> managing execution concurrency <strong>and</strong> data locality in a<br />

structured, formalized fashion. A clustered object presents a globally shared, uniform, external interface but<br />

is internally distributed in nature. The nature <strong>of</strong> <strong>the</strong> distribution <strong>and</strong> data update policies are completely<br />

customizable by <strong>the</strong> programmer. Clustered objects can be applied to two major structures in HFS: (1) ORS<br />

<strong>and</strong> block cache hash tables, (2) <strong>the</strong> block cache free list.<br />

Dynamically sizable, distributed hash tables can be designed <strong>and</strong> applied to <strong>the</strong> ORS <strong>and</strong> block cache<br />

hash tables. Dynamic hash table sizing enables HFS to be robust, allowing it to h<strong>and</strong>le load imbalances,<br />

such as hot spots in a section <strong>of</strong> <strong>the</strong> hash table, <strong>and</strong> variable resource availability, such as available free<br />

memory, number <strong>of</strong> disks, <strong>and</strong> number <strong>of</strong> processors. Once resized, existing elements in <strong>the</strong> hash table could<br />

migrate to <strong>the</strong>ir new locations if necessary.<br />

Clustered objects can <strong>of</strong>fer a solution to <strong>the</strong> free list problem in <strong>the</strong> block cache without requiring major<br />

modifications to <strong>the</strong> existing code base. The clustered object free list can maintain <strong>the</strong> appearance <strong>of</strong> a<br />

single, globally shared list, but internally be organized as a distributed list. Internally, each processor could<br />

maintain a local free list. Local free lists could trigger balancing between processors as needed. In reality,<br />

only <strong>the</strong> free list header is local to a particular processor. The entries <strong>of</strong> <strong>the</strong> free list are actually block<br />

cache entries in <strong>the</strong> block cache hash table 10 . Therefore, <strong>the</strong>y are globally shared entries that may exist on<br />

any processor. The free list contains several properties that make it a good c<strong>and</strong>idate for clustered object<br />

implementation. First, <strong>the</strong> free list requires fast FIFO 11 capabilities, which can be satisfied solely from <strong>the</strong><br />

local free list. Second, <strong>the</strong> free list is never traversed, meaning that <strong>the</strong>re is never a need to perform global<br />

traversals 12 . There is only one scenario that requires partial global co-ordination from <strong>the</strong> clustered object.<br />

An entry in a free list may request to be removed because it no longer considers itself to be free. With such<br />

a request, <strong>the</strong> clustered object mechanism must determine which processor’s local free list <strong>the</strong> entry resides<br />

(since it is really a block cache entry, which is globally shared) <strong>and</strong> acquire <strong>the</strong> corresponding free list lock<br />

10 As described in Section 3.3.2, <strong>the</strong> free list is threaded throughout <strong>the</strong> block cache hash lists.<br />

11 First in, first out – Enqueuing onto <strong>the</strong> tail <strong>of</strong> <strong>the</strong> list <strong>and</strong> dequeuing from <strong>the</strong> head <strong>of</strong> <strong>the</strong> list.<br />

12 A global traversal <strong>of</strong> <strong>the</strong> free list would be implemented by traversing all local free lists.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!