Keeper Stress Analysis
ClickHouse/ClickHouse
Analyze ClickHouse Keeper stress-test results from play.clickhouse.com / keeperstresstests data warehouse.
Detect server cores/RAM/disk from system tables, then recommend ClickHouse settings sized to that hardware.
$ npx skills add chmonitor/chmonitor --skill hardware-tuning -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install chmonitor/chmonitor hardware-tuning --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/hardware-tuning .claude/skills/hardware-tuning && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "hardware-tuning" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/hardware-tuning into .claude/skills/hardware-tuning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hardware-tuning", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/hardware-tuningType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add chmonitor/chmonitor --skill hardware-tuning -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install chmonitor/chmonitor hardware-tuning --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/hardware-tuning .agents/skills/hardware-tuning && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hardware-tuning" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/hardware-tuning into .agents/skills/hardware-tuning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hardware-tuning", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add chmonitor/chmonitor --skill hardware-tuning -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install chmonitor/chmonitor hardware-tuning --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/hardware-tuning .cursor/skills/hardware-tuning && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "hardware-tuning" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/hardware-tuning into .cursor/skills/hardware-tuning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hardware-tuning", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/chmonitor/chmonitor.git --path .agents/skills/hardware-tuning--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add chmonitor/chmonitor --skill hardware-tuning -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install chmonitor/chmonitor hardware-tuning --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/hardware-tuning .gemini/skills/hardware-tuning && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "hardware-tuning" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/hardware-tuning into .gemini/skills/hardware-tuning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hardware-tuning", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install chmonitor/chmonitor hardware-tuningInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add chmonitor/chmonitor --skill hardware-tuning -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/hardware-tuning .github/skills/hardware-tuning && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "hardware-tuning" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/hardware-tuning into .github/skills/hardware-tuning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hardware-tuning", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add chmonitor/chmonitor --skill hardware-tuning -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install chmonitor/chmonitor hardware-tuning --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/hardware-tuning .opencode/skills/hardware-tuning && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "hardware-tuning" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/hardware-tuning into .opencode/skills/hardware-tuning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hardware-tuning", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
hardware-tuningDetect server cores/RAM/disk from system tables, then recommend ClickHouse settings sized to that hardware.
Hardware Tuning is an agent skill from chmonitor/chmonitor. Detect server cores/RAM/disk from system tables, then recommend ClickHouse settings sized to that hardware.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases, covering Data warehousing. It works with ClickHouse. The repository describes itself as: Open-source operational advisor for ClickHouse — real-time monitoring plus AI-driven index/partition/materialized-view recommendations. The licence is GPL-3.0.
Read from SKILL.md and the folder at commit fc39ef0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are sql).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hardware Tuning loads about 2.1k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 777 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from chmonitor/chmonitor at commit fc39ef0, republished under its GPL-3.0 licence (© chmonitor). 777 words, ~2,106 tokens.
.claude/skills/hardware-tuning/SKILL.md (or your agent's skills folder).Load this skill when the user asks "what settings should I change given my server's hardware?" or similar. The workflow is always: detect first, recommend second. Never recommend a specific byte value as a universal truth — give ratios and explain the reasoning.
Metric names vary by ClickHouse version. Use broad ILIKE patterns and inspect what is actually returned before drawing conclusions.
-- Step 1: Discover what CPU/memory metrics are available on this server
SELECT metric, value
FROM system.asynchronous_metrics
WHERE metric ILIKE '%CPU%'
OR metric ILIKE '%Memory%'
OR metric ILIKE '%core%'
ORDER BY metricKey metrics to look for (names differ across versions):
| What you need | Likely metric names |
|---|---|
| Logical CPU cores | CGroupMaxCPU, OSCPUVirtualTimeMicroseconds (indirect), check also system.metrics CPUUsage* |
| Total RAM | OSMemoryTotal, CGroupMemoryLimit |
| Available RAM | OSMemoryAvailable, OSMemoryFreeWithoutCache |
| Used RAM | OSMemoryUsed, MemoryResident |
If neither
CGroupMaxCPUnor an obvious cores metric appears, fall back to counting CPU entries from/proc/cpuinfoviaSELECT count() FROM system.asynchronous_metrics WHERE metric ILIKE '%CPU%User%'or ask the user directly. Do not fabricate a core count.
-- Step 2: Disk layout — free space and total per disk
SELECT name, path, type,
formatReadableSize(free_space) AS free,
formatReadableSize(total_space) AS total,
round((1 - free_space / total_space) * 100, 1) AS used_pct
FROM system.disks
ORDER BY total_space DESCPull the most hardware-sensitive settings so you can compare current vs. recommended:
SELECT name, value, changed, default AS default_value, description
FROM system.settings
WHERE name IN (
'max_threads',
'max_insert_threads',
'max_memory_usage',
'max_memory_usage_for_user',
'max_server_memory_usage',
'max_server_memory_usage_to_ram_ratio',
'max_bytes_before_external_group_by',
'max_bytes_before_external_sort',
'max_bytes_before_external_join',
'background_pool_size',
'background_merge_pool_size',
'background_fetches_pool_size',
'mark_cache_size',
'uncompressed_cache_size',
'max_concurrent_queries',
'max_connections'
)
ORDER BY nameNote: background_pool_size and background_merge_pool_size are server-level settings (set in config.xml or config.d/). They will appear in system.settings but changing them requires a server restart. Session-level settings take effect immediately with SET.
Use the detected hardware values from the queries above and apply these ratios. Replace <cores> and <RAM_bytes> with the actual numbers you found.
| Setting | Scope | Guidance |
|---|---|---|
max_threads | session | ≈ number of logical cores. Default is auto (0). Only lower it if queries compete with each other at high concurrency. |
max_insert_threads | session | 1–4 for normal inserts; up to half of cores for bulk loads. |
background_pool_size | server (restart) | 16 is the default; for merge-heavy workloads raise toward cores / 2. Don't exceed cores. |
background_merge_pool_size | server (restart) | Same guidance as background_pool_size. Default 16. |
max_concurrent_queries | server | Start at cores * 2. Lower if queries are large and memory-bound. |
Leave genuine headroom — never allocate 100 % of RAM to ClickHouse. The OS, kernel buffers, and other processes need room.
| Setting | Scope | Guidance |
|---|---|---|
max_server_memory_usage | server | Set to 0 (auto) to use max_server_memory_usage_to_ram_ratio instead. If hardcoding: ≤ 80 % of OSMemoryTotal. |
max_server_memory_usage_to_ram_ratio | server | Default 0.9; consider lowering to 0.8 on shared hosts or when running replicas with ZooKeeper on the same box. |
max_memory_usage | session | Per-query cap. A common starting point is RAM × 0.3 for OLAP queries, but tune per workload. |
max_memory_usage_for_user | session | Per-user sum cap. Useful when multiple users share the server; set to RAM × 0.5 as a starting point. |
max_bytes_before_external_group_by | session | Spill threshold for GROUP BY. Typically half of max_memory_usage. If set to 0, spilling is disabled. |
max_bytes_before_external_sort | session | Same pattern as external group by. Setting this too low causes unnecessary disk spilling; too high causes OOM. |
max_bytes_before_external_join | session | Applies to hash joins. Same ratio guidance. |
<cache> section)These affect how much RAM is reserved for ClickHouse's internal caches. Changing them requires restart.
| Setting | Guidance |
|---|---|
mark_cache_size | Default 5 GiB. For servers with lots of RAM (≥ 64 GiB) and many columns, raise to 10–20 GiB. Do not exceed ≈ 10 % of RAM. |
uncompressed_cache_size | Default 0 (disabled). Only enable if you have a read-heavy workload with repeated small queries on the same columns. Cap at ≈ 5–10 % of RAM. |
After running the disk query above:
background_pool_size and background_merge_pool_size to avoid I/O saturation during merges. Values of 4–8 are common.system.parts and consider OPTIMIZE … FINAL or archiving old partitions before tuning anything else.max_threads = 0 (auto). Only override when you have a concrete reason.background_pool_size, mark_cache_size, max_server_memory_usage, and max_concurrent_queries require editing config.xml (or a file in config.d/) and restarting the server. Session-level settings (max_threads, max_memory_usage, etc.) apply immediately with SET or in the query profile.max_server_memory_usage_to_ram_ratio accordingly.After applying changes, confirm they took effect and watch for regressions:
-- Confirm the setting is now the value you set (session-level)
SELECT name, value, changed
FROM system.settings
WHERE name IN ('max_threads', 'max_memory_usage', 'max_bytes_before_external_group_by')
-- Watch for OOM or memory-allocation errors after a change
SELECT name, value AS error_count, last_error_time, last_error_message
FROM system.errors
WHERE name ILIKE '%Memory%' OR name ILIKE '%Alloc%'
ORDER BY last_error_time DESC
LIMIT 20
-- Monitor peak memory usage on currently running queries
SELECT query_id, user, memory_usage, peak_memory_usage,
formatReadableSize(memory_usage) AS mem,
formatReadableSize(peak_memory_usage) AS peak_mem,
elapsed,
substring(query, 1, 120) AS query
FROM system.processes
WHERE query NOT LIKE '%processes%'
ORDER BY peak_memory_usage DESCIf system.errors shows MEMORY_LIMIT_EXCEEDED spikes after a change, roll back that setting before adjusting others.
clickhouse-best-practices — production insert, cache, and connection-pool guidanceschema-design-advisor — part counts and merge behavior affect background pool sizingtroubleshooting — error-code-driven diagnosis including OOM and disk-full incidentsquery-tuning-advisor — per-query memory and parallelism knobs once server settings are stable© chmonitor, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/hardware-tuning of chmonitor/chmonitor.
Open the folder on GitHubat commit fc39ef0
Hardware Tuning next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Hardware Tuning this skillchmonitor/chmonitor | 299 | — | ~2.1k | Automated safety check: Pass | GPL-3.0 | |
| Keeper Stress AnalysisClickHouse/ClickHouse | 50k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Perf ComparisonClickHouse/ClickHouse | 50k | — | ~3.9k | Automated safety check: Notes | Apache-2.0 | |
| Patch Release CheckClickHouse/ClickHouse | 50k | — | ~4k | Automated safety check: Notes | Apache-2.0 | |
| Clickhouse Architecture Advisorvemetric/vemetric | 394 | 2 repos | ~791 | Automated safety check: Pass | Apache-2.0 | |
| Decompress BinaryClickHouse/ClickHouse | 50k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 |
ClickHouse/ClickHouse
Analyze ClickHouse Keeper stress-test results from play.clickhouse.com / keeperstresstests data warehouse.
ClickHouse/ClickHouse
Evaluate ClickHouse performance test results from existing CI/dashboard data or local perf.py runs.
ClickHouse/ClickHouse
Check whether ClickHouse's supported versions (last 3 majors + latest LTS) have recent stable patch releases, diagnose why the scheduled AutoReleases pipeline failed, and identify which releases…
vemetric/vemetric
MUST USE when designing ClickHouse architectures, selecting between ingestion or modeling patterns, or translating best practices into workload-specific system designs.
ClickHouse/ClickHouse
Extract the inner ELF from a ClickHouse self-extracting clickhouse binary, including when its architecture differs from the host (e.g.
ClickHouse/ClickHouse
Show a report of open ClickHouse PRs whose only non-green CI check is "CH Inc sync" (or that are fully green) — i.e.
chmonitor/chmonitor
Non-animation creative direction for HyperFrames videos. An agent skill from chmonitor/chmonitor.
chmonitor/chmonitor
Audio and media assets for HyperFrames compositions, produced by one shared audio engine (scripts/audio.mjs) — multi-provider TTS (HeyGen / ElevenLabs / Kokoro local), background music + sound…
chmonitor/chmonitor
Port an existing Remotion (React) composition to HyperFrames HTML.
chmonitor/chmonitor
A skill your agent uses when the user has a music track (an audio file, or a video to pull audio from) and wants a beat-synced HyperFrames video, calm to hard-hitting.
chmonitor/chmonitor
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus…
chmonitor/chmonitor
turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video, up to ~3 min (sweet spot 30-90s), where every visual is invented (typography, abstract graphics…
Works with
Categories
Detect server cores/RAM/disk from system tables, then recommend ClickHouse settings sized to that hardware. Hardware Tuning is an agent skill from chmonitor/chmonitor. Detect server cores/RAM/disk from system tables, then recommend ClickHouse settings sized to that hardware.
Hardware Tuning fits situations like: tasks that involve Data warehousing.
Run `npx skills add chmonitor/chmonitor --skill hardware-tuning -a claude-code`. Or copy the skill folder (.agents/skills/hardware-tuning in chmonitor/chmonitor) into .claude/skills/hardware-tuning in your project. Claude Code loads it when a task matches its description.
Run `npx skills add chmonitor/chmonitor --skill hardware-tuning -a codex`. Or copy the skill folder (.agents/skills/hardware-tuning in chmonitor/chmonitor) into .agents/skills/hardware-tuning in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add chmonitor/chmonitor --skill hardware-tuning -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hardware-tuning, .gemini/skills/hardware-tuning, .github/skills/hardware-tuning and .opencode/skills/hardware-tuning in your project.
SKILL.md names no scripts, command-line tools or credentials: Hardware Tuning is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Hardware Tuning is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Hardware Tuning: Keeper Stress Analysis (ClickHouse/ClickHouse, 50k stars), Perf Comparison (ClickHouse/ClickHouse, 50k stars), Patch Release Check (ClickHouse/ClickHouse, 50k stars) and Clickhouse Architecture Advisor (vemetric/vemetric, 394 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
chmonitor (a GitHub organization) maintains it in chmonitor/chmonitor, which has 299 GitHub stars. The repository holds 53 skills in this directory. The repository was last updated on October 5, 2026.
Source: chmonitor/chmonitor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.