LINUX.ORG.RU

Сообщения vbr

 

Как выбрать частоты тактирования?

Форум — Development

Пишу прошивку для девайса. Он в том числе взаимодействует с ПК по USB.

Имеется внешний кристалл на 25 МГц. Имеется внутренний резонатор на 8 МГц. Также имеется два внутренних умножителя и набор делителей.

Для USB-периферии я из 25 МГц получаю 48 (25 / 5 * 8 / 10 * 12).

SYS тактирование я могу выбрать либо от этих 48, либо от кристалла (25) напрямую, либо от внутреннего резонатора (8). Сейчас я беру 48.

Далее я через множитель могу это значение поделить и настроить частоту AHB шины. Сейчас я делю на 8, получаю 6 МГц. На этой частоте работает процессор.

Далее мне нужно получить частоты для шин APB1 и APB2. Сейчас я APB1 делю на 16, получаю 375 kHz и APB2 делю на 4, получаю 1.5 MHz.

Собственно это всё я настроил исходя из принципа - чем меньше, тем лучше. На 3 МГц у меня USB не завёлся, соответственно поставил 6.

На шине APB2 у меня крутится таймер, через который я делаю микросекундные задержки для USB, поэтому её тактирую повыше (таймер использует двойную частоту, 3 МГц).

Каких-то требований на данный момент у меня нет (точней они такие небольшие, что подойдёт что угодно, к примеру у меня ещё будет SPI, для которого нужна скорость не ниже 110 КГц и передавать данные по USB я буду со скоростью примерно 15 КБ/с.

Есть ли какие-то соображения, по которым стоит запитать AHB шину не от делителя USB? Если запитывать от 25 МГц кристалла, то делить на ровные числа не получается, а частота в 25 МГц мне кажется избыточной, хотя изначально так и делал. Запитывать от 8 МГц резонатора кажется странным при наличии внешнего кристалла.

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

 

vbr
()

Осваиваем STM32 снизу: часть 8 - используем CMSIS

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 8: используем CMSIS

Очень многое из предыдущих частей было сделано для наглядности. К примеру мы написали свой линкер-скрипт, свой стартовый код, использовали явные адреса памяти. В этом нет ничего априори плохого, но, вообще говоря, умные люди это всё уже написали до нас. Поэтому, после того, как стало понятно, как это всё работает, настало время выкинуть все самодельные велосипеды, посмотреть, как устроен велосипед из магазина и научиться кататься на нём.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 7 - Hello world через UART

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 7. Hello world через UART

UART это протокол, по которому микроконтроллер может взаимодействовать с компьютером. Его можно использовать для печати отладочных сообщений, или для полноценного взаимодействия с программой, запущенной на компьютере. USART это что-то вроде расширенной версия UART, которую мы использовать не будем, в документации обычно используется именно этот термин.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 6 - Мигаем с таймером

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 6. Мигаем с таймером

До сих пор наши программы для реализации временной задержки использовали пустые циклы с примерно подобранным числом итераций. Другой подход - использовать таймеры.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 5 - Мигаем на C

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 5: Мигаем на C

Эта часть будет комбинацией частей 3 и 4. Мы перепишем код из части 3 на C, используя «инфраструктуру» для сборки из части 4 и познакомимся с некоторыми не всегда очевидными моментами, которые надо помнить при работе с микроконтроллером из кода на C.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 4

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 4: Начинаем работать с C

Знание ассемблера важно, но многие программы разумней писать на C. В этой части мы напишем простую программу на C, скомпилируем её, исследуем получившийся объектный файл, правильно скомпонуем и запустим. После этого ещё немного изучим gdb.

( читать дальше... )

 ,

vbr
()

Код ломает маркдаун

Форум — Linux-org-ru

Вроде ничего особенного в нём нет, но маркдаун ломает. Использую '''c (для подсветки). Если не указывать C, то всё работает. Судя по разметке там какой-то детект XML срабатывает или что…

Не ломает:

static void enable_usart(void)
{
    uint32_t rcc_base_address = 0x40021000;
    uint32_t rcc_apb2enr_address = rcc_base_address + 0x18;
    uint32_t rcc_apb2enr_iopben = 1 << 3;
    uint32_t rcc_apb1enr_address = rcc_base_address + 0x1c;
    uint32_t rcc_apb1enr_usart3en = 1 << 18;
    uint32_t gpiob_base_address = 0x40010c00;
    uint32_t gpiob_crh_address = gpiob_base_address + 0x04;
    uint32_t gpiox_crh_mode10_0 = 1 << 8;

Ломает:

static void enable_usart(void)
{
    uint32_t rcc_base_address = 0x40021000;
    uint32_t rcc_apb2enr_address = rcc_base_address + 0x18;
    uint32_t rcc_apb2enr_iopben = 1 << 3;
    uint32_t rcc_apb1enr_address = rcc_base_address + 0x1c;
    uint32_t rcc_apb1enr_usart3en = 1 << 18;
    uint32_t gpiob_base_address = 0x40010c00;
    uint32_t gpiob_crh_address = gpiob_base_address + 0x04;
    uint32_t gpiox_crh_mode10_0 = 1 << 8;

 ,

vbr
()

Осваиваем STM32 снизу: часть 3 - мигаем светодиодом

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 3: мигаем светодиодом

Мигание светодиодом это традиционный hello world для микроконтроллеров. Это один из самых простых способов взаимодействия с окружающей средой без помощи отладчика. В этой части именно этим мы и займёмся.

Сразу оговоримся, что эта часть и далее уже очень сильно зависят от конкретного процессора и даже платы. Все адреса приведены со ссылками на reference manual, что должно помочь в переводе кода на другие процессоры.

( читать дальше... )

 ,

vbr
()

Как правильно прокинуть IP?

Форум — General

Имеется сервис, который должен работать на определённом компьютере. Он делает HTTP-запросы и принимает HTTP-запросы. Исходящие HTTP-запросы должны идти с IP-адреса этого компьютера и входящие HTTP-запросы должны получаться с IP-адреса этого компьютера.

Хочется запускать этот сервис на другом компьютере и перенаправлять входящие и исходящие подключения соответствующим образом. Также хочется минимизировать настройки iptables и подобного и обойтись userspace-софтом.

Простой способ это сделать это ssh. Он может как перенаправлять входящие соединения с удалённого сервера на локальный, так и предоставлять на локальном сервере SOCKS-прокси, который будет перенаправлять исходящие соединения через удалённый сервер. Для разработки именно такой вариант я и использую.

Разумно ли использовать такую конфигурацию в продакшне? Настроить поднятие ssh-соединения через systemd-юнит в принципе несложно, но я никогда не видел, чтобы так делали. Насколько это разумно?

В качестве альтернативы видится поднятие специализированного прокси-сервера на удалённом компьютере, а также http reverse proxy (вроде nginx) на удалённом компьютере. Этот вариант кажется более «продакшн», но несёт с собой уйму дополнительных усилий по управлению всем этим добром, включая безопасность, которая в ssh обеспечивается автоматически.

Какой-то существенной нагрузки, способной забить канал или процессор шифрованием не ожидается. Одновременных запросов может быть максимум - десятки (на некоторые запросы ответ может приходить минутами), поэтому опасаюсь каких-то неизвестных мне особенностей ssh-туннелей.

 ,

vbr
()

Осваиваем STM32 снизу: часть 2 - пишем простейшую прошивку

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 2: пишем простейшую прошивку

Вообще говоря, прошивка уже была описана в первой части. Нам нужно создать такой файл, в котором будет записано некое число из четырёх байтов, которое процессор присвоит регистру sp, далее там будет записан, к примеру, адрес 0x08000131 в следующих четырёх байтах, далее будут располагаться 296 нулевых байтов (0x130 - 4 - 4 = 304 - 4 - 4 = 296), а за ними 2 инструкции по 4 байта, которые и будут что-то делать. Итого файл прошивки должен занимать 4 + 4 + 296 + 4 + 4 = 312 байтов. Содержимое этого файла мы запишем в микроконтроллер по адресу 0x08000000, где и располагается флеш-память.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 1 - подключаем и исследуем плату

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Все файлы можно взять тут.

В данной серии статей мы попробуем поработать с процессором STM32 с помощью GNU утилит, немного познакомимся с ассемблером и отладкой.

Примеры написаны для популярной платы blue pill, построенной на микроконтроллере STM32F103C8T6.

( читать дальше... )

 ,

vbr
()

STM32 с нуля (жж)

Форум — Talks

Я тут в очередной раз пытаюсь освоить программирование микроконтролеров. Захотелось написать такой полу-ЖЖ, полу-туториал (как говорится - хочешь разобраться в чём-то, объясни это другим). Может кто почерпнёт или подскажет чего полезного.

Если интерес будет, буду продолжать.

Итак осваиваем STM32 не как нормальные люди.

Примерный план:

  1. Подключить его к компьютеру и убедиться, что там что-то происходит. Использовать будем st-util и gdb.

  2. Написать простейшую программу на ассемблере, которая в цикле прибавляет регистр, скомпилировать из неё прошивку, залить на плату и пронаблюдать её работу. Использовать будем binutils и st-flash.

  3. Поморгать диодом (на ассемблере же).

  4. Переписать осмысленный код на С (дальше всё на С).

  5. Переписать моргание с использованием таймера, чтобы внести свой вклад в борьбу с глобальным потеплением.

  6. Сказать внешнему миру «Hello world» через UART.

  7. Переписать «Hello world» с помощью CMSIS, уже с пониманием того, что там происходит.

На этом этапе начальное освоение микроконтроллеров можно считать завершённым. Дальше, видимо, сотни страниц датащитов по записи нужных битов в нужные места, или использование готовых библиотек. В любом случае навыки из списка выше полезны при использовании любых библиотек, т.к. всё растёт из этой базы.

Сразу скажу, что в процессе будет использовано достаточно много инструментов вроде make, ld, gdb, as, gcc и тд, по каждому из них можно книги писать (и пишут). Поэтому, конечно, углубляться в них я не буду, а напротив буду использовать в максимально примитивном виде.

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

 , ,

vbr
()

Архитектура системы обработки заказов

Форум — Development

Имеется система, аналогия которой это обработка заказов в магазине или обработка запросов в система типа jira. Некоторыми образами в систему попадает сущность, пусть будет «заказ». Объём - тысячи в день. Далее эта сущность проходит через несколько статусов. Сейчас - чуть больше 10, но число их потихоньку растёт. К примеру после того, как сущность создана, делается запрос в другую систему. Если запрос вернул данные, то данные присоединяются к сущности и переходит в следующий статус. Далее идёт запрос в другой сервис и с сущностью работают там. Там свои статусы. Какие-то переходы это просто запрос в сервис, какие-то переходы это ожидание действий пользователя (может быть до месяца). Переходы могут добавлять данные к сущности, как в примере выше. В конце концов сущность либо архивируется с успехом или по таймауту.

Всё, что выше, это абстрактное описание того, как это всё работает.

Сейчас это примерно 3 сервиса, у каждого своя база. Ну и внешние сервисы, их тоже несколько. Часть переходов между статусов это скедулеры, запускаются раз в полминуты, или в минуту, или в 5 минут. Часть переходов это непосредственно запросы от пользователя.

Некоторые переходы важно повторять. К примеру если сервис лежит, нужно повторять запросы, причём с задержкой желательно по алгоритму, чтобы не дудосить.

Что сейчас плохо:

  1. У всего этого нет никакой формы. По сути система выросла исторически, из простой и понятной в некоего монстра. Алгоритмы перехода между статусами мало кто понимает.

  2. Всякие повторы и тд реализуются на месте с переменным успехом. Где-то вообще не реализуются. Типа лежит сервис отправки смс, и фиг с ним, не очень-то и нужно. Где-то долбит раз в минуту, в итоге скапливается несколько десятков тысяч заказов, которые из-за чего-то не могут отправиться и система начинает тормозить, пока кто-то не придёт и не разберётся. Где-то сделано по уму, с экспоненциальной задержкой. Хочется, чтобы везде было по уму.

  3. Логи. Все логи ведутся ну тупо в лог файлах. Текущее состояние можно посмотреть в базе, истории состояний нет. Проблемы решаются очень долго - надо долго грепать логи (а их очень много, гигабайты в день), копаться в базе, курить сорсы. В общем случае в логах, базах и сорсах нескольких сервисов. От системы хочется, чтобы была возможность найти сущность, посмотреть её историю, в идеале вообще посмотреть - какие запросы делались и какие ответы получались в определённые моменты времени. В общем чтобы суппорт писал «по юзеру иванов не отрабатывается заказ», ты шёл в дашборд, находил «user.name=иванов» его заказ, сразу видел, что он в таком-то статусе, сделал 3 попытки на такой-то сервис, получил такие-то ответы. В общем как-то так.

  4. Скорость работы. Из-за того, что скедулеры отрабатывают не моментально и не раз в секунду, а в среднем раз в минуту, каждая смена статуса занимает до минуты, в итоге то, что может сделаться за долю секунды, занимает несколько минут.

  5. В целом есть ощущение, что такие системы должны строиться по типовой архитектуре.

Если бы я это делал, я бы сделал как-то так:

  • Есть сущность
  • У неё есть статус
  • К сущности прикрепляются произвольные данные по ключ-значение
  • Частью статуса может служить выражение вида ключ == значение и тд. Ну чтобы не делать комбинаторный взрыв из статусов. Хотя тут спорный момент, может это и не надо.
  • Куча сервисов, которые обрабатывают изменения статусов.
  • Сервис триггерится либо по изменению статуса, либо по внешнему вызову. С внешним вызовом надо подумать, пока чёткого понимания нет.

При вызове сервиса можно автоматом делать повторы, причём с задержкой нужной, логгирование и тд.

Но в целом я предполагаю, что это велосипед и делать описанное выше не нужно, а нужно понять, что мне нужно.

У меня давным давно был опыт работы с Java фреймворком, который работал с BPMN. Честно говоря я не смог вспомнить его название, наверное это был jbpm. Кажется, что этот фреймворк решал похожую задачу. Там в эклипсе рисовали workflow эдакой блок-схемой, в каждом узле прописывали логику работы. Честно говоря опыт был крайне отрицательный, система была максимально геморройна для работы с ней. Но допускаю, что это была проблема конкретной реализации или старой версии. Поэтому первый кандидат, который я рассматриваю, это фреймворки с BPMN подходом.

Сразу скажу, что нужды рисовать блок-схемы в этом проекте нет. Разрабатывают программисты, по своему опыту скажу, что мне от этих упрощалок одно неудобство. Любой нетривиальный workflow скорей всего превратится в графическое мессиво.

Попытавшись поискать информацию по этой теме я часто встреваю упоминание некоего apache airflow и очень похожих на него продуктов. У меня всё же ощущение, что это похожее, но не то.

Также очень интригующий проект это temporal.io. Я его пока не осилил, он кажется очень непростым и нужно найти время, чтобы понять, что это такое. Но буду благодарен, если кто-то уже его использовал и скажет - то ли это?

Видел, как для похожей задачи применяли n8n. Там работали не программисты, это nocode инструмент. Мне не понравился, но концептуально вроде это тоже решает данную задачу.

Не хочется сложных решений, т.к. команда небольшая и не супер-профессиональная. Хочется решение простое, понятное, но в то же время решающее насущные проблемы.

 ,

vbr
()

Поставил RHEL на ноутбук, вроде работает

Форум — Talks

Asus ExpertBook B9400, графика интел. Ранее на нём крутилась федора.

Поставил RHEL 9.2, при установке выбрал workstation. Вифи работает, внешний монитор работает, звук работает, suspend работает. Вроде wayland запускается. В целом мне понравилось. В отличие от федоры кажется нет всякого снап-хлама, шопов и прочей новомодной галиматьи. Пока с отрицательными моментами не столкнулся. Установка прошла гладко, инсталлятор такой же, как в федоре, установил с шифрованием диска. Ещё из приятного - разбивает диск по феншую, со свопом, без всякого zram и подобной галиматьи.

В общем такой обычный линукс без финтифлюшек, но с вейлендом. Когда я ставил федору, я несколько недель потратил на то, чтобы вычистить из системы всю гадость. И потом постоянно приходилось смотреть, чтобы не дай бог ничего не приехало. Пока что мне прям понравилось.

Использую developer лицензию. Предполагаю, что можно поставить Oracle Linux и получить то же самое без суеты с лицензиями, но не пробовал.

 

vbr
()

Есть ли рабочий рецепт автообновления дебиана?

Форум — General

Есть сервачок, хочу, чтобы он по ночам ставил апдейты и ребутался при необходимости. Пытался разобраться, но там чёрт ногу сломит, 50 скриптов, один другого вызывает, такое ощущение, что проще засунуть apt-get update && apt-get upgrade && test -e /var/run/reboot-required && reboot в какой-нибудь /etc/cron.daily/ (а ещё лучше в systemd timer).

Какой минимальный рецепт для сабжа, на свежеустановленном облачном образе? Без всяких там отсылок почты и прочего непотребства.

 ,

vbr
()

Postgres в контейнере с ограничением по памяти

Форум — Admin

Помогите найти внятную информацию, как настроить постгрес для работы в контейнере, чтобы укладывался в целевые показатели по ограничению памяти. К примеру сейчас запустил постгрес, он скушал 90 МБ. Далее в течение нескольких дней, исходя из опыта, его потребление вырастет примерно до 2 GB. При этом он вообще-то и сейчас нормально работает и было бы неплохо его ограничить, скажем, 100 МБ. Но если я просто поставлю лимит, то его грохнет OOM Killer через несколько часов.

В конфиге я вижу следующее (значения не по умолчанию):

listen_addresses = '*'
max_connections = 1000			# (change requires restart)
shared_buffers = 128MB			# min 128kB
dynamic_shared_memory_type = posix	# the default is usually the first option
max_wal_size = 1GB
min_wal_size = 80MB

Число соединений к базе со временем не растёт, с ней работает один сервис через одно соединение.

Насколько я понял, потребляется 128 MB на весь сервер + work_mem (4MB) на каждое соединение + temp_buffers (8 MB) иногда. Ещё может быть maintenance_work_mem (64 MB). Откуда тут гигабайты набегают - непонятно.

 ,

vbr
()

Фич реквест

Форум — Linux-org-ru

Добавьте в профиль два поля: CSS URL и Script URL. Если пользователь их заполняет, то ему в страницу добавляется <link rel=stylesheet href="${css_url}"> и <script src="${script_url}"></script>.

Мне кажется, это несложно и позволит людям легко добавлять маленькие (или не очень маленькие) твики под свой вкус. Хостить файлы и тд не надо, гитхаб у всех есть, просто URL. Это удобней аддонов к браузеру тем, что позволяет этим пользоваться с любого девайса.

 ,

vbr
()

Сисадмин оборонного предприятия получил условный срок за использование бесплатного ПО

Форум — Talks

https://www.securitylab.ru/news/540852.php

В 2022 году обвиняемый, будучи администратором информационной безопасности на предприятии, подключил свой рабочий компьютер к интернету и скачал из открытых источников программное обеспечение FreeRADIUS, которое он установил на сервере системы контроля доступа Cisco Secure ACS. Эта система была использована для организации безопасного доступа к информационным ресурсам предприятия, в том числе к объектам критической информационной инфраструктуры (КИИ).

Обвиняемый утверждает, что он действовал в интересах работодателя, так как система Cisco Secure ACS была устаревшей и дорогостоящей в обслуживании. Он заявляет, что он сэкономил предприятию почти 2,5 миллиона рублей за лицензию и поддержку программного обеспечения. Он также уверяет, что он предпринял все необходимые меры безопасности при подключении к интернету и использовании бесплатного ПО.

Начальник обвиняемого дал ему задание найти замену системе Cisco Secure ACS.

На мой взгляд всем айтишникам, имеющим отношение к госорганам, стоит искать новую работу. Система сошла с ума.

 

vbr
()

Что будет, если сбросить МРТ на врага?

Форум — Talks

Как я понимаю, МРТ это катушка из сверхпроводника, залитая охладителем, который поддерживает температуру сверхпроводимости. При этом в эту катушку можно «закачать» довольно много энергии (но не бесконечно много, у сверхпроводника есть пределы тока, после которых он потеряет сверхпроводящие свойства).

Предположим мы взяли катушку, положили в бочку с жидким гелием и зарядили по максимуму. Итого мы имеем бочку, в которой куча энергии. Далее мы сбрасываем эту бочку на врага.

При разрушении бочки жидкий гелий выльется и окружающая среда начнёт нагревать катушку (альтернативно в конструкции бомбы может быть детонатор, который нагреет катушку). Когда катушка нагреется свыше температуры сверхпроводимости, она начнёт нагреваться от проходящего по ней тока, что ещё более повысит её сопротивление. Это в конечном счёте приведёт (при наличии достаточного объёма энергии) к испарению проводника. Вот что дальше произойдёт - я пока не понимаю. Вроде был только что был ток, неистово нагревающий плавящуюся катушку, а тут раз, катушка превратилась в пар, а с энергией тока что случилось? Пар будет служить проводником, в котором ток до конца будет крутиться, пока полностью не перейдёт в тепловую энергию? Не понятно.

Ну помимо этого ещё и жидкий гелий перейдёт в газообразное состояние, нагреваясь от этой странной парообразной катушки. Вероятно очень сильно расширится, и получится хлопок. Причём взрыв очень холодного газа. Даже интересно, как это будет выглядеть. Наверное будут ожоги-обморожения. Хотя точно не уверен. Ну от расширения в любом случае будут разрушения.

У NbN максимальная плотность (?) тока 5e7 A/см2. Т.е. если я правильно понял, то в провод площадью в квадратный сантиметр можно накачать ток в 50 млн амперов. Иными словами через сечение провода проходит 50 млн Кл/с. Как отсюда можно посчитать, сколько энергии выделится при переходе этого тока в тепло - я не осилил, буду благодарен, если кто-то подскажет.

В общем интересно - насколько такая бомба бахнет, в сравнение с традиционными вариантами? Понятно, что ядерная мощней, зато тут всё экологично. Хотя про воронки на месте больниц, где выходили из строя МРТ аппараты, я не слыхал, но может там недостаточно сильно накачивали катушки?

 сверхпроводимость,

vbr
()

Теряются пакеты

Форум — General

На сервере (виртуальной машине) иногда начинают теряться пакеты. Примерно через 2 недели аптайма это происходит. Если перезагрузить - то всё нормально начинает работать. Куда можно смотреть? На CPU нагрузка в целом есть, но не прям перегружено. Памяти свободной много. Причём пакеты на этой неделе начали теряться в пятницу вечером, вообще не похоже, что от какой-то особой нагрузки, нагрузка идёт в рабочие дни и часы.

Пытался мониторить через ps что работает в тот момент, когда теряются пакеты - закономерности не выявил.

Вообще сервер это нода кубернетеса.

Пакеты теряются пачками примерно раз в 30-40 секунд. То работают, то теряются. Вот типичная картина:

64 bytes from 10.160.3.160: icmp_seq=1 ttl=64 time=0.343 ms
64 bytes from 10.160.3.160: icmp_seq=2 ttl=64 time=0.338 ms
64 bytes from 10.160.3.160: icmp_seq=3 ttl=64 time=0.261 ms
64 bytes from 10.160.3.160: icmp_seq=4 ttl=64 time=0.252 ms
64 bytes from 10.160.3.160: icmp_seq=5 ttl=64 time=0.265 ms
64 bytes from 10.160.3.160: icmp_seq=6 ttl=64 time=0.251 ms
...
64 bytes from 10.160.3.160: icmp_seq=24 ttl=64 time=0.241 ms
64 bytes from 10.160.3.160: icmp_seq=25 ttl=64 time=1.76 ms
64 bytes from 10.160.3.160: icmp_seq=26 ttl=64 time=0.252 ms
64 bytes from 10.160.3.160: icmp_seq=30 ttl=64 time=2318 ms
64 bytes from 10.160.3.160: icmp_seq=31 ttl=64 time=1294 ms
64 bytes from 10.160.3.160: icmp_seq=32 ttl=64 time=270 ms
64 bytes from 10.160.3.160: icmp_seq=33 ttl=64 time=0.249 ms
64 bytes from 10.160.3.160: icmp_seq=34 ttl=64 time=0.260 ms
...
64 bytes from 10.160.3.160: icmp_seq=65 ttl=64 time=0.245 ms
64 bytes from 10.160.3.160: icmp_seq=66 ttl=64 time=0.235 ms
64 bytes from 10.160.3.160: icmp_seq=67 ttl=64 time=0.234 ms
64 bytes from 10.160.3.160: icmp_seq=72 ttl=64 time=341 ms
64 bytes from 10.160.3.160: icmp_seq=73 ttl=64 time=6.38 ms
64 bytes from 10.160.3.160: icmp_seq=74 ttl=64 time=11.7 ms
64 bytes from 10.160.3.160: icmp_seq=75 ttl=64 time=12.8 ms
64 bytes from 10.160.3.160: icmp_seq=76 ttl=64 time=13.9 ms
64 bytes from 10.160.3.160: icmp_seq=77 ttl=64 time=12.8 ms
64 bytes from 10.160.3.160: icmp_seq=78 ttl=64 time=10.9 ms
64 bytes from 10.160.3.160: icmp_seq=79 ttl=64 time=0.266 ms
64 bytes from 10.160.3.160: icmp_seq=80 ttl=64 time=0.250 ms
...
64 bytes from 10.160.3.160: icmp_seq=106 ttl=64 time=0.280 ms
64 bytes from 10.160.3.160: icmp_seq=107 ttl=64 time=0.249 ms
64 bytes from 10.160.3.160: icmp_seq=111 ttl=64 time=1600 ms
64 bytes from 10.160.3.160: icmp_seq=112 ttl=64 time=576 ms
64 bytes from 10.160.3.160: icmp_seq=113 ttl=64 time=0.270 ms
64 bytes from 10.160.3.160: icmp_seq=114 ttl=64 time=0.267 ms
...
64 bytes from 10.160.3.160: icmp_seq=142 ttl=64 time=10.9 ms
64 bytes from 10.160.3.160: icmp_seq=146 ttl=64 time=811 ms
64 bytes from 10.160.3.160: icmp_seq=147 ttl=64 time=18.6 ms
64 bytes from 10.160.3.160: icmp_seq=148 ttl=64 time=11.9 ms
...
64 bytes from 10.160.3.160: icmp_seq=187 ttl=64 time=4.23 ms
64 bytes from 10.160.3.160: icmp_seq=188 ttl=64 time=0.250 ms
64 bytes from 10.160.3.160: icmp_seq=192 ttl=64 time=1051 ms
64 bytes from 10.160.3.160: icmp_seq=193 ttl=64 time=27.0 ms
64 bytes from 10.160.3.160: icmp_seq=194 ttl=64 time=13.4 ms

Иногда время отклика повышается до 10 мс. Вроде бы это от скачкообразного роста нагрузки. Периодически запускается около 20 процессов, которые потребляют весь CPU, видимо это и влияет на пинг, с этим понятно и «претензий нет». Но вот потери пакетов - это не понятно.

Через iftop смотрел - скачкообразного роста трафика в этот момент не наблюдается, сетевой интерфейс не перегружен.

Куда можно копать? Хотелось бы разобраться.

 ,

vbr
()

RSS подписка на новые темы