Project 2: File System Evaluation
Due: Thursday, March 16th 11:59pm
Throughout the quarter, we have read a number of file system papers
designed to improve the FFS file system. During class discussions,
we've paid particular attention to the evaluation section, dicussing
what the authors needed to prove, what the experiments demonstrated,
and how well the authors succeed. In the Journaling/Soft Updates
paper in particular, we saw how the authors compared the two systems
to each other as well against the existing FFS system. Now that you
have also designed and implemented your own simplified file system, it
is time to evaluate it. For this project you are required to write a
short paper (4-6 pages) describing and evaluating your file system
from project 1. To aid you in your evaluation, you will be given code
for two existing file systems - one implemented with FAT,
and one implemented with iNodes.
Structure and Content
The structure and format of your
paper should be similar to the design, implementation, and evaluation
sections of the papers we have read so far in the class. You may
dispense with the related work section, and need spend only minimal
time on the introduction and conclusion, as we know what the paper is
about. At this point in the term, you should have a good idea of how
a technical paper is structured and the type of content we are looking
for. The paper will have two major purposes: (1) Explain the
implementation of your file system and (2) evaluate the performance of
your file system.
You are expected to document the design of your file system, and fully
explain and evaluate any design trade-off decisions or optimizations
you made. You should compare your performance results to the baseline
projects and be sure your evaluation explains how these decisions
effected the outcome of your project.
In order to publish performance results, you will need tests and a
testing environment. You are expected to create this testing
environment and write your own performance measurement tests, as well
as describe this in your paper. When writing tests, it would be
benficial to design tests that support claims you make regarding your
file system. For example, if you claim your file system is better
than a FAT filesystem at writing and reading large files, be sure to
have a test directed at exploiting this behavior. Also, when arguing
for or against the general value of your file system, you might
consider also comparing your file system under a "normal" load with
Also, be sure to include proper references to another papers you
reference, and include proper documentation if your implementation was
motivated by any existing motivations.
We understand that some of you may not have completed project 1, and,
hence, do not have an operational file system to test. You should
still document its implementation, and include performance results in
so far as you are able. For the aspects of performance that you are
unable to document, you should still conduct tests comparing the two
file systems we provide for you, and predict how your file system
would fair in comparison.
You may produce your report using any word processing, drawing, and
graphing programs you like. We suggest, however, you consider using
either Microsoft Word, Excel, and Powerpoint, or LaTeX, Gnuplot, and
your favorite diagram tool. We likely will be unable to help you with
any other drawing or plotting tools. Your document can be one or two
columns, with one inch margins and 10 or 11 point font, single-spaced.
The grading of your project will be based on the quality and
persuasiveness of your paper---NOT the absolute performance of your
filesystem, although demonstrating reasonable performance is of course
the goal. The following questions will be kept in mind when
evaluating your paper: How well was the design of the file system
described? Were all the design decisions justified in the paper? Do
the performance results correctly support claims made by the paper?
How accurately and completely do the performance tests capture the
performance of the file system?
You will turn in your projects using the turnin command. Before
turning in your project, convert it to a .pdf file and turn it in
using the turnin command from the previous project.
% turnin -c cs121w -p project2 project2.pdf