Bugzilla – Bug 5830
Don't fetch a delegated job credential during job creation
Last modified: 2008-02-06 14:24:42
You need to
before you can comment on or make changes to this bug.
If a client adds a job credential endpoint to the job descripton the
credential is fetched as part of the job creation Web Services call
Things that happen there:
1. Check if the credential has already been fetched from the
DelegationService. If so use the cached credential. If not fetch it
from the DelegationService and cache it.
2. Create a user proxy file and store it.
This is a quite expensive operation since a call to a shellscript
(globus-gram-local-proxy-tool) is done which creates the proxy-file.
Also 2 threads are involved in this.
If a lot of job creation requests come in at a time the by far the biggest
amount of time spent in job creation is spent while fetching the credential
and creating the user proxy (about 95%). Under moderate submission load on a
strong machine this can take about 15 seconds.
This probably explains the submit timeouts OSG and LEAD folks found in their
simple tests on weaker hosts.
Condor-G by default delegates a job credential.
It seems unnecessary to fetch the credential and create the user-proxy as
part of the job resource creation. This can be done in a normal job processing
step in the StateMachine.
Tests showed that this reduces the time to create a job to 20-1000 ms.
This also ensures that only a limited amount of user-proxy creations happen
at a time. The max number is defined by the number of processing threads in
gram configured in JNDI.
Tests showed that the time to create a job resource was quite independent
from the job creation request load when the job credential was not fetched
during resource creation.
In 4.2 the job credential will be fetched as first processing state of a job
resource (internal state None)