Описание работы плагина "Монитор производительности плагинов"
Плагин предназначен для мониторинга производительности плагинов на сервере SourceMod. Он собирает данные о загрузке CPU, количестве сущностей и других метриках, анализирует их и выводит отчеты в логи. Это помогает администраторам выявлять проблемные плагины, утечки памяти или неожиданную нагрузку на сервер.
1. Принцип работы
Плагин работает в несколько этапов:
1.1. Сбор данных (дамп)
- Автоматически (по таймеру, каждые 30 секунд) или вручную (по команде sm_perfmon_dump) создается "снимок" текущего состояния плагинов.
- Для каждого плагина записываются:
- Имя файла (например, adminmenu.smx).
- Количество сущностей, связанных с плагином.
- Нагрузка CPU (время выполнения тестовой операции в миллисекундах).
1.2. Хранение данных
- Последние 3 снимка сохраняются в памяти (круговой буфер g_hPluginSnapshots).
- Это позволяет сравнивать изменения между замерами.
1.3. Анализ данных
- Плагин сравнивает последние замеры и ищет:
- Резкий рост числа сущностей (возможная утечка).
- Увеличение нагрузки CPU (более чем на 50%).
- Формируется ТОП-3 плагинов:
- По количеству сущностей.
- По потреблению CPU.
1.4. Логирование
- Все отчеты выводятся:
- В стандартный лог SourceMod (для мгновенного просмотра).
- В отдельный файл addons/sourcemod/logs/perfmon.log (если включено в настройках).
2. Пример работы
2.1. Автоматический мониторинг
- Каждые 30 секунд плагин делает замер.
- Если обнаруживается аномалия (например, у плагина zombiereloaded.smx число сущностей выросло с 50 до 100), в лог пишется:
ВНИМАНИЕ: Рост сущностей в zombiereloaded.smx: +50 (было 50, стало 100)
- В конце формируется ТОП:
--- Топ по сущностям ---
1. zombiereloaded.smx (100 сущностей)
2. adminmenu.smx (30 сущностей)
3. sourcebans.smx (15 сущностей)
--- Топ по CPU ---
1. myfunplugin.smx (5.250 мс)
2. zombiereloaded.smx (3.100 мс)
3. adminmenu.smx (1.750 мс)
2.2. Ручной вызов
Администратор может в любой момент ввести в консоль: sm_perfmon_dump и получить актуальный снимок производительности.
3. Настройки
Плагин имеет два параметра в cfg/sourcemod/plugin_performance_monitor.cfg:
- sm_perfmon_enable 1 — включить/выключить мониторинг (1/0).
- sm_perfmon_logfile 1 — записывать логи в отдельный файл (1/0).
4. Для чего полезен этот плагин?
- Поиск утечек сущностей
Если у плагина постоянно растет число сущностей — это может быть ошибкой (например, он не удаляет объекты после использования).
- Выявление "тяжелых" плагинов
Плагины с высокой нагрузкой CPU могут вызывать лаги на сервере.
- Сравнение производительности
Можно отслеживать, как изменения в плагинах влияют на сервер (например, после обновления).
5. Пример вывода в лог
[PerfMon] === Анализ производительности ===
ВНИМАНИЕ: Рост сущностей в zombiereloaded.smx: +50 (было 50, стало 100)
ВНИМАНИЕ: Рост нагрузки CPU в myfunplugin.smx: +75.5%
--- Топ по сущностям ---
1. zombiereloaded.smx (100 сущностей)
2. adminmenu.smx (30 сущностей)
3. sourcebans.smx (15 сущностей)
--- Топ по CPU ---
1. myfunplugin.smx (5.250 мс)
2. zombiereloaded.smx (3.100 мс)
3. adminmenu.smx (1.750 мс)
[PerfMon] === Отчет завершен ===