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)


This topic: UCSDTier2 > WebHome > GlideinWMS > FactoryLimitsCalculations
Topic revision: r1 - 2011/08/31 - 19:47:46 - ParagMhashilkar
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback