> For the complete documentation index, see [llms.txt](https://kb.pvhostvm.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kb.pvhostvm.ru/hostvm-server/rukovodstvo-po-administrirovaniyu/chasto-zadavaemye-voprosy/virtualnye-mashiny-i-shablony/sbor-informacii-o-raspredelenii-resursov-processora-khosta-mezhdu-virtualnymi-mashinami.md).

# Сбор информации о распределении ресурсов процессора хоста между виртуальными машинами

### Отключение запроса пароля для libvirt

Перед запуском диагностических скриптов требуется временно отключить аутентификацию для команд virsh, чтобы исключить интерактивный запрос пароля при выполнении команд на каждом хосте.

1. Откройте файл конфигурации libvirt на хосте:

```
sudo vi /etc/libvirt/libvirtd.conf
```

2. Найдите параметр auth\_unix\_rw. По умолчанию VDSM устанавливает для него значение "sasl", что и вызывает запрос пароля. Измените его на:

```
auth_unix_rw = "none"
```

3. Если присутствует строка access\_drivers = \[ "polkit" ] — закомментируйте её:

```
# access_drivers = [ "polkit" ]
```

4\. Перезапустите службу libvirt, чтобы изменения вступили в силу:

```
sudo systemctl restart libvirtd
```

{% hint style="warning" %}
После завершения сбора данных рекомендуется восстановить исходные настройки безопасности.
{% endhint %}

### Сбор диагностической информации

Для получения информации о распределении vCPU необходимо выполнить сбор данных на каждом хосте.

1. Подсчёт общего количества vCPU

Данная команда определяет суммарное количество виртуальных процессоров, распределённых между всеми виртуальными машинами (включая остановленные) на хосте. Результат сохраняется в файл vcpus\_report.txt.

```
/(total=0; for vm in $(sudo virsh list --all --name | grep -v '^$'); do vcpus=$(sudo virsh dominfo "$vm" 2>/dev/null | grep 'CPU(s)' | awk '{print $2}'); if [[ -n "$vcpus" ]]; then echo "$vm: $vcpus"; ((total+=vcpus)); fi; done; echo "Total vCPUs: $total" ) > vcpus_report.txt
```

Выполнение диагностического сценария формирует отчёт со следующей информацией:

* полный перечень всех ВМ (включая остановленные);
* количество vCPU, выделенных каждой ВМ;
* суммарное значение распределённых vCPU на хосте.

2. Анализ привязки vCPU к физическим ядрам

Эта команда формирует отчёт о текущем соответствии виртуальных процессоров запущенных ВМ физическим CPU хоста. Результат записывается в файл result.txt.

```
(for vm in $(virsh list --name --state-running); do echo "=== VM: $vm ==="; virsh vcpuinfo $vm 2>/dev/null | grep -E "^VCPU:|CPU:"; done) > result.txt
```

Выполнение диагностического сценария формирует отчёт со следующей информацией:

* для каждой запущенной ВМ — перечень выделенных ей vCPU;
* для каждого vCPU — идентификатор физического ядра (CPU), на котором он исполняется в текущий момент.

#### Диагностический анализ собранных данных

Собранные файлы предоставляют следующие возможности для диагностики:

* **`vcpus_report.txt`** — позволяет оценить уровень загрузки хоста по объёму выделенных vCPU и выявить случаи переподписки (overcommit) вычислительных ресурсов;
* **`result.txt`** — даёт представление о характере распределения vCPU по физическим ядрам, помогая обнаружить дисбаланс нагрузки или некорректно настроенную привязку (CPU pinning) и определить загрузку процессора в момент сбора информации.
