Follow up from my previous posting, now with a little more experience.

The mount command actually is:

mount -t unionfs -o dirs=/dev/shm/fastwrite_branch=rw:/=ro none
/dev/shm/fastwrite_mountpoint

I have made a script that does the strace analysis, mounts the unionfs
and `touch` every file that were queried during the analysed activity
(typically `make`). Then chroots into the mountpoint.  When the user
logs out, it cleans up everything.

The result however is slower than without unionfs (taking approx 14%
more real time).

I believe this might be due to a few things:

1) make typically checks for include files in every possible
directories, my script touches all of them, effectively generating
empty includes. (A fix for this might be to check after the touch if
the file actually existed on real root and if not, to delete it in
unionfs, generating the .wh...  or actually this whiteout would need
to be done in a more prioritized branch, you get the point).

2) I've read, i believe in kernel/Documentation that unionfs will fail
to union calls of mmap.  I see that the strace outputs does not
contain mmap, but contains mmap2 which, after reading the man-page,
most certainly brings same issue.

Now, to make things faster, I would have to speedup these calls to
mmap2 somehow, having never used it before, i'd probably need a few
hints from you guys on how i could acheive this.

And I wonder if you saw other sources of bottlenecks in my technique...?

All in all, even if this little saturday afternoon project has failed,
it was a great learning opportunity! =)
If you guys are interested, i can post the script later on, but you'll
probably dislike the fact that it was written in PHP, hehe!

Thanks,
  Simon
_______________________________________________
unionfs mailing list: http://unionfs.filesystems.org/
unionfs@mail.fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to