CSE551 -- Programming Assignment #1
Out: Tuesday January 18th
Due: Thursday January 27th, before class
For this "warmup" assignment, you will write and run a few
microbenchmarks on the operating system of your choice. Here's what
you should measure; precisely how you design and implement your
measurement code is up to you.
- System call overhead. (Note: your answer will be in the microsecond time
scale.)
- The latency to perform a disk seek, or if you're using an SSD or
other device that doesn't do mechanical seeks, a random I/O.
(Note: your answer will be in the millisecond time scale for conventional disks, and smaller for SSDs.)
- The sequential read bandwidth of one disk.
(Note: your answer will be in the tens or hundreds of megabytes per second
range.)
- BONUS: Context switch overhead.
A few things to keep in mind:
- The department has Linux
machines available for your use. Keep in mind these machines
are used by many people, so if you use those machines for your
measurements you will need to make sure your measurement results
aren't affected by somebody else's program. I recommend you find a
time when no other programs are running, and run your benchmarks
then. If this turns out not to be possible (i.e., all the machines
are busy all the time), then find another machine to run them
on.
- Since you're registered in a CSE course, you're eligible to
download one of various VMware products, like
workstation for Linux, or fusion for the Mac. You can use this to
create/install a linux machine. Note that you'll be measuring
virtual disk seek and virtual disk bandwidth time, and this might
not be the same as physical disk seek/bandwidth: it's up to you to
figure out what to do to make it the same if you go down this
path.
- If you take measurements on a shared machine, you need to make sure your
benchmarks aren't too disruptive. Your benchmarks have no need to
run for more than a few seconds or tens of seconds...
What to turn in
Please email Steve and Dane a single .tar.gz archive containing the
following:
-
A very short description of your measurement design -- no more than
a handful of sentences on each measurement.
-
A very brief description of any limitations to the approach you chose. Again,
no more than a handful of sentences.
-
Your results.
-
Your source code (in whatever language or scripting environment you
used).