The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
зависание Linux, rcu_sched detected stalls on CPUs/tasks, SMP, !*! maxnetstat, 02-Окт-18, 11:43  [смотреть все]
Добрый день!
Прошу помощи в решении проблемы.
Сам уже более недели не могу с ней справится.

Столкнулся с проблемой периодического подвисания сервера.

#---------------
Данные о железе:
CPU: Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz (8 ядер)
MotherBoard: SuperMicro X11SSL-F
RAM:  8GB DDR4-2400 ECC Unbuffered Supermicro certified for Intel C232, C236 chipsets
Сеть: Intel 82599 10 Gigabit Network Connection
driver: ixgbe
version: 3.15.1-k

#---------------
Данные об ОС:
Debian 7.2
kernel 3.12.6

#---------------
Краткое описание сферы использования сервера:
Сервер используется как маршрутизатор (Quagga),
нагрузка на него сейчас небольшая - порядка 500-600 Мбит/с.
Планируется довести до 4-5 Гбит/с.

#---------------
Симптомы подвисания сервера:
Перестает отвечать на ICMP запросы и отдавать данные по SNMP (это со стороны системы мониторинга).
Также прекращает маршрутизировать трафик, BGP сессии, которые висят на нем также отваливаются.
Через 3-5 минут сервер "приходит в себя" и продолжает работать, при это периодически давая на себя задержки.

В dmesg в эти моменты вижу большое количество сообщений типа:

kernel: [283813.064128] INFO: rcu_sched detected stalls on CPUs/tasks: { 1} (detected by 2, t=5252 jiffies, g=22131346, c=22131345, q=6300)
kernel: [283813.064332] sending NMI to all CPUs:
kernel: [283813.064335] NMI backtrace for cpu 2
kernel: [283813.064337] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 3.12.6.ipset-amd64 #3
kernel: [283813.064337] Hardware name: Supermicro Super Server/X11SSL-F, BIOS 2.2 05/23/2018
kernel: [283813.064339] task: ffff88026e0fc7e0 ti: ffff88026e12e000 task.ti: ffff88026e12e000
kernel: [283813.064340] RIP: 0010:[<ffffffff811b8008>]  [<ffffffff811b8008>] kasprintf+0x43/0x43
kernel: [283813.064343] RSP: 0018:ffff880277883cc8  EFLAGS: 00000046
kernel: [283813.064344] RAX: 0000000000000000 RBX: 0000000000002710 RCX: 0000000000000007
kernel: [283813.064345] RDX: 0000000000000006 RSI: 0000000000000200 RDI: ffffffff8167b570
kernel: [283813.064346] RBP: ffff88027788db00 R08: 0000000000000002 R09: 0000000000000000
kernel: [283813.064347] R10: 0000000000000000 R11: 0000000000002710 R12: ffffffff8163a600
kernel: [283813.064347] R13: 0000000000000001 R14: ffff88026e12e000 R15: ffffffff8163a6c0
kernel: [283813.064349] FS:  0000000000000000(0000) GS:ffff880277880000(0000) knlGS:0000000000000000
kernel: [283813.064349] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kernel: [283813.064350] CR2: 00007fa7748bd6f0 CR3: 000000000160b000 CR4: 00000000003407e0
kernel: [283813.064351] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
kernel: [283813.064352] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
kernel: [283813.064352] Stack:
kernel: [283813.064353]  ffffffff810245d2 ffffffff8163a600 ffffffff8109ca5f 00000000ffffffc0
kernel: [283813.064355]  000000000000189c 0000000000000083 0000000000000002 0000000000000000
kernel: [283813.064356]  ffff88026e0fc7e0 0000000000000000 0000000000000002 ffff88027788d0f0
kernel: [283813.064357] Call Trace:
kernel: [283813.064358]  <IRQ>
kernel: [283813.064358]  [<ffffffff810245d2>] ? arch_trigger_all_cpu_backtrace+0x5e/0x80
kernel: [283813.064364]  [<ffffffff8109ca5f>] ? rcu_check_callbacks+0x3e4/0x4c3
kernel: [283813.064366]  [<ffffffff81079df2>] ? tick_sched_do_timer+0x25/0x25
kernel: [283813.064368]  [<ffffffff8103f55c>] ? update_process_times+0x31/0x5c
kernel: [283813.064370]  [<ffffffff81079b4a>] ? tick_sched_handle+0x32/0x3d
kernel: [283813.064371]  [<ffffffff81079e22>] ? tick_sched_timer+0x30/0x4c
kernel: [283813.064373]  [<ffffffff81051119>] ? __run_hrtimer+0xab/0x152
kernel: [283813.064375]  [<ffffffff81051747>] ? hrtimer_interrupt+0xc5/0x1a7
kernel: [283813.064377]  [<ffffffff810238d6>] ? smp_apic_timer_interrupt+0x27/0x37
kernel: [283813.064379]  [<ffffffff81354fca>] ? apic_timer_interrupt+0x6a/0x70
kernel: [283813.064381]  [<ffffffff81038c15>] ? __do_softirq+0x8a/0x201
kernel: [283813.064382]  [<ffffffff81355a9c>] ? call_softirq+0x1c/0x30
kernel: [283813.064384]  [<ffffffff81003b7c>] ? do_softirq+0x2c/0x60
kernel: [283813.064385]  [<ffffffff81038e51>] ? irq_exit+0x3b/0x7f
kernel: [283813.064387]  [<ffffffff81003803>] ? do_IRQ+0x81/0x98
kernel: [283813.064388]  [<ffffffff8134e6aa>] ? common_interrupt+0x6a/0x6a
kernel: [283813.064389]  <EOI>
kernel: [283813.064390]  [<ffffffff812764b5>] ? cpuidle_enter_state+0x43/0xa6
kernel: [283813.064393]  [<ffffffff812764ae>] ? cpuidle_enter_state+0x3c/0xa6
kernel: [283813.064397]  [<ffffffff812765ea>] ? cpuidle_idle_call+0xd2/0x142
kernel: [283813.064399]  [<ffffffff81008fdd>] ? arch_cpu_idle+0x6/0x17
kernel: [283813.064401]  [<ffffffff8106d526>] ? cpu_startup_entry+0x11e/0x194
kernel: [283813.064402]  [<ffffffff8134e354>] ? _raw_spin_unlock_irqrestore+0x6/0x7
kernel: [283813.064404]  [<ffffffff8102232d>] ? start_secondary+0x1df/0x1e5


Насколько я понимаю, ядра периодически "стопорятся".

Прочитав: https://www.kernel.org/doc/Documentation/RCU/stallwarn.txt
решил что проблема в работе функций энергосбережения процессора.

и поэтому я сделал:
- отключал в BIOS функции управления энергопотребления C-STATE, P-STATE.
- выгружал модуль acpi_cpufreq

Никакого результата это не принесло.
Пробовал разнести прерывания таким образом, чтобы eth0 работал на одном ядре, но также не помогло.

В итоге загрузил систему с опцией nosmp.

Прошли сутки, с сервером проблем нет, но я теперь обладатель одноядерного процессора вместо 8 ядер.
на данный момент мне и 1 ядра хватает, но ведь это не решение проблемы...

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

  • зависание Linux, rcu_sched detected stalls on CPUs/tasks, SMP, !*! eRIC, 07:19 , 03-Окт-18 (1)
    > kernel: [283813.064128] INFO: rcu_sched detected stalls on CPUs/tasks: { 1} (detected by
    > 2, t=5252 jiffies, g=22131346, c=22131345, q=6300)
    > kernel: [283813.064332] sending NMI to all CPUs:
    > kernel: [283813.064335] NMI backtrace for cpu 2

    многие обходили эту панику через отключение ipv6 или nosmp. если есть возможность забустрапить свежий Debian и проверить на новом ядре, ну и свежим Quagga поиграть

    • зависание Linux, rcu_sched detected stalls on CPUs/tasks, SMP, !*! maxnetstat, 10:03 , 03-Окт-18 (2)
      >> kernel: [283813.064128] INFO: rcu_sched detected stalls on CPUs/tasks: { 1} (detected by
      >> 2, t=5252 jiffies, g=22131346, c=22131345, q=6300)
      >> kernel: [283813.064332] sending NMI to all CPUs:
      >> kernel: [283813.064335] NMI backtrace for cpu 2
      > многие обходили эту панику через отключение ipv6 или nosmp. если есть возможность
      > забустрапить свежий Debian и проверить на новом ядре, ну и свежим
      > Quagga поиграть

      Спасибо за ответ:)
      smp я отключил. но получил в итоге 1 ядро вместо 8.
      ipv6 также отключен через sysctl.

      Обновить теоретически возможно, но на практике проблема в том,
      что ОС уже подготовлена, обкатана в качестве маршрутизатора.
      Данное решение используется на нескольких серверах, и обновление одного из них повлечет
      ситуацию, когда одинаковые по функционалу сервера будут на разных версия ОС.
      А это проблема, ведь они перестают быть взаимозаменяемыми и потребуется обновление всех
      серверов :)
      Возможно и стоит этим в итоге заняться, но подобные вещи должны планироваться, а на это времени пока нет.
      Да и не принесет в целом профита. Того что есть с головой достаточно.
      К тому же, такая же система установлена на другом сервере с процессором Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz, и там подобных проблем нет.

      Думаю попробовать сменить оперативную память (установлена DDR4-2400 ECC Unbuffered), т.к. натыкался в инете на то, что замена памяти решила проблему.
      Но это уже скорее от того, что варианты "лечения" системы подходят к концу :)


      • зависание Linux, rcu_sched detected stalls on CPUs/tasks, SMP, !*! eRIC, 20:05 , 03-Окт-18 (3)
        > Обновить теоретически возможно, но на практике проблема в том,
        > что ОС уже подготовлена, обкатана в качестве маршрутизатора.
        > Данное решение используется на нескольких серверах, и обновление одного из них повлечет
        > серверов :)

        я не про обычное обновление всей системы писал, а про утилиту Debootstrap. посмотрите на утилиту эту на досуге, очень эффективная вещь в хозяйстве.

        > Думаю попробовать сменить оперативную память (установлена DDR4-2400 ECC Unbuffered),
        > т.к. натыкался в инете на то, что замена памяти решила проблему.

        возможно, будем ждать ваших результатов ;)

        • зависание Linux, rcu_sched detected stalls on CPUs/tasks, SMP, !*! maxnetstat, 08:40 , 04-Окт-18 (4)

          > я не про обычное обновление всей системы писал, а про утилиту Debootstrap.
          > посмотрите на утилиту эту на досуге, очень эффективная вещь в хозяйстве.

          Знаю о ней, но никогда не использовал. Посмотрю, спасибо :)

          >> Думаю попробовать сменить оперативную память (установлена DDR4-2400 ECC Unbuffered),
          >> т.к. натыкался в инете на то, что замена памяти решила проблему.
          > возможно, будем ждать ваших результатов ;)

          К сожалению, пока нечем заменить память.

          Вчера мне подсказали отключить HyperThreading, но ее отключение не привело к положительным изменения.
          Описываю все свои действия, вдруг кому пригодится:)

          • зависание Linux, rcu_sched detected stalls on CPUs/tasks, SMP, !*! asdmkw, 21:17 , 29-Апр-21 (6)

            >> я не про обычное обновление всей системы писал, а про утилиту Debootstrap.
            >> посмотрите на утилиту эту на досуге, очень эффективная вещь в хозяйстве.
            > Знаю о ней, но никогда не использовал. Посмотрю, спасибо :)
            >>> Думаю попробовать сменить оперативную память (установлена DDR4-2400 ECC Unbuffered),
            >>> т.к. натыкался в инете на то, что замена памяти решила проблему.
            >> возможно, будем ждать ваших результатов ;)
            > К сожалению, пока нечем заменить память.
            > Вчера мне подсказали отключить HyperThreading, но ее отключение не привело к положительным
            > изменения.
            > Описываю все свои действия, вдруг кому пригодится:)

            C-state отключен? Max performace, в bios, влючен?
            Отключение powersave mode+throttling:
            intel_idle.max_cstate=0 processor.max_cstate=0 intel_pstate=disable acpi=force powersaved=off(старье)

            Отключение watchdog-в и проверок, которые могут давать фризы:
            mce=ignore_ce nmi_watchdog=0 nowatchdog

            Если отключен HT, то можно включить
            idle=poll #температура будет повыше, но снижает задержки
            cpuidle.off=1

            Можно разобраться с балансировкой прерывайний, отключить динамику
            acpi_irq_nobalance

            Отключить динамические прерывания, перейдя на старый режим
            nohz=off

            Если хочется выжать максимум, то отключить фиксы безопасности:
            mitigations=off (для >=4)
            norandmaps(sysctl.conf: kernel.randomize_va_space = 0)
            noibrs noibpb nopti nospectre_v1 nospectre_v2 l1tf=off spectre_v2_user=off nospec_store_bypass_disable no_stf_barrier mds=off spectre_v2=off

            Дальше уже тюнить параметры сетевухи через ethtool, распределять их по ядрам(numa etc).

            Посмотреть в сторону busy pools:
            #net.core.busy_poll = 100
            #net.core.busy_read = 100

            • зависание Linux, rcu_sched detected stalls on CPUs/tasks, SMP, !*! maxnetstat, 11:14 , 30-Апр-21 (7)
              >[оверквотинг удален]
              > nohz=off
              > Если хочется выжать максимум, то отключить фиксы безопасности:
              > mitigations=off (для >=4)
              > norandmaps(sysctl.conf: kernel.randomize_va_space = 0)
              > noibrs noibpb nopti nospectre_v1 nospectre_v2 l1tf=off spectre_v2_user=off nospec_store_bypass_disable
              > no_stf_barrier mds=off spectre_v2=off
              > Дальше уже тюнить параметры сетевухи через ethtool, распределять их по ядрам(numa etc).
              > Посмотреть в сторону busy pools:
              > #net.core.busy_poll = 100
              > #net.core.busy_read = 100

              Спасибо за информацию!
              Добавлю в закладки и в случае необходимости опробую ваши советы!
              на данный момент проблема решена переходом на аппаратные маршрутизаторы (не из-за этой проблемы)




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру