Перейти к содержимому
Калькуляторы
1 минуту назад, dryukov сказал:

может быть даже flow control пакеты которые не поддерживаются картой.

flow control отключен как со стороны сервера, так и со стороны коммутатора, куда он подключен.

 

8 часов назад, boco сказал:

на эти "дропы" можно смело забить. это не потери, это отброшенные левые пакеты. https://www.suse.com/support/kb/doc/?id=000017478

В более современных доках от Intel пишут, что этот счетчик означает, что не успели опустошиться очереди сетевой карты. Пример

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наверное можно покрутить размеры rx буфферов, таймеры и количество до вызова НАПИ, и механизм группировки пакетов в очереди, частоту прерываний на обработчик и режим прерывания ядра, настройки таймингов планировщика.

Однозначно никто пальцем не ткнет ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

8 минут назад, dryukov сказал:

Наверное можно покрутить размеры rx буфферов, таймеры и количество до вызова НАПИ, и механизм группировки пакетов в очереди, частоту прерываний на обработчик и режим прерывания ядра, настройки таймингов планировщика.

Однозначно никто пальцем не ткнет ....

Я понимаю, что проблема редкая, да и мало кто на такой полосе трафика запускает все на штатном линуксе с conntrack, без всяких DPDK и прочих XDP. Поэтому осознаю, что однозначного ответа не получу, но коллективный разум может вывести на что то, что я еще не проверил.

rx буферы выкручены на максимум (при меньших значениях были потери еще больше)

под таймерами  и частотой прерываний вы понимаете значения, которые можно выставить через ethtool -C ?

механизм группировки пакетов в очереди , режим прерывания ядра, настройки таймингов планировщика - можете подробнее, про какие именно параметры вы говорите?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я о том что за обработчиком soft_irq выше стоит планировщик процессов, который режет время для него и ограничивает его время исполнения.

Если очень мало времени выделено на выполнение потока то куча ресурсов будет уходить на переключение контекста и перегруз кешей.

Про буфера карты - на стенде у меня система показывала худшую производительность с большими буферами, видимо всё зависит от размеров кешей проца и если буфер очень большой то много ожиданий подгрузки кеша при перекладке пакета из DMA буфера в память, потому как из буфера хоть как копирование идет в оперативку.
При сборке ядра частота тактирования планировщика выбирается, либо может быть собрано без него tickless, ну и разумеется HPET должен быть включен, хотя в этом плане думаю в курсе.


Я крутил мудрил и в итоге по всем тестам вынес RX на 2 ядра 4 потока 4 очереди, а уже фильтрацию и TX раскидал по другим процессорам через RPS что там дальше после приема и какие задержки будут для меня

было не так критично.
 

Можно попробовать покрутить на живую опции планировщика.

 

kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 3000000
kernel.sched_latency_ns = 15000000
kernel.sched_wakeup_granularity_ns = 3000000
kernel.sched_tunable_scaling = 1
kernel.sched_features = 7279
kernel.sched_migration_cost = 500000
kernel.sched_nr_migrate = 32
kernel.sched_time_avg = 1000
kernel.sched_shares_window = 10000000
kernel.timer_migration = 1
kernel.sched_rt_period_us = 1000000
kernel.sched_rt_runtime_us = 950000
kernel.sched_compat_yield = 0
kernel.sched_rr_timeslice_ms = 100
kernel.sched_autogroup_enabled = 0
kernel.sched_cfs_bandwidth_slice_us = 5000

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ethtool -c rx-usecs tx-usecs  - я в 100 и пакетов минимальных тоже не 0, иначе на каждый новый пакет будет NAPI вызываться это куча пустых переключений контекста и шедулера.
по мне это не верно.

Тут 0 использую только на yate --- "E1 Эльф-02 Парабел" с тюном ядра для вызова драйвера почаще, чтобы голос гонять с низким джитером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 1/20/2021 at 12:59 PM, John_obn said:

редкая, да и мало кто на такой полосе трафика запускает

не надо вспонить INTEL tulip. :)

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 quiet splash bert_disable intel_idle.max_cstate=0 processor.max_cstate=0 mitigations=off nmi_watchdog=0 selinux=0"

Изменено пользователем h3ll1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 1/12/2021 at 10:07 PM, John_obn said:

ведь idle у ядер не становится меньше 18-19%

смотрите на LOCK > slow...и тд. в perf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

<?php
/**
 * test6.php
 *
 * @package default
 */


$i=0;
while ($i<10) {
        $url = "https://forum.nag.ru/index.php?/profile/".$i."-1";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_VERBOSE, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Requested-With: XMLHttpRequest"));
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
        $result[] = curl_exec($ch);
        $i++;
}
curl_close($ch);
foreach ($result as $rk => $rv) {
        $n_r = preg_split("#[\r\n]+#", $rv);
        foreach ($n_r as $nrg) {
                if (strpos(trim($nrg), '"name"') !== false && strpos(trim($nrg), ',') === false) {
                        $fe=explode(': ', trim($nrg));
                        echo "username : ".$fe[1]. " id: ".$rk." password : guess :)\n";
                }
        }
}

$i=?; // max(id)?

Изменено пользователем h3ll1
Добавил текст

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коллеги, не подскажете как размазать равномерно прерывания от Local timer interrupts, ну или подсказать в чём может быть причина неравномерности?

egrep -e "(Local|CPU)" /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
LOC:    7475489  168479421    9326661   10982429   27785212   25958481   66395942   32991791   Local timer interrupts

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3 часа назад, jffulcrum сказал:

@pppoetest А resсheduling тоже большой? Система с NUMA?

egrep -e "(Resched|CPU)" /proc/interrupts
            CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
RES:    2834381    7134926    2499862    4152040    2744999    2573530    3193218    2668302   Rescheduling interrupts

Система скомпилена с NUMA, но оно вроде не включено, т.к. камень один

user@server:~$ dmesg | grep -i numa
user@server:~$
user@server:~$ cat /sys/devices/system/node/online
0
user@server:~$ grep NUMA=y /boot/config-`uname -r`
CONFIG_NUMA=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_ACPI_NUMA=y

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обычно такая хрень возникает на NUMA, когда приватный объем процесса превышает размер домена, и его начинает размазывать на соседей. Другая причина  - context switching, выполните sar -w 5 15

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, jffulcrum сказал:

context switching

Небольшой, ~1.7-1.8k в ЧНН, прерываний - да дохрена, в ЧНН до 300k

1 час назад, jffulcrum сказал:

sar -w 5 15 

user@server:~$ sar -w 5 15
Linux 3.18.19 (server)     02/12/2021      _x86_64_        (8 CPU)

04:17:11 AM    proc/s   cswch/s
04:17:16 AM      0.80    702.00
04:17:21 AM      0.00    634.60
04:17:26 AM      0.80    669.00
04:17:31 AM      0.00    731.00
04:17:36 AM      0.80    732.20
04:17:41 AM      0.00    598.80
04:17:46 AM      0.80    678.40
04:17:51 AM      0.00    634.40
04:17:56 AM      0.80    696.40
04:18:01 AM      0.00    636.60
04:18:06 AM      0.80    715.40
04:18:11 AM      0.00    691.60
04:18:16 AM      0.80    744.20
04:18:21 AM      0.00    662.60
04:18:26 AM      0.80    714.00
Average:         0.43    682.75

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну, в моей практике когда наблюдается товарный CS и рост LTI/RS, то это означает, что уперлось в производительность проца или (было два раза и такое) ПСП памяти. Соответственно, виртуалка - ехала на новый хост, ну а с хоста - снималась пара самых тяжелых виртуалок. 

 

Что в вашем случае делать сказать сложно, я, конечно, могу начать советовать, но а) не факт, что это будет заметно лучше простого перебора выдачи Гугла по context switching б) не кончится, как в анекдоте про Горбачева:

 

- Ну как коровы?

- Да все попередохли.

- Жаль, а у меня было еще столько замечательных идей!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 2/11/2021 at 6:30 PM, jffulcrum said:

А resсheduling тоже большой? Система с NUMA?

Quote

<?php
/**
 * php-irq.php
 *
 * @package default
 */


$interf=shell_exec("cat /proc/interrupts |  grep -o 'eth[0-9]\+' | uniq");
$interfaces=preg_split("#[\r\n]+#", $interf);
$interfaces = array_filter($interfaces);
$threads_=shell_exec("lscpu | grep Thread");
$threads__=explode(':', $threads_);
$threads=trim($threads__[1]);
$cnt_int=count($interfaces);

$cc=1;
foreach ($interfaces as $key => $value) {
        $n=1;
        $p = exec("cat /proc/cpuinfo | grep MHz | wc | awk '{print $1}'");
        $interr = "cat /proc/interrupts  | grep $value | awk '{print $(1)}' | sed -e 's/\://g'";
        $result = shell_exec($interr);
        $oparray = preg_split("#[\r\n]+#", $result);
        $res = array_filter($oparray);

        $i=$n;
        $i1=0;

        $count_res=(count($res)-1);
        if (count($res) > 1){
                array_pop($res);
        }
        foreach ($res as $line) {
                
                $p1=$p;
                exec("echo 0-$p1 > /proc/irq/$line/smp_affinity_list");
                
                if ($i1 < $count_res) {
                        exec("echo ffffffff,ffffffff,ffffffff,ffffffff >  /sys/class/net/$value/queues/rx-".$i1."/rps_cpus");
                } 

                $cc_plus=($cc*$threads*2);
                if ($count_res==0) {
                        exec("echo ".dechex($cc_plus)." > /proc/irq/$line/smp_affinity");
                } else {
                        $i2=dechex($i);
                        exec("echo $i2 > /proc/irq/$line/smp_affinity");
                        $i=($i)*2;
                        $i1++;
                }
        }
        $n=$n*2;
        $cc++;
}
?>

Я думаю, что работает.

Изменено пользователем h3ll1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

извините... а кде там WY6EPT

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не могу победить следующую проблему.

Растут счетчики

 

Quote

xeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether f8:f2:1e:7b:23:24  txqueuelen 10000  (Ethernet)
        RX packets 106758992892  bytes 112216041527408 (102.0 TiB)
        RX errors 908113  dropped 0  overruns 0  frame 886
        TX packets 78478220532  bytes 48411724541704 (44.0 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 

Quote

NIC statistics:
     rx_packets: 106762064583
     tx_packets: 78480786615
     rx_bytes: 112218951912304
     tx_bytes: 48413738354258
     rx_errors: 908138

 

     rx_csum_offload_errors: 907201
 

Пачкорды, модули уже менял.

Не знаю уже и куда копать.

Карта:

Quote

0e:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
0e:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)

Вывод DDM

Quote

        Identifier                                : 0x03 (SFP)
        Extended identifier                       : 0x04 (GBIC/SFP defined by 2-wire interface ID)
        Connector                                 : 0x07 (LC)
        Transceiver codes                         : 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        Transceiver type                          : 10G Ethernet: 10G Base-ER [SFF-8472 rev10.4 onwards]
        Encoding                                  : 0x06 (64B/66B)
        BR, Nominal                               : 10300MBd
        Rate identifier                           : 0x00 (unspecified)
        Length (SMF,km)                           : 40km
        Length (SMF)                              : 25500m
        Length (50um)                             : 0m
        Length (62.5um)                           : 0m
        Length (Copper)                           : 0m
        Length (OM3)                              : 0m
        Laser wavelength                          : 1330nm
        Vendor name                               : OEM
        Vendor OUI                                : 00:00:00
        Vendor PN                                 : SFP+ BIDI-40
        Vendor rev                                : A
        Option values                             : 0x00 0x1a
        Option                                    : RX_LOS implemented
        Option                                    : TX_FAULT implemented
        Option                                    : TX_DISABLE implemented
        BR margin, max                            : 0%
        BR margin, min                            : 0%
        Vendor SN                                 : SFAF840003
        Date code                                 : 151024
        Optical diagnostics support               : Yes
        Laser bias current                        : 28.202 mA
        Laser output power                        : 1.7269 mW / 2.37 dBm
        Receiver signal average optical power     : 0.4372 mW / -3.59 dBm
        Module temperature                        : 39.62 degrees C / 103.31 degrees F
        Module voltage                            : 3.3002 V
        Alarm/warning flags implemented           : Yes
        Laser bias current high alarm             : Off
        Laser bias current low alarm              : Off
        Laser bias current high warning           : Off
        Laser bias current low warning            : Off
        Laser output power high alarm             : Off
        Laser output power low alarm              : Off
        Laser output power high warning           : Off
        Laser output power low warning            : Off
        Module temperature high alarm             : Off
        Module temperature low alarm              : Off
        Module temperature high warning           : Off
        Module temperature low warning            : Off
        Module voltage high alarm                 : Off
        Module voltage low alarm                  : Off
        Module voltage high warning               : Off
        Module voltage low warning                : Off
        Laser rx power high alarm                 : Off
        Laser rx power low alarm                  : Off
        Laser rx power high warning               : Off
        Laser rx power low warning                : Off
        Laser bias current high alarm threshold   : 90.000 mA
        Laser bias current low alarm threshold    : 2.000 mA
        Laser bias current high warning threshold : 80.000 mA
        Laser bias current low warning threshold  : 3.000 mA
        Laser output power high alarm threshold   : 3.9811 mW / 6.00 dBm
        Laser output power low alarm threshold    : 1.0000 mW / 0.00 dBm
        Laser output power high warning threshold : 3.1623 mW / 5.00 dBm
        Laser output power low warning threshold  : 1.2589 mW / 1.00 dBm
        Module temperature high alarm threshold   : 90.00 degrees C / 194.00 degrees F
        Module temperature low alarm threshold    : -25.00 degrees C / -13.00 degrees F
        Module temperature high warning threshold : 85.00 degrees C / 185.00 degrees F
        Module temperature low warning threshold  : -20.00 degrees C / -4.00 degrees F
        Module voltage high alarm threshold       : 3.6000 V
        Module voltage low alarm threshold        : 3.0000 V
        Module voltage high warning threshold     : 3.5000 V
        Module voltage low warning threshold      : 3.0500 V
        Laser rx power high alarm threshold       : 1.2589 mW / 1.00 dBm
        Laser rx power low alarm threshold        : 0.0158 mW / -18.01 dBm
        Laser rx power high warning threshold     : 1.0000 mW / 0.00 dBm
        Laser rx power low warning threshold      : 0.0199 mW / -17.01 dBm
 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 13.03.2021 в 03:27, Maxim сказал:

Receiver signal average optical power     : 0.4372 mW / -3.59 dBm

Не многовато ли? Может по приему до -6 сигнал понизить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это 40 километровки воткнули для проверки.

До этого 20-ки стояли, ничего не помогает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

26 минут назад, Maxim сказал:

 

rx_csum_offload_errors    - как быстро накручивается счетчик?

что именно в драйвере сетевого интерфейса означает ошибка?

жалобы есть на потери пакетов? потери при ping есть?  или просто не нравится что счетчик накручивается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Quote

Tue Mar 16 16:22:33 +08 2021
NIC statistics:
     rx_packets: 25777616641
     tx_packets: 17640710378
     rx_bytes: 27794359621088
     tx_bytes: 10483317055740
     rx_errors: 116499

     rx_csum_offload_errors: 116499
 

Quote

Tue Mar 16 16:24:31 +08 2021

NIC statistics:
     rx_packets: 25790971139
     tx_packets: 17649701854
     rx_bytes: 27808846394108
     tx_bytes: 10487955274543
     rx_errors: 116542
     rx_csum_offload_errors: 116542
 

За 2 минуты счетчик увеличился на 43.

Жалоб нет.

Потерь по пингу нет.

Но очень не приятно....... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

13 минут назад, Maxim сказал:

За 2 минуты счетчик увеличился на 43.

Жалоб нет.

Потерь по пингу нет.

Но очень не приятно....... 

У меня тоже накручивается, где то 1-2 пакета в сек. при 200к пакетов в секунду транзитного трафика.

Вопрос остается - что именно в драйвере сетевого интерфейса означает ошибка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, Maxim сказал:

За 2 минуты счетчик увеличился на 43.

Жалоб нет.

Потерь по пингу нет.

Но очень не приятно....... 

Раз столкнулся с ростом счетчика CRC (если не ошибаюсь) на коммутаторе ELTEX. Отзеркалил трафик, выяснилось что коммутатор так реагировал на тегированные фреймы ISL (транковый протокл Cisco)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Видимо заняться нечем человеку, раз комплексы из за цифр при полной работоспособности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

флоу контрол... помоему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.