Based on various conversations about NFS performance, filing this as a place to put info:
Idea is:
- build image(s) per compiler. Either direct ext4 or squashfs
- place these on network attached storage (
/opt/images/...)
- mount these using loopback or squashfs on each node (maybe at
/img/*/)
- unionfs magic to make this "override"
/opt/compiler-explorer/* for matches
Theory:
- 99.99% of our files are read only and never changed. NFS doesn't know this
- Most of our network performance is "has this changed?" or re-fetching data and metadata that hasn't changed
- By using loopback IO etc we "launder" the file check and do caching of (uncompressed) blocks read from NFS without always going back to see "is this still valid?"
Or something.
Based on various conversations about NFS performance, filing this as a place to put info:
Idea is:
/opt/images/...)/img/*/)/opt/compiler-explorer/*for matchesTheory:
Or something.