Программа Rubik написана на языке Go и скомпилирована в статический исполняемый файл для минимизации зависимости от системы.
Rubik поддерживает только использование параметра -v
для запроса информации о версии. Другие параметры не поддерживаются.
Пример вывода информации о версии показан ниже, содержимое и формат этого вывода могут изменяться в зависимости от версии.
$ ./rubik -v
Версия: 2.0.0
Релиз: NA
Версия Go: go1.18.8
Git Commit: bcaace8
Сборка: OnClickListener 2023-03-30
ОС/Архитектура: linux/amd64
При запуске бинарного файла rubik, программа сначала анализирует конфигурационный файл, путь к которому фиксирован и задан как /var/lib/rubik/config.json
.
- Для предотвращения путаницы с конфигурацией, поддержка указания других путей временно не поддерживается.
- Rubik поддерживает запуск в виде daemonset в кластере Kubernetes. Мы предоставляем YAML-скрипт (
hack/rubik-daemonset.yaml
) и определяемConfigMap
для хранения конфигурации.
Поэтому, при запуске rubik в виде daemonset, следует изменить соответствующие настройки в файле hack/rubik-daemonset.yaml
.
Конфигурационный файл имеет формат JSON, ключи полей используются в стиле camelCase с маленькой буквы. Пример содержимого конфигурационного файла приведен ниже:
{
"version": "2.0.0",
"release": "NA",
"goVersion": "go1.18.8",
"gitCommit": "bcaace8",
"buildDate": "2023-03-30",
"osArch": "linux/amd64"
}
``````json
{
"agent": {
"logDriver": "stdio",
"logDir": "/var/log/rubik",
"logSize": 2048,
"logLevel": "info",
"cgroupRoot": "/sys/fs/cgroup",
"informerType": "apiserver",
"cgroupDriver": "cgroupfs",
"enabledFeatures": [
"preemption",
"dynCache",
"ioLimit",
"ioCost",
"quotaBurst",
"quotaTurbo"
]
},
"preemption": {
"resource": [
"cpu",
"memory"
]
},
"quotaTurbo": {
"highWaterMark": 50,
"syncInterval": 100
},
"dynCache": {
"defaultLimitMode": "static",
"adjustInterval": 1000,
"perfDuration": 1000,
"l3Percent": {
"low": 20,
"mid": 30,
"high": 50
},
"memBandPercent": {
"low": 10,
"mid": 30,
"high": 50
}
},
"ioCost": [
{
"nodeName": "k8s-single",
"config": [
{
"dev": "sdb",
"enable": true,
"model": "linear",
"param": {
"rbps": 10000000,
"rseqiops": 10000000,
"rrandiops": 10000000,
"wbps": 10000000,
"wseqiops": 10000000,
"wrandiops": 10000000
}
}
]
}
]
}
Конфигурация Rubik разделена на две категории: общие параметры и параметры функциональности.- Общие параметры идентифицируются ключевым словом agent
и используются для хранения глобальной конфигурации.
enabledFeatures
общего конфига для включения.agent
используется для записи общих параметров, необходимых для работы Rubik, таких как логи, точки монтирования cgroup, тип драйвера cgroup и т.д.Параметр конфигурации[=значение по умолчанию] | Тип | Описание | Допустимые значения |
---|---|---|---|
logDriver=stdio | строка | Тип драйвера логов, поддерживает стандартный вывод и файлы | stdio, file |
logDir=/var/log/rubik | строка | Путь к директории для хранения логов | Доступная для чтения и записи директория |
logSize=1024 | целое число | Размер логов, в МБ, применимо только при logDriver=file | [10, 2^20] |
logLevel=info | строка | Уровень вывода логов | debug,info,warn,error |
cgroupRoot=/sys/fs/cgroup | строка | Путь к точке монтирования cgroup системы | Путь к точке монтирования cgroup системы |
cgroupDriver=cgroupfs | строка | Тип драйвера cgroup | cgroupfs,systemd |
enabledFeatures=[] | массив строк | Список функций Rubik, которые нужно включить | Поддерживаемые функции Rubik, см. описание функций |
informerType=apiserver | строка | Тип informer | apiserver,nri |
/var/run/nri/nri.sock
. Если Rubik запущен в контейнере, необходимо монтировать nri сокет в контейнер.Конфигурация для монтирования сокета представлена ниже:
spec:
# ...
containers:
# ...
volumeMounts:
- name: nrisock
mountPath: /var/run/nri/nri.sock
readOnly: true
volumes:
# ...
- name: nrisock
hostPath:
path: /var/run/nri/nri.sock
preemption
поле используется для идентификации конфигурации абсолютного предemption (примечание: возможно, следует использовать термин "предemption" как технический термин без перевода, если он используется в оригинальном контексте). В настоящее время, предemption характеристика поддерживает абсолютное предemption для ЦП и памяти, пользователи могут настроить это поле по своему усмотрению, используя отдельно или в комбинации абсолютное предemption для ресурсов.
Настройка ключа[=по умолчанию] | Тип | Описание | Допустимые значения |
---|---|---|---|
resource=[] | строка массива | Тип ресурса, указывающий на то, какой ресурс должен быть доступен | cpu, memory |
dynCache
поле используется для идентификации конфигурации поддержки ограничений на пропускную способность памяти и ограничений на последний уровень кэша (LLC) для Pod. Поле l3Percent
используется для идентификации контрольной линии уровня воды для последнего уровня кэша (LLC), а поле memBandPercent
используется для идентификации контрольной линии уровня воды для пропускной способности памяти (MB).| Настройка ключа[=по умолчанию] | Тип | Описание | Допустимые значения || --------------------------------------- | ------ | ---------------------- | ---------------------------- |
| defaultLimitMode=static | строка | режим управления dynCache | static, dynamic |
| adjustInterval=1000 | int | интервал динамического управления dynCache, в миллисекундах | [10, 10000] |
| perfDuration=1000 | int | продолжительность выполнения perf для dynCache, в миллисекундах | [10, 10000] |
| l3Percent | map | уровни управления dynCache для последнего уровня кэша (LLC) в процентах | |
| .low=20 | int | контрольная линия уровня воды для низкого уровня кэша (LLC) | [10, 100] |
| .mid=30 | int | контрольная линия уровня воды для среднего уровня кэша (LLC) | [10, 100] |
| .high=50 | int | контрольная линия уровня воды для высокого уровня кэша (LLC) | [10, 100] |
| memBandPercent | map | уровни управления dynCache для пропускной способности памяти (MB) в процентах | |
| .low=10 | int | контрольная линия уровня воды для низкого уровня пропускной способности памяти (MB) | [10, 100] |
| .mid=30 | int | контрольная линия уровня воды для среднего уровня пропускной способности памяти (MB) | [10, 100] |
| .high=50 | int | контрольная линия уровня воды для высокого уровня пропускной способности памяти (MB) | [10, 100] |### quotaTurboquotaTurbo
поле используется для идентификации конфигураций, поддерживающих технологию эластичного ограничения квот (user-space).
Настройка ключа [=Значение по умолчанию] | Тип | Описание | Допустимые значения |
---|---|---|---|
highWaterMark=60 | int | Значение верхней границы для загрузки ЦПУ | [0, alarm water mark) |
alarmWaterMark=80 | int | Значение предупреждающей границы для загрузки ЦПУ | (high water mark, 100] |
syncInterval=100 | int | Интервал для триггирования обновления квот контейнеров (единица измерения: миллисекунды) | [100, 10000] |
ioCost
поле используется для идентификации поддержки iocost для управления весом ввода-вывода. Тип поля — массив, каждый элемент массива состоит из имени узла nodeName
и массива параметров устройства config
.
Настройка | Тип | Описание | Допустимые значения |
---|---|---|---|
nodeName | string | Имя узла | Имя узла в Kubernetes |
config | array | Конфигурация одного устройства | / |
Конфигурация одного блочного устройства config
параметры:
Настройка[=по умолчанию] | Тип | Описание | Допустимые значения |
---|---|---|---|
dev | string | Имя блочного устройства, поддерживаются только физические устройства | / |
model | string | Имя модели iocost | linear |
param | / | Параметры устройства, зависят от модели | / |
Настройка[=по умолчанию] | Тип | Описание | Допустимые значения |
--------------- | ---- | ---- | ------ |
rbps | int64 | Максимальная пропускная способность чтения блочного устройства | (0, 2^63) |
rseqiops | int64 | Максимальное количество последовательных операций чтения блочного устройства | (0, 2^63) |
rrandiops | int64 | Максимальное количество случайных операций чтения блочного устройства | (0, 2^63) |
wbps | int64 | Максимальная пропускная способность записи блочного устройства | (0, 2^63) |
wseqiops | int64 | Максимальное количество последовательных операций записи блочного устройства | (0, 2^63) |
wrandiops | int64 | Максимальное количество случайных операций записи блочного устройства | (0, 2^63) |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )