Factory Limits
Examples to describe how a factory limits the glideins in v3+. This page only describes how the factory will enforce limits and does not explain how the frontend comes up with the request itself.
Scenario
Factory: 1 Factory named
GlideinFactory?
Frontend: 2 Frontends named FE1 & FE2
Entries: 2 Entries name Entry1 & Entry2
Example 1: Only Entry Level Limits Defined
<glidein factory_name="GlideinFactory" glidein_name="v1_0" ... >
<downtimes/>
<log_retention>...</log_retention>
<monitor ... />
<security allow_proxy="frontend" ...>
<frontends>
<frontend name="FE1" identity="FE1@cmssrv97.fnal.gov">
<security_classes>
<security_class name="FE1_SEC1" username="user1"/>
<security_class name="FE1_SEC2" username="user2"/>
</security_classes>
</frontend>
<frontend name="FE2" identity="FE2@cmssrv97.fnal.gov">
<security_classes>
<security_class name="FE2_SEC1" username="user3"/>
<security_class name="FE2_SEC2" username="user4"/>
</security_classes>
</frontend>
</frontends>
</security>
<entries>
<entry name="Entry1" enabled="True" ...>
<config>
<max_jobs held="1000" idle="2000" running="10000">
<max_job_frontends>
</max_job_frontends>
</max_jobs>
<release max_per_cycle="20" sleep="0.2"/>
<remove max_per_cycle="5" sleep="0.2"/>
<restrictions require_voms_proxy="False"/>
<submit cluster_size="10" max_per_cycle="100" sleep="0.2"/>
</config>
...
</entry>
<entry name="Entry2" enabled="True" ...>
<config>
<max_jobs held="2000" idle="4000" running="20000">
<max_job_frontends>
</max_job_frontends>
</max_jobs>
<release max_per_cycle="20" sleep="0.2"/>
<remove max_per_cycle="5" sleep="0.2"/>
<restrictions require_voms_proxy="False"/>
<submit cluster_size="10" max_per_cycle="100" sleep="0.2"/>
</config>
...
</entry>
<entries>
...
</glidein>
Factory will use entry level limits for all the security classes (requests) in case above
For Entry1:
FE1_SEC1 & FE1_SEC2: (held = 1000, idle = 2000, running = 10000)
FE2_SEC1 & FE2_SEC2: (held = 2000, idle = 4000, running = 20000)
Example 2: Security Class Level Limits Defined
<glidein factory_name="GlideinFactory" glidein_name="v1_0" ... >
<downtimes/>
<log_retention>...</log_retention>
<monitor ... />
<security allow_proxy="frontend" ...>
<frontends>
<frontend name="FE1" identity="FE1@cmssrv97.fnal.gov">
<security_classes>
<security_class name="FE1_SEC1" username="user1"/>
<security_class name="FE1_SEC2" username="user2"/>
</security_classes>
</frontend>
<frontend name="FE2" identity="FE2@cmssrv97.fnal.gov">
<security_classes>
<security_class name="FE2_SEC1" username="user3"/>
<security_class name="FE2_SEC2" username="user4"/>
</security_classes>
</frontend>
</frontends>
</security>
<entries>
<entry name="Entry1" enabled="True" ...>
<config>
<max_jobs held="1000" idle="2000" running="10000">
<max_job_frontends>
<max_job_frontend name="FE1" security_class="FE1_SEC1" held="10" idle="10" glideins="10"/>
</max_job_frontends>
</max_jobs>
<release max_per_cycle="20" sleep="0.2"/>
<remove max_per_cycle="5" sleep="0.2"/>
<restrictions require_voms_proxy="False"/>
<submit cluster_size="10" max_per_cycle="100" sleep="0.2"/>
</config>
...
</entry>
<entry name="Entry2" enabled="True" ...>
<config>
<max_jobs held="2000" idle="4000" running="20000">
<max_job_frontends>
</max_job_frontends>
</max_jobs>
<release max_per_cycle="20" sleep="0.2"/>
<remove max_per_cycle="5" sleep="0.2"/>
<restrictions require_voms_proxy="False"/>
<submit cluster_size="10" max_per_cycle="100" sleep="0.2"/>
</config>
...
</entry>
<entries>
...
</glidein>
Factory will use security class level limits where applicable
For Entry1
FE1_SEC1: (held = 10, idle = 10, running = 10)
FE1_SEC2: (held = 1000, idle = 2000, running = 10000)
FE2_SEC1 & FE2_SEC2: (held = 2000, idle = 4000, running = 20000)
Example 3: Security Class Level Limits Enforced
<glidein factory_name="GlideinFactory" glidein_name="v1_0" ... >
<downtimes/>
<log_retention>...</log_retention>
<monitor ... />
<security allow_proxy="frontend" ...>
<frontends>
<frontend name="FE1" identity="FE1@cmssrv97.fnal.gov">
<security_classes>
<security_class name="FE1_SEC1" username="user1"/>
<security_class name="FE1_SEC2" username="user2"/>
</security_classes>
</frontend>
<frontend name="FE2" identity="FE2@cmssrv97.fnal.gov">
<security_classes>
<security_class name="FE2_SEC1" username="user3"/>
<security_class name="FE2_SEC2" username="user4"/>
</security_classes>
</frontend>
</frontends>
</security>
<entries>
<entry name="Entry1" enabled="True" ...>
<config>
<max_jobs held="1000" idle="2000" running="10000">
<max_job_frontends>
<max_job_frontend name="FE1" security_class="FE1_SEC1" held="10" idle="10" glideins="100"/>
<max_job_frontend name="FE1" security_class="FE1_SEC2" held="10" idle="20" glideins="100"/>
<max_job_frontend name="FE2" security_class="FE2_SEC1" held="10" idle="30" glideins="200"/>
<max_job_frontend name="FE2" security_class="FE2_SEC2" held="10" idle="40" glideins="200"/>
</max_job_frontends>
</max_jobs>
<release max_per_cycle="20" sleep="0.2"/>
<remove max_per_cycle="5" sleep="0.2"/>
<restrictions require_voms_proxy="False"/>
<submit cluster_size="10" max_per_cycle="100" sleep="0.2"/>
</config>
...
</entry>
<entry name="Entry2" enabled="True" ...>
<config>
<max_jobs held="2000" idle="4000" running="20000">
<max_job_frontends>
<max_job_frontend name="FE1" security_class="FE1_SEC1" held="10" idle="50" glideins="100"/>
<max_job_frontend name="FE1" security_class="FE1_SEC2" held="10" idle="60" glideins="100"/>
<max_job_frontend name="FE2" security_class="FE2_SEC1" held="10" idle="70" glideins="200"/>
<max_job_frontend name="FE2" security_class="FE2_SEC2" held="10" idle="80" glideins="200"/>
</max_job_frontends>
</max_jobs>
<release max_per_cycle="20" sleep="0.2"/>
<remove max_per_cycle="5" sleep="0.2"/>
<restrictions require_voms_proxy="False"/>
<submit cluster_size="10" max_per_cycle="100" sleep="0.2"/>
</config>
...
</entry>
<entries>
...
</glidein>
Factory will enforce Security Class level limits.
For Entry1
FE1_SEC1: (held = 10, idle = 10, running = 100)
FE1_SEC2: (held = 10, idle = 20, running = 100)
FE2_SEC1: (held = 10, idle = 30, running = 200)
FE2_SEC2: (held = 10, idle = 40, running = 200)