Приветствую, любители нагрузки. Для истории прошлые выпуски:
-
Новости Perfscale № 1
-
Perfscale news #2: Fix Protocol, Magic metrics и MCP
-
perfscale news #3 Websocket, Inference, NPM
-
Perfscale news #4. GRPC, Fixed Triggers, Child Process
-
Perfscale news #5. SQL, Thresholds, неработающие Linked Accounts
-
Perfscale news #6. GraphQL, поддержка Import, и метрики
-
Perfscale news #7. Fix Import, SOAP, and more HTTP metrics
-
Perfscale news #8. WS Benchmark, Jmeter open sourced & fixed linked accounts
Итак, что было сделано
в OSS
теперь последняя версия: 0.17. И вот что нового произошло за это время
GPU testing
Итак, для того, чтобы включить GPU тестирование, достаточно написать в config следующее
vus: 10duration: 5mgpu: enabled: true interval_ms: 1000 # default 1000 (min 10) source: nvidia-smi # nvidia-smi (default) | dcgm dcgm_url: 127.0.0.1:9400/metrics # for source: dcgm devices: [0, 1] # optional; default— every GPU the source reports
Тут важно сделать следующие отступления:
Во-первых, не придумано ничего лучше, чем использовать фреимворк NVIDIA Data Center GPU Manager (DCGM) — это проект по сбору телеметрии и измерению состояния графических процессоров NVIDIA.
Во-вторых, кроме ноутбука с NVIDIA у меня нет. А на Apple Metal никто не запускает нагрузку, да и драйверы закрытые(есть только powerline, но это детский сад), поэтому тут было принято волевое решение с пропуском AMD и Apple сознательно. Но, если у вас есть вариант, где можно запустить решение, кроме персонального комьютера — то свяжитесь со мной (TG: vitalicset)
В-третьих, уже сами настройки:
-
interval — это то, с какой периодичностью опрашивается DCGM
-
devices: если у вас персональный комьютер то не используйте эту настройку. либо задайте 0, поскольку у вас 1 Nvidia девайс.
Я вот здумался, что есть K8S для GPU, когда память видеокарты может поделится на кратность 8(если мне не изменяет память) и у нас будет типа параллелизма вычеслений задач. Такой сценарий не тестировался, поскольку мои мощности ограничены.
Где стоит применять нагрузочное тестирование GPU
-
рендеринг сцен в софте (например в промышленных рендерах и играх)
-
LLM
Других я use-case не придумал. Вообще все затевалось вокруг LLM, поэтому переходим туда сразу
LLM testing
То, ради чего вводился GPU модуль — это Magnum Opus [прим. Magnum Opus — самое главное], то, зачем создавался модуль по тестированию GPU и данной статьи. Вдруг у вас (как и у меня) или в кампании запущенна LLM и вам бы не мешало бы протестировать ее возможности и собрать метрики.
Вот пример такого конфига
# config.yamlvus: 8duration: 2mgpu: enabled: true
И самого теста (на примере развернутой ollama)
steps: - name: chat completion use: std/llm@v1 with: url: 127.0.0.1:11434/v1/chat/completions model: llama3.1 prompt: "Summarize the CAP theorem in two sentences." max_tokens: 256 check: status: 200
И вот вы запустили ваш тест через команду с —summary-export
perfscale run -f test.yaml -c config.yaml --summary-export gpu-run.json
и получили к примеру такой результат
{ "gpu": { "source": "nvidia-smi", "interval_ms": 1000, "devices": [ { "index": 0, "samples": [ { "ts_ms": 1720000000000, "index": 0, "utilization_pct": 64.0, "memory_used_mib": 41088.0, "memory_total_mib": 81559.0, "temperature_c": 71.0, "power_w": 512.3 } ], "avg_utilization_pct": 64.3, "max_utilization_pct": 100.0, "max_memory_used_mib": 41088.0, "memory_total_mib": 81559.0, "max_temperature_c": 71.0, "max_power_w": 512.3 } ] }}
Кстати, без summary-export вы получите что-то такое
gpu: 1 device, 300 samples every 1000ms (nvidia-smi)gpu0: util avg=64.3% max=100.0% vram max=41088/81559MiB temp max=71.0C power max=512.3W
Далее вы же хотите его отобразить можете этот JSON перекладывать как угодно, но видно, что идет именно сборка семплов прямо во время выполнения!
Docker Images
Теперь в perfscale OSS
github.com/Perfscale/perfscale/pkgs/container/perfscale
У нас принято публиковать пакеты со следующими названиями и доступно под названием ghcr.io/perfscale/perfscale
• :0.17.0 — perfscale (49MB) — только YAML движок
• :0.17.0-k6 — + k6 v2.2.0 (139MB)
• :0.17.0-jmeter — + JMeter 5.6.3 (539MB)
• :0.17.0-locust — + locust 2.46.4 (227MB)
• :0.17.0-full — всё вместе (806MB)
Несложно догадаться, что оптимальным вариантом будет использование именно perfscale (условно slim), поскольку это небольшой размер и простота использования, но для простоты перезда можете использовать full, если не знаете что выбрать. Да, GPU работает в slim версии.
А есть ли latest тег? Да, есть. Автоматом он собирается для каждой релизной версии perfscale. Но я знаю, что многие из devops не любят latest тег, поскольку он часто кешируется. Поэтому я тут аккуратно скажу что он есть, но и как-бы не упоминал, только если дочитали до сюда.
В Controlplane
изменений не много, которые можно подсветить. Поэтому считайте, что их нет.
P. S. предвосхищая ваши вопросы, а что по поводу perfscaled агента, который ставится на машину. Пока что без изменений (зато в следующем выпуске будет много чего). А еще работаю над тем, чтобы можно было установить perfscaled через лицензию. Данный режим еще прорабатывается. Пока хватает дел с ним и последними изменениями!
А на сегодня все. Желаю вам хорошей доступности сервисов и отличных выходных. Ваш покорный слуга готовится к выступлению на Moscow QA, который состоится 5 сентября. До встречи в будущем!
Источник: habr.com