Илья | 😶☮️🐸
принес деталей с дебагом: 2022-10-25 21:09:19.350 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=Queue, columns={'other_config': {'max-rate': '102401000', 'burst': '10000000'}, 'external_ids': {'port': 'tap4358af24-b0', 'type': 'bandwidth_limit', 'queue-num': '0'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90 Тут видим что 102400 (100 mbps) устанавливается и потоооом хоба 2022-10-25 21:09:19.365 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=QoS, columns={'type': 'linux-htb', 'queues': {0: UUID('ef67a58c-6b80-45c0-b194-d9bdf8ad52b4')}, 'external_ids': {'id': 'tap4358af24-b0', '_type': 'bandwidth_limit'}, 'other_config': {'max-rate': '34359738367'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90
Илья | 😶☮️🐸
Логика сего мне не понятна, что внезапно цифра 102401000 превращается в 34359738367
Vyacheslav
Используй на flavor - там точно работает
Vyacheslav
Не пойдет!
Продолжай кушать кактус
Илья | 😶☮️🐸
Продолжай кушать кактус
я же говорю, оно должно работать, где-то бага
Илья | 😶☮️🐸
и правильнее вешать qos на порт, а не весь инстанс
Vyacheslav
QoS в онлайн меняются нормально? Ты модуль в neutron же подключил?
Илья | 😶☮️🐸
QoS в онлайн меняются нормально? Ты модуль в neutron же подключил?
подключил, я вижу в логах что овс агент меняет qos
Илья | 😶☮️🐸
глянь выше лог, внезапно цифра берётся совершенно другая
Vyacheslav
Потестируй iperf
Илья | 😶☮️🐸
тестировал, он на полную жарит на ingress
Илья | 😶☮️🐸
не, там регион ещё не запущен полностью
J
Логика сего мне не понятна, что внезапно цифра 102401000 превращается в 34359738367
Логика такая что на очередь тот лимит который ты указал, а на qos политику целиком ставится по-умолчанию пропускная способность интерфейса. Это полоса которая будет делиться между всеми очередями. Твое значение пишется в таблицу queue, а 34359738367 в таблицу QoS.
Илья | 😶☮️🐸
Копнул дальше, сравниваю с работающим qos на другом гипере, имеем такую картину здесь есть правила # tc class show dev tap4f3f2221-bb class htb 1:1 parent 1:fffe prio 0 rate 12Kbit ceil 102400Kbit burst 1563b cburst 1561b class htb 1:fffe root rate 102400Kbit ceil 102400Kbit burst 1497b cburst 1497b а тут нет # tc class show dev tap4358af24-b0 // пусто
Илья | 😶☮️🐸
ingress видимо разруливается через tc
J
ingress видимо разруливается через tc
я тебе про это написал и ссылку дал 7 часов назад)
Илья | 😶☮️🐸
ну я даже менял с master-ubuntu-focal на jammy релиз в надежде что поможет, но нет
Илья | 😶☮️🐸
Ну а дальше то чо в логе? Сравни с тем гипервизором где работает QoS.
qos здорового человека 2022-10-25 21:39:13.993 2677206 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=Queue, columns={'external_ids': {'id': 'tap1915f586-b7', 'queue_type': '0'}, 'other_config': {'max-rate': '102400000', 'burst': '0'}}, row=False) do_commit /usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:88 2022-10-25 21:39:13.993 2677206 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=1): DbCreateCommand(table=QoS, columns={'external_ids': {'id': 'tap1915f586-b7'}, 'type': 'linux-htb', 'queues': {0: DbCreateCommand(table=Queue, columns={'external_ids': {'id': 'tap1915f586-b7', 'queue_type': '0'}, 'other_config': {'max-rate': '102400000', 'burst': '0'}}, row=False)}, 'other_config': {'max-rate': '102400000'}}, row=False) do_commit /usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:88 2022-10-25 21:39:13.994 2677206 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=2): DbSetCommand(table=Port, record=tap1915f586-b7, col_values=(('qos', DbCreateCommand(table=QoS, columns={'external_ids': {'id': 'tap1915f586-b7'}, 'type': 'linux-htb', 'queues': {0: <ovs.db.idl.Row object at 0x7fe4e9f4fb20>}, 'other_config': {'max-rate': '102400000'}}, row=False)),)) do_commit /usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:88 qos курильщика 2022-10-25 21:43:02.891 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=Queue, columns={'other_config': {'max-rate': '102401000', 'burst': '10000000'}, 'external_ids': {'port': 'tap4358af24-b0', 'type': 'bandwidth_limit', 'queue-num': '0'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90 2022-10-25 21:43:02.905 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=QoS, columns={'type': 'linux-htb', 'queues': {0: UUID('5ff29e19-8eeb-44c4-aab5-e2f41a0098f7')}, 'external_ids': {'id': 'tap4358af24-b0', '_type': 'bandwidth_limit'}, 'other_config': {'max-rate': '34359738367'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90
J
qos здорового человека 2022-10-25 21:39:13.993 2677206 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=Queue, columns={'external_ids': {'id': 'tap1915f586-b7', 'queue_type': '0'}, 'other_config': {'max-rate': '102400000', 'burst': '0'}}, row=False) do_commit /usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:88 2022-10-25 21:39:13.993 2677206 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=1): DbCreateCommand(table=QoS, columns={'external_ids': {'id': 'tap1915f586-b7'}, 'type': 'linux-htb', 'queues': {0: DbCreateCommand(table=Queue, columns={'external_ids': {'id': 'tap1915f586-b7', 'queue_type': '0'}, 'other_config': {'max-rate': '102400000', 'burst': '0'}}, row=False)}, 'other_config': {'max-rate': '102400000'}}, row=False) do_commit /usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:88 2022-10-25 21:39:13.994 2677206 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=2): DbSetCommand(table=Port, record=tap1915f586-b7, col_values=(('qos', DbCreateCommand(table=QoS, columns={'external_ids': {'id': 'tap1915f586-b7'}, 'type': 'linux-htb', 'queues': {0: <ovs.db.idl.Row object at 0x7fe4e9f4fb20>}, 'other_config': {'max-rate': '102400000'}}, row=False)),)) do_commit /usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:88 qos курильщика 2022-10-25 21:43:02.891 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=Queue, columns={'other_config': {'max-rate': '102401000', 'burst': '10000000'}, 'external_ids': {'port': 'tap4358af24-b0', 'type': 'bandwidth_limit', 'queue-num': '0'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90 2022-10-25 21:43:02.905 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=QoS, columns={'type': 'linux-htb', 'queues': {0: UUID('5ff29e19-8eeb-44c4-aab5-e2f41a0098f7')}, 'external_ids': {'id': 'tap4358af24-b0', '_type': 'bandwidth_limit'}, 'other_config': {'max-rate': '34359738367'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90
Это одна и та же политика?
Илья | 😶☮️🐸
Это одна и та же политика?
совершенно одна и та же
Илья | 😶☮️🐸
один полиси, в котором 2 правила (ингресс + егресс)
Илья | 😶☮️🐸
но инсталляции стака разные
J
А почему в одной Burst 0, а в другой 10000000?
J
Значит не одна и та же раз инсталляции разные.
Илья | 😶☮️🐸
А почему в одной Burst 0, а в другой 10000000?
2022-10-25 22:03:00.475 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=Queue, columns={'other_config': {'max-rate': '102401000', 'burst': '0'}, 'external_ids': {'port': 'tap4358af24-b0', 'type': 'bandwidth_limit', 'queue-num': '0'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90 2022-10-25 22:03:00.492 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbCreateCommand(table=QoS, columns={'type': 'linux-htb', 'queues': {0: UUID('fa9330d2-461b-40fc-abce-b4ec9ad81940')}, 'external_ids': {'id': 'tap4358af24-b0', '_type': 'bandwidth_limit'}, 'other_config': {'max-rate': '34359738367'}}, row=False) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90 2022-10-25 22:03:00.510 7 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn n=1 command(idx=0): DbSetCommand(table=Port, record=tap4358af24-b0, col_values=(('qos', UUID('ea62c9a4-9d9d-42c9-a9f2-0766b011dbc6')),)) do_commit /var/lib/kolla/venv/lib/python3.10/site-packages/ovsdbapp/backend/ovs_idl/transaction.py:90 да если б оно было корнем зла, пробовал и на 0 ставить...
J
А правила в tc создаются в итоге или нет?
J
неа
А почему?
Илья | 😶☮️🐸
А правила в tc создаются в итоге или нет?
а вот хз, дебаг у овс агента включен, сообщений об ошибках нет
Илья | 😶☮️🐸
service_plugins содержит qos, в extensions у овс агента тоже есть qos
Vyacheslav
А правила в tc создаются в итоге или нет?
Если драйвер firewall ovs- tc не используется и делается на уровне овс
J
Ладно, лог самого ovs можно ж еще глянуть.
Илья | 😶☮️🐸
Илья | 😶☮️🐸
в конфиге агента
Vyacheslav
Чо-то я не вижу нигде про это.
https://docs.openstack.org/neutron/latest/admin/config-ovsfwdriver.html
J
Это файрвол драйвер. Шейпер, точнее, traffic-control это отдельная подсистема ядра. И я не могу чо-то найти нигде информации про то что в ovs реализован свой шейпер.
J
Наоборот.
J
Open vSwitch uses the Linux traffic-control capability for rate-limiting. If you are not seeing the configured rate-limit have any effect, make sure that your kernel is built with “ingress qdisc” enabled, and that the user-space utilities (e.g., /sbin/tc) are installed. https://docs.openvswitch.org/en/latest/howto/qos/#troubleshooting
Илья | 😶☮️🐸
make sure that your kernel is built with “ingress qdisc” интересно, каким боком чекнуть это
Илья | 😶☮️🐸
modprobe sch_ingress и рестарт овс агента не помог
J
make sure that your kernel is built with “ingress qdisc” интересно, каким боком чекнуть это
Глянь на гипервизоре где работает ради интереса sudo lsmod | grep sch_ingress и grep -r sch_ingress /lib/modules/$(uname -r)/modules.builtin
J
А теперь глянь на том гипервизоре где не работает.
Илья | 😶☮️🐸
Илья | 😶☮️🐸
1 или 44- количество инстансов на гипере
Илья | 😶☮️🐸
на проблемном модуль я конечно включил, но изменений не последовало, отправляю в ребут гипер
J
Ты перезапускал ovs агент. А он знать не знает ни про какие модули ядра и их не использует.
J
ovs сам перезапусти для начала.
Илья | 😶☮️🐸
Ты перезапускал ovs агент. А он знать не знает ни про какие модули ядра и их не использует.
ну, кстати, на втором гипере с такой же проблемой этот модуль тоже включен так то
Илья | 😶☮️🐸
всё также, модуль ядра используется, а в tc никаких новых правил
Илья | 😶☮️🐸
https://github.com/openvswitch/ovs-issues/issues/189 оп, те же цифры
Илья | 😶☮️🐸
здоровый гипер _uuid : 6559a7a2-8ca7-4378-89f0-6a9a6e8837f8 external_ids : {id=tap1e207bf4-3d} other_config : {max-rate="102400000"} queues : {0=b762e0c4-c0bc-4a0d-a777-38102a70338c} type : linux-htb больной гипер _uuid : 4b00d606-4850-42a8-953e-6ac92aab7d10 external_ids : {_type=bandwidth_limit, id=tap9e1e9809-ec} other_config : {max-rate="34359738367"} queues : {0=dc37af95-eceb-4af7-9cf3-f88ca5a21b72} type : linux-htb
J
OVS_MAX_RATE = 2 ** 35 - 1
J
Но вряд ли в этом беда)
J
https://opendev.org/openstack/neutron/commits/branch/stable/zed/neutron/agent/common/ovs_lib.py Вот, погляди чо есть.
Илья | 😶☮️🐸
https://opendev.org/openstack/neutron/commits/branch/stable/zed/neutron/agent/common/ovs_lib.py Вот, погляди чо есть.
да да, Славек Каплонски недавно отписывал в баге тут https://bugs.launchpad.net/neutron/+bug/1959567
Илья | 😶☮️🐸
if max_kbps: other_config['max-rate'] = str(int(max_kbps) * p_const.SI_BASE)
Илья | 😶☮️🐸
что-то мне подсказывает, что они сильно нахуевертили в коде
Илья | 😶☮️🐸
так как в логе сначала нормальное значение, а потом уже максимальное ставится
J
что-то мне подсказывает, что они сильно нахуевертили в коде
А мне что-то подсказывает что ты либо устал либо плохо читаешь то что пишу я и то что написано в коде и документации.
J
if not qos_id: external_ids = {'id': rule_type_id, '_type': rule_type} other_config = {'max-rate': str(OVS_MAX_RATE)} Если политика создается с нуля, в качестве максимальной ДЛЯ ВСЕХ ОЧЕРЕДЕЙ пропускной способности в политике будет указываться 2^35. Это никак не влияет на конкретную очередь и нужно чтобы работали правила устанавливающие минимальную гарантированную полосу (min-rate) In order to define a "min-rate" value ("tc rate"), a "max-rate" value ("tc ceil") must be provided and higher than "min-rate". By default, OVS agent QoS minimum rules do not have a "max-rate" defined. Before this patch, any minimum bandwidth rule was limiting the maximum rate to 100Mbit/s, that is the default value set in "tc ceil". This patch provides the maximum "max-rate" value for any minimum bandwidth rule.
Илья | 😶☮️🐸
J
Ну кароч ты за этот 2^35 не цепляйся) Там еще дофига было изменений которые могли чо-то сломать.
Илья | 😶☮️🐸
Ну кароч ты за этот 2^35 не цепляйся) Там еще дофига было изменений которые могли чо-то сломать.
_uuid : 7005fb58-974b-4a71-8110-1e85a0e92b8a external_ids : {_type=bandwidth_limit, id=tap6edf7fa0-28} other_config : {max-rate="133713371337"} queues : {0=67d1a4c7-77f6-44bf-9f23-2e75c387304c} type : linux-htb
Илья | 😶☮️🐸
ладно, усталость даёт своё, странные странности происходят