1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-gazelle

 / Детали:

[redis] При недостатке mbuf происходит запись потока. После прекращения записи клиентом, клиент зависает и...

Предстоит сделать
Владелец
Создано  
10.03.2025

не завершается.

1. Информация о дефекте
[Операционная система версия] (например, openEuler-22.03-LTS, используйте команду "cat /etc/os-release")
openeulerversion=openEuler-22.03-LTS-SP3
compiletime=2023-12-30-12-21-52
gccversion=10.3.1-49.oe2203sp3
kernelversion=5.10.0-182.0.0.95.oe2203sp3
openjdkversion=1.8.0.392.b08-3.oe2203sp3

[Версия ядра] (например, kernel-5.10.0-60.138.0.165, используйте команду "uname -r")
5.10.0-182.0.0.95.oe2203sp3.x86_64

[Программа и её версия] (например, kernel-5.10.0-60.138.0.165, используйте команду "rpm -q имя_пакета")
gazelle-1.0.2-83.x86_64
dpdk-21.11-82.x86_64

[Шаги воспроизведения проблемы]: Опишите конкретные действия

  1. Увеличьте размер sendring, чтобы создать недостаток mbuff, запустив сервер с LD_PRELOAD=/usr/lib64/liblstack.so GAZELLE_BIND_PROCNAME=redis-server /root/redis-server /root/redis.conf --protected-mode no --save ''```python
    dpdk_args=["--socket-mem", "1500,1500,0,0", "--huge-dir", "/mnt/hugepages-lstack", "--proc-type", "primary", "-d", "/usr/lib64/librte_net_mlx5.so"]
    stack_thread_mode="run-to-wakeup"

ltran режим требует добавления "--map-perfect" и "--legacy-mem" в dpdk_args

use_ltran=0
kni_switch=0
flow_bifurcation=1
low_power_mode=0

необходимое количество mbuff = tcp_conn_count * mbuf_count_per_conn

tcp_conn_count=1500
mbuf_count_per_conn=138

размер sendring, по умолчанию 32, максимум 2048

если длина UDP пакета превышает 45952 (32 * 1436) байт, то send_ring_size должно быть как минимум 64.

send_ring_size=128

размер recvring, по умолчанию 128, максимум 2048

recv_ring_size=128

параметры протокольной стековой нити на каждом цикле

чтение данных из протокольного стека в recvring

read_connect_number=4

количество RPC сообщений для обработки

rpc_number=4

количество пакетов NIC для чтения

nic_read_number=128
nic_rxqueue_size=4096
nic_txqueue_size=2048

каждому ядру процессора назначается одна протокольная стековая нить.

num_cpus="1"

нить приложения BIND к NUMA в epoll/poll.

app_bind_numa=1

основная нить приложения AFFINITY установлена DPDK.

main_thread_affinity=0
host_addr="124.88.84.9"
mask_addr="255.255.0.0"
gateway_addr="124.88.0.1"
devices="8c:2a:8e:61:33:04"

0: использовать правила RSS

1: использовать правило TCP-кортежей для указания пакета в очередь NIC

tuple_filter=0

tuple_filter=1, ниже указаны конфигурационные параметры

num_process=1
process_numa="0,1"
process_idx=0

tuple_filter=0, ниже указаны конфигурационные параметры

listen_shadow=1

режим VLAN; поддерживается только от -1 до 4094, -1 выключен

nic_vlan_mode=135

bond_mode=4
```# MAC-адреса рабочих станций объединения, разделённые точкой с запятой, поддерживаются только два MAC-адреса рабочих станций
 # bond_slave_mac="aa:bb:cc:dd:ee:ff;gg:hh:ii:jj:kk:ll"
 bond_slave_mac="8c:2a:8e:61:33:04;8c:2a:8e:61:33:05"
 # максимальное количество сообщений RPC
 rpc_msg_max=4096
 udp_enable=1```markdown
## Запуск клиента
/root/redis-6.2.9/src/redis-benchmark -h 124.88.84.9 -p 6379 -c 5000 -n 10000000 -d 1024 -t set --threads 12 -r 100000
### [Фактический результат]
Опишите фактические результаты и последствия проблемы.
При отключении соединения клиент зависает и не может завершиться.
![](https://foruda.gitee.com/images/1737860282861072844/eefa84a7_11534493.png "Экранное снимок")
### [Ожидаемый результат]
При возникновении ошибки клиент не будет зависать и сможет завершиться.

Комментарий (0)

GitLife Service Account Задача создана
GitLife Service Account добавлено
 
sig/sig-high-perform
label.
Развернуть журнал операций

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/openeuler-gazelle.git
git@api.gitlife.ru:oschina-mirror/openeuler-gazelle.git
oschina-mirror
openeuler-gazelle
openeuler-gazelle