gyver wrote:
wouldn't you need the same gcc version on all nodes in a distcc farm (distcc newbie here) ?
Yes, from what I understand, you have to have the same major and minor version, so for example, mines is currently 3.3.4, I could use distcc with anyone that has version 3.3.x. With most everyone using Gentoo though, most everyone's would be the same stable version (I hope no-one is using masked ebuilds of gcc, shouldn't be right now anyway as 3.3.4 is I believe the latest version out including masked ebuilds).
gyver wrote:
is the bandwidth between linodes really counted by caker : I would have guessed that the bandwidth counter was setup on the network borders (maybe on a firewall). Technically it can be tricky to monitor bw between hosts in the same DC...
I assumed it was a per Linode BW count... I figured UML per host handled that, but only Chris knows.
gyver wrote:
The only thing left is to setup a page (Wiki ?) with :
- two lists of linodes (one for each DC) willing to share computing power grouped by hosts (we might need one list per gcc version too),
- groups of linodes already setup to cooperate.
In the list, just add the group a linode is in to help people choose free linodes.
This is a little more complicated than initially thought with GCC versions coming into play, thanks for mentioning it. It would require a little more scripting to automatically assign Linodes to groups so groups were fairly balanced, and it ensured both that Linodes were on different hosts, and also that they have compatible versions of GCC, which brings me to another point: With GCC in play, it almost makes it required (well, it would make it a lot easier to solve a number of our issues all at once) that another service be coded up to run on each participating Linode that would handle a number of things you pointed out.
The first and main reason for a service, would be to handle any firewall configurations that would need to be change/updated with new hosts or remove any non-responsive (whether it be that they stopped using the service, or are trying to cheat the system by blocking access to their distcc, but using everyone else's). Second, it could inform the main control of what version of GCC it's using (which I also just realized that even if distcc has support to check those versions and not use them if they aren't compatible, that it would still be necessary to make good judgements on which groups would work best together). Third, it would listen for group changes from the main control for which hosts it needs to configure itself with. And finally, a fourth reason, to handle any optimizations with GCC settings depending on host settings, like -j#.
Where ever and how ever the main control would be run (whether it be a simple web script, or otherwise), it could also handle reports on service status, keeping information on reports of Linodes abusing the system, etc.
Ok, now that I'm done theorizing on solutions, back to thoughts going on in the back of my head...
This is starting to look a little more complicated than what it's worth. I'm still up for the challenge, but that's a lot of work for a small benefit. I don't even compile that much to make this worth it on my Gentoo Linode. And like dmuench said, I haven't even covered the issue of security with a system like this. It was well worth scratching the itch though and satisfying my curiosity by bringing up a debate on it though.