Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
Reviewed
Description
Currently we can use configuration entry "yarn.resourcemanager.activities-manager.app-activities.max-queue-length" to control max queue length of app activities, but in some scenarios , this configuration may need to be updated in a growing cluster. Moreover, it's better for users to ignore that conf therefor it should be auto adjusted internally.
There are some differences among different scheduling modes:
- multi-node placement disabled
- Heartbeat driven scheduling: max queue length of app activities should not less than the number of nodes, considering nodes can not be always in order, we should make some room for misorder, for example, we can guarantee that max queue length should not be less than 1.2 * numNodes
- Async scheduling: every async scheduling thread goes through all nodes in order, in this mode, we should guarantee that max queue length should be numThreads * numNodes.
- multi-node placement enabled: activities on all nodes can be involved in a single app allocation, therefor there's no need to adjust for this mode.
To sum up, we can adjust the max queue length of app activities like this:
int configuredMaxQueueLength; int maxQueueLength; serviceInit(){ ... configuredMaxQueueLength = ...; //read configured max queue length maxQueueLength = configuredMaxQueueLength; //take configured value as default } CleanupThread#run(){ ... if (multiNodeDisabled) { if (asyncSchedulingEnabled) { maxQueueLength = max(configuredMaxQueueLength, numSchedulingThreads * numNodes); } else { maxQueueLength = max(configuredMaxQueueLength, 1.2 * numNodes); } } else if (maxQueueLength != configuredMaxQueueLength) { maxQueueLength = configuredMaxQueueLength; } }
Attachments
Attachments
Issue Links
- causes
-
YARN-9658 Fix UT failures in TestLeafQueue
- Resolved