Why is the number of resources allocated to my application lower than what I expect?

Verify that this is actually the problem you are having:
  1. Check the number of resources allocated to your application by looking at the "Current allocation" value on the Consumers > Monitor Resource Allocation page for the consumer associated with your application. If your current allocation is not what you expect, continue reading to find out why you may be experiencing this problem.

  2. Navigate to the Consumers > Monitor Resource Allocation tab in the Platform Management Console and check the number of resources your application deserves by looking at the "Guaranteed" value for the consumer associated with your application. If the Guaranteed value does not match your expectation, you are having a related problem. Refer to Why is the number of guaranteed resources for my application lower than what I expect? for more information.

  3. Navigate to Consumers > Monitor Resource Allocation in the Platform Management Console and check the demand for the consumer associated with your application (green bar). If the demand is not what you expect, verify that your application is configured to request the number of resources you expect by examining the taskHighWaterMark in your application profile. TaskHighWaterMark is a ratio that is used to determine whether more CPU slots need to be requested to meet the service level agreement of the application. It is a ratio of unprocessed tasks to CPU slots. If the ratio of unprocessed tasks to CPU slots exceeds the taskHighWaterMark, more resources will be requested for the application. Ensure that your rate of request is configured as expected. If your application's resource demand does not match your expectation, modify the taskHighWaterMark for your application. By default, taskHighWaterMark is 1.0 which means that for every 1 unprocessed task, 1 CPU slot is requested.

    Note:

    If your application is pre-started (preStartApplication=true in your application profile), your application’s SSM immediately requests numOfPreloadedServices slots, as defined in your application profile. Any slots required beyond numOfPreloadedServices are requested as needed according to taskHighWaterMark.

  4. Check that there are no blocked hosts for your application. If a host is blocked for your application, EGO cannot allocate that host back to your application until it is explicitly unblocked. If a host is blocked, you have no resources or fewer resources than expected serving your application, more tasks in the PENDING state, and workload completes at a slower rate. Refer to Why are there blocked hosts for my application? for more information.

Symphony grid

Note:

The remaining section only applies to Symphony grid-mode, and only if you have explicitly configured resource groups, explicitly modified your resource plan, or modified the resReq or resourceGroupName string in your application profile. If you have not done any of those items, you can skip the rest.

  1. Check that the resource requirement and resource group are configured correctly for your application. If the resource requirement and resource group pair are configured incorrectly, EGO may not be able to find a resource that matches the specified criteria. If EGO cannot satisfy your resource request, you have no resources or fewer resources than expected serving your application, more tasks in the PENDING state, and workload completes at a slower rate. There are two areas where you can specify a resource requirement and a resource group for your application:
    • In the SOAM > SSM section of the application profile, which specifies the requirements for the Session Manager host for your application.

    • In the Consumer section of the application profile, which specifies the requirements for the compute hosts that run the workload for your application.

  2. To check and modify your resource requirement and resource group for the Session Manager host:
    • In the SOAM > SSM section of the application profile, make sure the resReq and resourceGroupName attributes are configured to the values that you expect. Modify the values, if necessary. The default configuration should work without modification, if you have not made any major changes the cluster. By default:
      • resourceGroupName="ManagementHosts", which specifies that the host should be selected from among those in the "ManagementHosts" resource group.

      • resReq="", which specifies that there is no specific requirement for host selection within the resource group specified in the resourceGroupName attribute.

  3. To check and modify your resource requirement and resource group for the compute hosts:
    • In the Consumer section of the application profile, make sure the resReq and resourceGroupName attributes are configured to the values that you expect. Modify the values, if necessary. The default configuration should work without modification if you have not made any major changes the cluster.
      • resourceGroupName="", which specifies that the host should be selected from any resource group.

      • resReq="select(!mg)", which specifies that only hosts that do not have the resource attribute "mg" should be selected from within the resource group specified in the resourceGroupName attribute.

  4. After you are sure your resReq and resourceGroupName attributes are configured to the values that you expect, check that your resource group is correctly configured.
    • Navigate to Resources > Configure Resource Groups in the Platform Management Console and click on the name of the resource group in question.
      • If the Resource Selection Method is Dynamic, make sure that the resource requirement string field contains the appropriate selection criteria for this resource group. Modify the resource requirement string, if necessary.

      • If the Resource Selection Method is Static, make sure that the host list contains all of the hosts that you would like in this resource group. Modify this list, if necessary.