tune-workloads
Analyze workload classification and **autonomously configure** classification rules, filters, and priorities to improve accuracy and meet business requirements
$ 설치
git clone https://github.com/teradata-labs/claude-cookbooks /tmp/claude-cookbooks && cp -r /tmp/claude-cookbooks/skills/operations/workloadmanagement/optimization/tune-workloads ~/.claude/skills/claude-cookbooks// tip: Run this command in your terminal to install the skill
name: tune-workloads description: Analyze workload classification and autonomously configure classification rules, filters, and priorities to improve accuracy and meet business requirements
Tune Workloads
Analyze and autonomously optimize workload definitions including classification rules, filters, priorities, and exception handling to ensure queries are properly managed according to business requirements.
🎯 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:
- ✅ ADD classification criteria to existing workloads
- ✅ ADD sub-criteria for fine-grained targeting (FTSCAN, MINSTEPTIME, etc.)
- ✅ VALIDATE classification types and operators before execution
- ✅ USE TEMPLATES for common classification patterns
- ✅ VERIFY changes were applied correctly
- ✅ ACTIVATE rulesets to apply all changes
Instructions
When to Use This Skill
- Queries are being misclassified into wrong workloads
- Need to add classification rules to existing workload
- Workload SLAs are not being met due to classification issues
- After application changes or new deployments
- Regular workload management review and optimization
- Need to adjust classification criteria dynamically
Available MCP Tools
Monitoring & Analysis:
list_active_WD- Review active workload definitionslist_WDs- List all workloads (active and inactive)show_tdwm_summary- Analyze workload distributionshow_tasm_statistics- Review TASM rule effectivenessshow_tasm_even_history- See workload classification decisionsshow_query_band- Review query band usagelist_rulesets- List all available rulesets
Configuration Management (NEW ✨):
add_classification_to_rule- Add classification criteria to workload/filter/throttleadd_subcriteria_to_target- Add sub-criteria (FTSCAN, MINSTEPTIME, etc.)activate_ruleset- Apply all pending changes
Available MCP Resources (NEW ✨)
Templates:
tdwm://templates/filter- List all filter templatestdwm://template/filter/application-basic- Filter by applicationtdwm://template/filter/user-group- Filter by user/accounttdwm://template/filter/query-complexity- Filter by complexity metrics
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/filter-actions- Filter actions (ACCEPT/REJECT)
Discovery:
tdwm://rulesets- List all rulesetstdwm://system/active-ruleset- Get currently active rulesettdwm://ruleset/{name}/filters- List filters in rulesettdwm://ruleset/{name}/throttles- List throttles in rulesettdwm://ruleset/{name}/pending-changes- Check pending changes
Workflows:
tdwm://workflow/add-classification- Step-by-step classification addition guide
Step-by-Step Workflow
Phase 1: Discovery & Analysis (Read-Only)
-
Assess Current Workload Configuration
- Get active ruleset:
tdwm://system/active-ruleset - List all workloads:
list_active_WDandlist_WDs - Review workload distribution:
show_tdwm_summary - Document workload hierarchy and priorities
- Get active ruleset:
-
Analyze Classification Accuracy
- Use
show_tdwm_summaryto see query distribution - Check
show_tasm_even_historyfor misclassification patterns - Identify queries landing in DEFAULT or wrong workloads
- Review
show_query_bandto verify tagging is working
- Use
-
Review Existing Rules
- List filters:
tdwm://ruleset/{name}/filters - For each filter:
tdwm://ruleset/{name}/filter/{filter_name} - List throttles:
tdwm://ruleset/{name}/throttles - For each throttle:
tdwm://ruleset/{name}/throttle/{throttle_name} - Check for gaps, overlaps, or conflicts in rule logic
- List filters:
-
Identify Classification Gaps
- Queries not matching any classification rules
- Missing criteria for new applications
- Overly broad or narrow classification
- Need for sub-criteria refinement
-
Calculate Optimal Classification
- Based on application characteristics and query bands
- Consider user groups and account names
- Factor in query complexity metrics (if needed)
- Determine priority relative to business requirements
Phase 2: Execute Changes (Autonomous - NEW!)
-
Select Approach: Template or Custom
-
Template-Based (Recommended):
- Browse templates:
tdwm://templates/filter - Select template matching use case
- Read template:
tdwm://template/filter/{id} - Customize parameters for your workload
- Browse templates:
-
Custom Classification:
- Validate classification types:
tdwm://reference/classification-types - Validate operators:
tdwm://reference/operators - Design custom classification criteria
- Validate classification types:
-
-
Add Classification to Rule
-
For existing workload/filter/throttle:
Use: add_classification_to_rule( ruleset_name, rule_name, rule_type, classification_criteria ) -
Classification criteria structure:
[{ "description": "Human-readable description", "type": "APPL|USER|ACCT|...", # From reference "value": "actual_value", "operator": "I|O|IO" # Inclusion/Exclusion/Inconclusive }]
-
-
Add Sub-Criteria (if needed)
-
For fine-grained control, add sub-criteria:
Use: add_subcriteria_to_target( ruleset_name, rule_name, target_type, subcriteria ) -
Common sub-criteria:
FTSCAN: "Y"- Full table scan queriesMINSTEPTIME: "300"- Queries running > 5 minutesMINPARSERTIME: "10"- Queries with parsing time > 10 seconds
-
-
Activate Changes
- Check pending changes:
tdwm://ruleset/{name}/pending-changes - Activate ruleset:
activate_ruleset(ruleset_name)
- Check pending changes:
Phase 3: Verification (Autonomous - NEW!)
-
Verify Configuration
- Read back filter/throttle:
tdwm://ruleset/{name}/filter/{name} - Confirm classification was added
- Confirm enabled state is correct
- Read back filter/throttle:
-
Monitor Impact
- Wait 5-10 minutes for statistics to update
- Check workload distribution:
show_tdwm_summary - Verify queries now classified correctly
- Monitor TASM events:
show_tasm_even_history
-
Iterate if Needed
- If still misclassifying: add more criteria
- If too broad: add exclusion criteria (operator "O")
- Use
add_classification_to_rulefor adjustments
Examples
Example 1: Fix ETL Misclassification (Autonomous)
Scenario: ETL queries ending up in DEFAULT workload instead of ETL workload
Discovery:
1. show_tdwm_summary → See 50% queries in DEFAULT (should be in ETL)
2. show_query_band → ETL sets query band 'APP=ETL_LOADER'
3. tdwm://system/active-ruleset → "Tactical"
4. tdwm://ruleset/Tactical/filter/ETL_FILTER → No APPL classification exists
Analysis:
- ETL workload exists but classification is incomplete
- ETL sets query band but filter doesn't check it
- Need to add APPL classification to ETL_FILTER
Execution (Autonomous):
1. Validate classification type:
tdwm://reference/classification-types
→ Confirm "APPL" is valid classification type
2. Add APPL classification to ETL filter:
add_classification_to_rule(
ruleset_name="Tactical",
rule_name="ETL_FILTER",
rule_type="filter",
classification_criteria=[{
"description": "Match ETL application query band",
"type": "APPL",
"value": "ETL_LOADER",
"operator": "I" # Inclusion
}]
)
3. Check pending changes:
tdwm://ruleset/Tactical/pending-changes
→ Confirm APPL classification queued
4. Activate:
activate_ruleset(ruleset_name="Tactical")
5. Verify:
tdwm://ruleset/Tactical/filter/ETL_FILTER
→ Confirm APPL classification present
6. Monitor (wait 10 minutes):
show_tdwm_summary
→ ETL queries now in ETL workload (not DEFAULT)
Result: ETL queries properly classified, DEFAULT workload reduced by 50%
Example 2: Add User-Based Classification (Autonomous)
Scenario: Power BI users need dedicated workload but not all set query band
Discovery:
1. show_tdwm_summary → Power BI queries mixed across workloads
2. show_query_band → Only 60% of Power BI queries set query band
3. list_active_WD → POWERBI workload exists
4. tdwm://ruleset/Tactical/filter/POWERBI_FILTER → Only has APPL classification
Analysis:
- Some Power BI users don't set query band (legacy reports)
- Need to add USER classification as fallback
- Power BI users identified by username pattern "pbi_*"
Execution (Autonomous):
1. Validate classification type:
tdwm://reference/classification-types
→ Confirm "USER" is valid
2. Add USER classification to existing filter:
add_classification_to_rule(
ruleset_name="Tactical",
rule_name="POWERBI_FILTER",
rule_type="filter",
classification_criteria=[{
"description": "Catch Power BI users without query band",
"type": "USER",
"value": "pbi_*", # Pattern matching
"operator": "I"
}]
)
3. Activate:
activate_ruleset(ruleset_name="Tactical")
4. Verify:
tdwm://ruleset/Tactical/filter/POWERBI_FILTER
→ Confirm both APPL and USER classifications present
5. Monitor:
show_tdwm_summary
→ Power BI workload increased from 60% to 95% capture rate
Result: Power BI queries properly classified even without query band
Example 3: Limit Long-Running Analytics (Autonomous)
Scenario: Analytics queries running >10 minutes should be throttled
Discovery:
1. show_query_log → Analytics queries running 10-60 minutes
2. tdwm://ruleset/Tactical/throttle/ANALYTICS_LIMIT → Has APPL classification
3. show_trottle_statistics → Short analytics queries also being throttled
Analysis:
- Throttle catches all analytics queries
- Only long-running queries need throttling
- Need to add MINSTEPTIME sub-criteria (600 seconds = 10 minutes)
Execution (Autonomous):
1. Validate sub-criteria type:
tdwm://reference/subcriteria-types
→ Confirm "MINSTEPTIME" is valid
2. Add MINSTEPTIME sub-criteria to throttle:
add_subcriteria_to_target(
ruleset_name="Tactical",
throttle_name="ANALYTICS_LIMIT",
target_type="APPL",
subcriteria={
"type": "MINSTEPTIME",
"value": "600" # 10 minutes in seconds
}
)
3. Activate:
activate_ruleset(ruleset_name="Tactical")
4. Verify:
tdwm://ruleset/Tactical/throttle/ANALYTICS_LIMIT
→ Confirm MINSTEPTIME sub-criteria present
5. Monitor:
show_trottle_statistics
→ Only long-running analytics queries now throttled
Result: Short analytics queries run freely, only long queries throttled
Example 4: Template-Driven Application Filter (Autonomous)
Scenario: New ML application needs classification into ML workload
Discovery:
1. show_tdwm_summary → ML queries appearing in DEFAULT
2. show_query_band → ML app sets 'APP=ML_TRAINING'
3. list_active_WD → ML_WORKLOAD exists
4. tdwm://ruleset/Tactical/filters → No ML_FILTER exists yet
Analysis:
- Need to create new filter for ML workload
- Application sets query band (simple case)
- Can use template for quick creation
Execution (Template-Based):
1. Get template:
tdwm://template/filter/application-basic
→ Shows APPL-based filter pattern
2. Create filter using create_filter_rule:
create_filter_rule(
ruleset_name="Tactical",
filter_name="ML_FILTER",
classification_criteria=[{
"description": "ML Training Application",
"type": "APPL",
"value": "ML_TRAINING",
"operator": "I"
}],
action_type="ACCEPT",
workload_name="ML_WORKLOAD"
)
3. Enable filter:
enable_filter_rule(
ruleset_name="Tactical",
filter_name="ML_FILTER"
)
4. Activate:
activate_ruleset(ruleset_name="Tactical")
5. Verify:
tdwm://ruleset/Tactical/filter/ML_FILTER
→ Confirm filter created with APPL classification
6. Monitor:
show_tdwm_summary
→ ML queries now in ML_WORKLOAD
Result: ML application properly classified into dedicated workload
Example 5: Exclude Full Table Scans from Fast Track (Autonomous)
Scenario: Fast track workload getting slow queries due to full table scans
Discovery:
1. show_tdwm_summary → FAST_TRACK average response time increasing
2. show_query_log → Some FAST_TRACK queries doing full table scans
3. tdwm://ruleset/Tactical/filter/FAST_TRACK_FILTER → Has USER and APPL criteria
Analysis:
- Fast track should only handle indexed queries
- Full table scans should go to BATCH workload
- Need to add FTSCAN sub-criteria with exclusion
Execution (Autonomous):
1. Validate sub-criteria type:
tdwm://reference/subcriteria-types
→ Confirm "FTSCAN" is valid
2. Add exclusion for full table scans:
add_subcriteria_to_target(
ruleset_name="Tactical",
filter_name="FAST_TRACK_FILTER",
target_type="USER", # Apply to USER classification
subcriteria={
"type": "FTSCAN",
"value": "N" # Only queries NOT doing full scan
}
)
3. Activate:
activate_ruleset(ruleset_name="Tactical")
4. Verify:
tdwm://ruleset/Tactical/filter/FAST_TRACK_FILTER
→ Confirm FTSCAN sub-criteria present
5. Monitor:
show_tdwm_summary
→ FAST_TRACK average response time improved
→ Full scan queries now in BATCH workload
Result: Fast track performance improved by excluding full scans
Best Practices
General Principles
- Start with broad classification (APPL, USER), refine with sub-criteria later
- Use query bands as primary classification method when possible
- Username/account filters are fallbacks when query bands unavailable
- Test classification changes during low-activity periods when possible
- Document business justification for each classification rule
- Monitor classification for 1-2 weeks after changes to verify effectiveness
Discovery Before Execution (NEW ✨)
- ALWAYS use
tdwm://ruleset/{name}/filtersto see existing filters before adding - Check
tdwm://ruleset/{name}/pending-changesbefore activating - Verify with resource read after changes
- Understand current classification before adding new rules
Template Usage (NEW ✨)
- Use templates for common patterns (application-based, user-based)
- Customize template parameters for your specific needs
- Follow template best practices and examples
Execution Safety (NEW ✨)
- Validate classification types against
tdwm://reference/classification-types - Validate operators against
tdwm://reference/operators - Start with single classification, add more if needed
- Test in non-production first if possible
- Keep emergency rollback plan
Validation (NEW ✨)
- Always read back filter/throttle after adding classification
- Confirm classification appears in rule definition
- Monitor workload distribution after changes
- Check TASM events to verify classification working
Monitoring
- Query bands take precedence over username/account classification
- Operator "I" (Inclusion) matches the value
- Operator "O" (Exclusion) excludes the value
- Operator "IO" (Inconclusive) allows TASM to continue evaluation
- Sub-criteria refine the target (FTSCAN, MINSTEPTIME, etc.)
- Coordinate classification changes with application teams
- Regular classification reviews identify drift over time
Related Skills
- Use optimize-throttles skill for concurrency limit adjustments
- Use manage-workloads skill for creating new workloads from scratch
- Use emergency-response skill for crisis situations
- Use discover-configuration skill to inventory existing classifications
Repository
