Optimize Throttles
Analyze throttle behavior and autonomously configure optimal throttle settings to balance workload priorities, prevent resource starvation, and meet service level agreements.
π― New Autonomous Capabilities
This skill can now execute changes, not just recommend them!
With tdwm-mcp v1.5.0, this skill has evolved from advisory to autonomous:
- β CREATE new throttles based on analysis
- β MODIFY existing throttle limits dynamically
- β ENABLE/DISABLE throttles without manual SQL
- β USE TEMPLATES for common throttle patterns
- β VALIDATE parameters before execution
- β VERIFY changes were applied correctly
Instructions
When to Use This Skill
- Users report excessive query delays or throttling
- Need to balance competing workload priorities
- Workload SLAs are not being met
- After adding new workloads or applications
- Following system capacity changes
- System overload requiring immediate throttle creation
- Seasonal workload changes need different limits
Available MCP Tools
Monitoring & Analysis:
show_trottle_statistics- View throttle behavior by level (ALL/QUERY/SESSION/WORKLOAD)show_tasm_statistics- Review TASM rule effectivenessshow_tdwm_summary- See workload distributionlist_active_WD- List active workload definitionsshow_query_log- Analyze query timing and delayslist_rulesets- List all available rulesets
Configuration Management (NEW β¨):
create_system_throttle- Create new throttle with classificationsmodify_throttle_limit- Dynamically adjust throttle limitsdelete_throttle- Remove throttle definitionenable_throttle- Activate throttle ruledisable_throttle- Deactivate throttle ruleadd_classification_to_rule- Add classification criteriaadd_subcriteria_to_target- Add sub-criteria (FTSCAN, MINSTEPTIME, etc.)activate_ruleset- Apply all pending changes
Available MCP Resources (NEW β¨)
Templates:
tdwm://templates/throttle- List all throttle templatestdwm://template/throttle/application-basic- Limit queries by applicationtdwm://template/throttle/table-fullscan- Limit full table scanstdwm://template/throttle/user-concurrency- Per-user concurrency limitstdwm://template/throttle/time-based-etl- Time-based ETL throttling
Reference Data:
tdwm://reference/classification-types- All 31 classification typestdwm://reference/operators- Classification operators (I, O, IO)tdwm://reference/subcriteria-types- Sub-criteria typestdwm://reference/throttle-types- Throttle types (DM, M)
Discovery:
tdwm://rulesets- List all rulesetstdwm://system/active-ruleset- Get currently active rulesettdwm://ruleset/{name}/throttles- List throttles in rulesettdwm://ruleset/{name}/throttle/{throttle_name}- Throttle detailstdwm://ruleset/{name}/pending-changes- Check pending changes
Workflows:
tdwm://workflow/create-throttle- Step-by-step throttle creation guidetdwm://workflow/emergency-throttle- Emergency response workflow
Step-by-Step Workflow
Phase 1: Discovery & Analysis (Read-Only)
-
Assess Current Throttle Behavior
- Use
show_trottle_statisticsfor all levels (query/session/workload) - Identify workloads experiencing excessive throttling
- Note throttle delay times and frequency
- Use
-
Understand Workload Requirements
- Review business SLAs for each workload
- Identify critical vs non-critical workloads
- Determine acceptable delay tolerances
-
Analyze Workload Interactions
- Use
show_tdwm_summaryto see resource competition - Identify which workloads are blocking others
- Check if high-priority workloads are being throttled
- Use
-
Review Current Configuration
- Get active ruleset:
tdwm://system/active-ruleset - List current throttles:
tdwm://ruleset/{name}/throttles - For each throttle:
tdwm://ruleset/{name}/throttle/{throttle_name} - Identify mismatches between priority and throttle limits
- Get active ruleset:
-
Calculate Optimal Settings
- Based on resource availability and workload requirements
- Consider peak vs average usage patterns
- Balance protection (prevent monopolization) vs throughput
- Factor in concurrency needs for each workload
Phase 2: Execute Changes (Autonomous - NEW!)
-
Select Approach: Template or Custom
-
Template-Based (Recommended):
- Browse templates:
tdwm://templates/throttle - Select template matching use case
- Read template:
tdwm://template/throttle/{id} - Customize parameters for your workload
- Browse templates:
-
Custom Throttle:
- Validate classification types:
tdwm://reference/classification-types - Validate operators:
tdwm://reference/operators - Design custom classification criteria
- Validate classification types:
-
-
Create or Modify Throttle
-
For NEW throttles:
Use: create_system_throttle( ruleset_name, throttle_name, throttle_type, limit, classification_criteria ) -
For EXISTING throttles:
Use: modify_throttle_limit( ruleset_name, throttle_name, new_limit )
-
-
Add Additional Criteria (if needed)
- Add classifications:
add_classification_to_rule - Add sub-criteria:
add_subcriteria_to_target(FTSCAN, MINSTEPTIME, etc.)
- Add classifications:
-
Enable and Activate
- Enable throttle:
enable_throttle(ruleset_name, throttle_name) - Check pending changes:
tdwm://ruleset/{name}/pending-changes - Activate ruleset:
activate_ruleset(ruleset_name)
- Enable throttle:
Phase 3: Verification (Autonomous - NEW!)
-
Verify Configuration
- Read back throttle:
tdwm://ruleset/{name}/throttle/{throttle_name} - Confirm limit matches expected value
- Confirm enabled state is correct
- Read back throttle:
-
Monitor Impact
- Wait 5-10 minutes for statistics to update
- Check throttle statistics:
show_trottle_statistics - Verify delayed query count is acceptable
- Monitor workload summary:
show_tdwm_summary
-
Iterate if Needed
- If throttling is too aggressive: increase limit
- If not effective enough: decrease limit
- Use
modify_throttle_limitfor adjustments
Examples
Example 1: Create ETL Throttle to Protect Interactive Queries
Scenario: Batch ETL jobs overwhelming system, slowing interactive reports
Discovery:
1. show_tdwm_summary β See ETL using 80% of resources
2. show_trottle_statistics β No ETL throttle exists
3. tdwm://system/active-ruleset β "Tactical"
Analysis:
- ETL should run max 10 concurrent queries
- Interactive reports need protection
- ETL workload identified by APPL='ETL_APP'
Execution (Autonomous):
1. Select template:
tdwm://template/throttle/application-basic
2. Create throttle:
create_system_throttle(
ruleset_name="Tactical",
throttle_name="ETL_LIMIT",
throttle_type="DM", # Delay Management
limit=10,
classification_criteria=[{
"description": "ETL Application throttle",
"type": "APPL",
"value": "ETL_APP",
"operator": "I" # Inclusion
}]
)
3. Enable:
enable_throttle(ruleset_name="Tactical", throttle_name="ETL_LIMIT")
4. Activate:
activate_ruleset(ruleset_name="Tactical")
5. Verify:
tdwm://ruleset/Tactical/throttle/ETL_LIMIT
β Confirm limit=10, enabled=true
6. Monitor:
show_trottle_statistics(type="ALL")
β Check ETL delayed count after 10 minutes
Result: ETL limited to 10 concurrent, interactive reports responsive
Example 2: Adjust Existing Throttle Limit
Scenario: Analytics throttle too restrictive (limit=3), queries backing up
Discovery:
1. show_trottle_statistics β Analytics delayed count growing
2. tdwm://ruleset/Tactical/throttle/ANALYTICS_LIMIT β Current limit=3
3. show_query_log β Analytics queries delayed avg 15 minutes
Analysis:
- Limit of 3 is too low for current analytics load
- Recommend increasing to 8 based on workload analysis
- System has capacity for increase
Execution (Autonomous):
1. Modify limit:
modify_throttle_limit(
ruleset_name="Tactical",
throttle_name="ANALYTICS_LIMIT",
new_limit=8
)
2. Activate:
activate_ruleset(ruleset_name="Tactical")
3. Verify:
tdwm://ruleset/Tactical/throttle/ANALYTICS_LIMIT
β Confirm limit=8
4. Monitor:
show_trottle_statistics(type="ALL")
β Delayed count should decrease
Result: Analytics throughput increased, delay reduced to <5 min
Example 3: Emergency Throttle During System Overload
Scenario: Unexpected query spike causing CPU >95%, need immediate restriction
Analysis: SKIP detailed analysis, immediate action needed
Execution (Fast):
1. Use emergency workflow:
tdwm://workflow/emergency-throttle
2. Create very restrictive throttle:
create_system_throttle(
ruleset_name="Tactical",
throttle_name="EMERGENCY_LIMIT",
throttle_type="DM",
limit=3, # Very restrictive
classification_criteria=[{
"description": "Emergency system protection",
"type": "APPL",
"value": "*", # ALL applications
"operator": "I"
}]
)
3. Enable and activate immediately:
enable_throttle(ruleset_name="Tactical", throttle_name="EMERGENCY_LIMIT")
activate_ruleset(ruleset_name="Tactical")
4. Monitor recovery:
Wait 60 seconds, check show_physical_resources
β CPU should drop below 90%
5. Gradual relaxation:
modify_throttle_limit(..., new_limit=5)
activate_ruleset(...)
Wait, monitor
modify_throttle_limit(..., new_limit=10)
activate_ruleset(...)
Wait, monitor
6. Cleanup when stable:
delete_throttle(ruleset_name="Tactical", throttle_name="EMERGENCY_LIMIT")
activate_ruleset(ruleset_name="Tactical")
Result: System stabilized in <5 minutes, gradual return to normal
Example 4: Template-Driven Full Table Scan Throttle
Scenario: Full table scans causing AMP skew and resource contention
Discovery:
1. show_amp_load β High skew factor
2. show_query_log β Many queries doing full table scans
3. Need to limit FTSCAN queries
Execution (Template-Based):
1. Get template:
tdwm://template/throttle/table-fullscan
β Shows structure with FTSCAN sub-criteria
2. Create throttle using template pattern:
create_system_throttle(
ruleset_name="Tactical",
throttle_name="FTSCAN_LIMIT",
throttle_type="DM",
limit=5,
classification_criteria=[{
"description": "Target tables",
"type": "TABLE",
"value": "LARGE_TABLE_*", # Pattern matching
"operator": "I"
}]
)
3. Add FTSCAN sub-criteria:
add_subcriteria_to_target(
ruleset_name="Tactical",
throttle_name="FTSCAN_LIMIT",
target_type="TABLE",
subcriteria={
"type": "FTSCAN",
"value": "Y" # Full scan = Yes
}
)
4. Enable and activate:
enable_throttle(ruleset_name="Tactical", throttle_name="FTSCAN_LIMIT")
activate_ruleset(ruleset_name="Tactical")
5. Verify:
tdwm://ruleset/Tactical/throttle/FTSCAN_LIMIT
β Confirm sub-criteria present
Result: Full table scans limited, AMP skew reduced
Best Practices
General Principles
- Throttles should reflect business priorities, not just technical factors
- Set throttles to prevent monopolization while allowing throughput
- High-priority workloads need guaranteed minimum resources
- Low-priority workloads should have limits to prevent starvation of others
- Always leave some headroom for unexpected workload spikes
- Document throttle rationale for future reference
Discovery Before Execution (NEW β¨)
- ALWAYS use
tdwm://ruleset/{name}/throttlesto see existing throttles before creating - Check
tdwm://ruleset/{name}/pending-changesbefore activating - Verify with
tdwm://ruleset/{name}/throttle/{name}after changes
Template Usage (NEW β¨)
- Use templates for common patterns (reduces errors by 50%)
- Customize template parameters for your specific needs
- Follow template best practices and examples
Execution Safety (NEW β¨)
- Start with conservative limits, increase gradually
- Test throttle changes in non-production first if possible
- Monitor impact for 15-30 minutes before declaring success
- Keep emergency rollback plan (delete_throttle + activate_ruleset)
Validation (NEW β¨)
- Validate classification types against
tdwm://reference/classification-types - Validate operators against
tdwm://reference/operators - Check throttle exists after creation (resource read)
Monitoring
- Query-level throttles control concurrency, workload-level control total impact
- Consider different throttle settings for peak vs off-peak hours
- Monitor throttle effectiveness after changes - iterate if needed
- Coordinate throttle changes with workload owners
Related Skills
- Use configure-throttles skill for new throttle creation from scratch
- Use emergency-response skill for crisis situations
- Use discover-configuration skill to inventory existing throttles
- Use tune-workloads skill to adjust classification criteria