This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: starting compile server - advice needed


Mike Stump wrote:

I'm more interested in things like,

> Do we let multiple users use one server?


My inclination is to say no. That would force the server to run with the permission of all the users who might use it, and then verify that the current request has the correct permissions.

Much simpler and safer to require the client and server to both run as the same user, I think.

> should create the server in pwd, or /tmp?

Using /tmp makes sense if we want to use the same server in multiple working directories - but then the client has to tell the server what it's cwd is, so it can resolve relative pathnames.

A problem with using /tmp is how can the client find the server - what should it be called? Assuming that the server is single user (see above), then it seems the server socket has to include to users name, number, or home directory.

An alternative is to bind the server to a socket in the user's home directory.

But the simplest solution appears to use cwd, but possibly provide a flag or environment variable to override it.

> Should we timeout in 1 minute, or 1 hour or 1 day?

I don't know. 1 minute is too short. If a server is bound to cwd, then 1 hour or 1 day timeout may create too many servers.

Should we autostart the server?

That is the question I asked. (I mainly asked *how*, but I also asked "should we".)


In the testsuite, how should we stop the server. gcc --kill-server makes sense, but should it kill all languages, or just one language? If the server is in /tmp, should we kill them?

I don't know.


What if they are `running'?

Currently --kill-server is "soft" - it sends the server a request to reset the timeout to zero, so it will exit when it it gets to that request. Perhaps a "hard" kill, to forcibly kill the server process,
would be more useful. A soft kill is useful for "exit after this request".


What about a build with -j2? What about a QMtets with -j2? Who should load balance the CPUs? How?

My thinking is that if a server is per-directory, then a "smart make" or IDE might start multiple parallel servers, for multiple directories. That doesn't help if a single directory has many source files. In that case it might be useful to use an option to override the default server name, so one might create more than one (one per cpu), or fewer servers than the number of directories.


Do we let multiple projects use one server?

That doesn't seem very useful.


These are the types of questions it would be nice to get answers for.

Yes. But the answer to most of these will have to be come from practical experience. Though have some ideas to start out with can't hurt.
--
--Per Bothner
per@bothner.com http://per.bothner.com/




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]