# Стандартні атрибути пристроїв для динамічного виділення ресурсів

LLMS index: [llms.txt](/llms.txt)

---

Kubernetes визначає набір стандартних атрибутів пристроїв у домені
`resource.kubernetes.io` для використання з <a class='glossary-tooltip' title='Функція Kubernetes для запиту та спільного використання ресурсів, таких як апаратні прискорювачі, між Podʼами.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/scheduling-eviction/dynamic-resource-allocation/' target='_blank' aria-label='динамічним виділенням ресурсів (DRA)'>динамічним виділенням ресурсів (DRA)</a>. Ці атрибути мають чітко визначену семантику, тому обмеження `matchAttribute` працюють для пристроїв з різних драйверів DRA без необхідності знань, специфічних для драйвера.

Драйвери DRA заохочуються публікувати ці атрибути, коли це застосовно. Допоміжна бібліотека DRA Kubernetes (`k8s.io/dynamic-resource-allocation/deviceattribute`) надає функції, які драйвери можуть викликати для отримання правильних значень з sysfs.

## Стандартні атрибути {#standard-attributes}

### `resource.kubernetes.io/numaNode`

Визначає топологію NUMA пристрою. Цей атрибут може бути:

- Скалярним цілим числом: фізичний вузол NUMA пристрою, зчитаний із запису `numa_node` у sysfs ядра. Ця форма працює без жодної функціональної можливості.
- Списком цілих чисел (потребує функціональну можливість `DRAListTypeAttributes`): фізичний вузол NUMA, за яким ідуть вузли NUMA того самого сокета на мінімальній відстані ACPI SLIT. Наприклад, у системі AMD EPYC з 4 вузлами NUMA на сокет, пристрій на вузлі NUMA 5 може публікувати `[5, 4, 6, 7]`, щоб вказати, що вузли NUMA 4, 6 та 7 знаходяться на тому самому сокеті та рівновіддалені.

Використовуйте `matchAttribute` разом із цим атрибутом, щоб розмістити пристрої з різних драйверів на одному NUMA-вузлі. При використанні значень типу списку планувальник виконує операцію перетину множин: два пристрої вважаються сумісними, якщо їхні списки NUMA-вузлів мають хоча б одне спільне значення.

Пристрої без спорідненості NUMA (`numa_node = -1` у sysfs) не повинні публікувати цей атрибут.

Допоміжні функції для авторів драйверів DRA:

- `GetNUMANodeAttributeByPCIBusID(pciBusID, attrForm)`: для пристроїв PCI (GPU, NIC, контролерів NVMe). Зчитує `numa_node` з sysfs і, коли `attrForm` є `ListAttribute`, обчислює список на основі SLIT.
- `GetNUMANodeAttribute(numaNode, attrForm)`: для пристроїв, які вже знають свій вузол NUMA (CPU, памʼять).
- `GetNUMANodeForCPU(cpuID)`: повертає вузол NUMA для ядра CPU.

### `resource.kubernetes.io/pciBusID`

Адреса шини PCI пристрою PCI у розширеній нотації BDF (`Domain:Bus:Device.Function`). Цей атрибут однозначно ідентифікує пристрій PCI на вузлі.

### `resource.kubernetes.io/pcieRoot`

PCIe Root Complex пристрою PCI у форматі `pci<domain>:<bus>`. Пристрої, які спільно використовують той самий PCIe Root Complex, підключені до тієї самої ієрархії комутаторів PCIe. Використовуйте `matchAttribute` з цим атрибутом, щоб розміщувати пристрої під тим самим коренем PCIe для звʼязку з найменшою затримкою.
