Как стать автором
Обновить

Комментарии 38

Обращение в тех поддержку

мы составили обращение к службе сетевого обслуживания Linux,

Taking things upstream

we wrote a good summary of what we knew so far and what we supposed was happening, and reached out to the Linux networking maintainers

Список рассылки netdev — это не техподдержка.

Как правильнее в таком случае эту службу назвать?

Я бы перевёл это так:


Обращение к разработчикам

мы подытожили всё, что успели узнать, и предполагаемые причины происходящего, и обратились к сопровождающим сетевого стека Linux
«отправили сообщение в список рассылки», например

«служба» подразумевает, что кто-то там что-то делает по долгу службы. Там таких нету, мейнтейнеры поддерживают подсистему в рабочем состоянии, но это не техподдержка
Служба подразумевает работу по обслуживанию и поддержке в том числе. По долгу службы — это очень узкая трактовка более обширного значения термина. «Персонал, обслуживающий сетевые коммуникации», например. Это то же самое, что maintain (поддерживать, обслуживать). Я не хотел писать «тех. поддержка» изначально, просто не знал, как лучше выразить и взял сей термин в качестве общего понятия, ибо речь все о том же техническом обслуживании, причем в данном случае «networking maintainers» выступили в качестве именно технической поддержки, приняв обращение от пользователей системы и исправив недочет.
вам никто не мешает рассматривать maintainers как «персонал, обслуживающий...». но это немного не так.
Кто-то в своё свободное время прочёл ваш отчёт об ошибке, сказал «ох ты ж блин», и исправил. Это не обслуживание, не надо так.
Слово мейнтейнер — это не русское слово, и происходит оно от слова maintain — поддерживать, обслуживать, сопровождать и т.п. В данном контексте значение оно имеет именно такое. Пусть это не персонал в полном смысле слова, и теперь я могу понять почему, но это люди, которые именно обслуживают ядро, а не мейнтейнят:)))

Ребят, ну что вы накинулись на человека, он не знает особенности разработки ядра. Пояснили, и хорошо.

Это не служба. Более правильное название — список рассылки. Что они сделали — связались с мейнтейнерами ядра.


сопровождающему сетевой стек персоналу

Опять мимо. Мейнтейнеры — не персонал. Мейнтейнеры могут быть персоналом каких-либо огранизаций, но в ядре они просто сопровождающие/мейнтейнеры.

Я не знал тонкостей работы мейнтейнеров, и список рассылки для меня совершенно не был очевиден. Теперь звучит понятно, а то обратились к списку рассылки — это муть какая-то.
Обратились к мейнтейнерам, а о списке рассылки речь не идет, даже если и посредством него было сделано обращение.

А как исправили-то?

Надо же, две строчки всего. Ну тем не менее, уточню — этот самый fast path теперь обновляет переменную seq, которая раньше не обновлялась?

Как возможно, что TCP-ошибка, которая ведет к зависанию соединений, оставалась незамеченной на протяжении 24 лет?

Я дал ответ на этот вопрос, в своей статье: habr.com/ru/sandbox/149580
(за которую даже инвайт на хабре не получил)
И если, ОС не определяла правильную последовательность пакетов. То до приложения пользовательского уровня. Дойдёт такая строка: «World !Hello »

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

Скорее всего, (когда писал в текстовом редакторе) сделал форматирование и проставил, где следует точки и запятые. А потом, когда статью публиковал использовал ctrl+c / ctrl+v.
Форматирование сбилось. И я быстро, внёс исправления, какие увидел.
Может и заметил опечатки и ужас форматирования, после публикации. Но исправлять ничего не стал. т.к. После очередного исправления текста, (мне как новому участнику) приходится ждать дней этак 5, чтоб статью одобрил модератор.
Форматирование и опечатки, яб в норму привёл. Да, нужно было статью опубликовать. Ведь смысл статьи, не в её внешнем виде, а в том, какой смысл я старался донести.

И да) Мне тоже режет глаз «такие опечатки». Но, увы и ах. После каждого внесённого исправления статьи, ждать несколько дней проверки модератором, я не стал.
яб в норму привёл. Да, нужно было статью опубликовать. Ведь смысл статьи, не в её внешнем виде, а в том, какой смысл я старался донести.

Понимаете, когда так криво всё написано — и глаз спотыкается, и читать неудобно, и смысл ускользает. Где-то есть критическое число ошибок, после которого годная статья превращается в статью, которую неприятно читать (по содержанию, по-моему, у вас вполне годная статья, только почти в каждом предложении языковые ошибки). Так что в том, что вам не дали инвайт, можете винить, в частности, и ошибки, и опечатки.

Вообще, если на то пошло, у Вас с запятыми всё ОЧЕНЬ плохо. Например: «И я быстро, внёс исправления, какие увидел.» Пришлось несколько раз перечитывать, чтобы понять, что первой запятой там вообще не должно быть. Или вот это: «Форматирование и опечатки, яб в норму привёл.» Выглядит как обращение к неким «форматированию и опечаткам», потому что ещё одна лишняя запятая. Не говоря уже о каких-то «ябах», которкоторых привели в норму. Или первое предложение в Вашем сообщении: зачем ставить запятую перед скобками? И вообще, зачем обособлять скобками часть предложения, которая по правилам русского языка обособляется запятыми?

Такие тексты и на самом деле очень сложно читать. На простое их прочтение тратится в разы больше времени, чем должно, а иногда даже не хватает сил, чтобы дочитать. Потому что прочтение каждого предложения превращается в угадывание, что же на самом деле хотел сказать автор. И если один комментарии можно просто пропустить, а другой прочитать, если количество ошибок будет меньше критического, то у статьи есть все шансы «пролететь» целиком. Вы хотели что-то сказать, но форма высказывания привела к его, высказывания, пропуску и Вы остались неуслышанным.

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

Два пробела подряд превращаются в точку на большинстве смартфонов.

В статьях? Вообще легко. Пишешь в ворде, недожал шифт — точка вместо запятой, ворд сам поднял регистр после точки, а автор смотрит на клавиши.
Перевод крайне корявый. Из-за этого крайне сложно понять текст даже тем, кто по должен бы его понимать в соответствии с опытом работы.

У меня стойкое ощущение, что следующие фразы означали совсем иное у автора до перевода:
— «сбой прогнозирования заголовка быстрого пути»
— «попытка упростить код, удалив из него прогнозирование заголовков и связанные с ним пути файлов»
Давайте от стойких ощущений к более явным фактам. Если знаете, как правильно эти фразы должны быть переведены — поделитесь. Исправлю, не вопрос. Я не разработчик ядра Linux, могу в этой области что-то не знать. Лично мне эти моменты были прекрасно понятны на технологическом уровне, а вот в формулировках мог и ошибиться.
Данная оптимизация актуальна и по сей день: относительно недавняя попытка упростить код, удалив из него прогнозирование заголовков и связанные с ним пути файлов, потерпела неудачу по причине снижения производительности.

Было


² This optimization is still relevant today: a relatively recent attempt to remove the header prediction code and associated fast paths to simplify the code was reverted on performance regression grounds.

Извините, но раз взялись, то не говорите, что не сдюжили
И ещё — в оригинале не «пути файлов», а вполне “fast path”, что означает механизм упрощенной обработки пакета для более быстрой обработки
Прогнозирование заголовков — это тоже пять. Так, извините, не переводят. Хотя бы «предсказание» лучшее слово, а может и вовсе построение фразы надо переделать


— «сбой прогнозирования заголовка быстрого пути»

Тоже с коллегой соглашусь, что это не сбой предсказания, а скорее «неудачное предсказание» (по аналогии с бранч предикшн в процессорах)

У меня вопрос к знатокам. Что вообще имеется в виду в оригинале под "header prediction"?
У меня ощущение после гугления, что это про упрощённый анализ заголовков пакета для принятия решения по какому пути его пустить: slow vs fast.


И prediction здесь состоит в том, чтобы минимальными проверками угадать и значение прочих заголовков пакета.


Верно?


Если я верно понял суть, то возможно и переводить надо без слова предсказание/прогнозирование вообще. Если это не устоявшийся термин конечно.


Получится:
"header prediction code" -> "упрощённая классификация пакетов" (на быстрый путь/медленный путь)
"failed fast path’s header prediction" -> "ошибочно послали пакет по быстрому пути" (в контексте) или "ошибочная маршрутизация пакета по быстрому пути"...

Извините за тон.


Во-первых я ни разу не переводчик. Возможно я придираюсь местами.


Давайте первый переведённый абзац разберём.


  1. we provide each developer with a writable database snapshot
    мы обеспечиваем каждого разработчика перезаписываемыми снимками базы данных


    Если без контекста, то перевод слова writable (перезаписываемый) верный.
    Но в английском была однозначность: database snapshot with write access.
    А в русском создается второе значение, где сам снимок БД перезаписывают для каждого разработчика в процессе обеспечения его этими снимками.
    И мне при первом прочтении увиделось вот это искаженное значение.


  2. These snapshots are updated daily through a pipeline that involves… step1… step2… step3
    Обновление при этом происходит ежедневно в виде конвейера, который включает… step1… step2… step3


    Как-то не по-русски этот "конвейер" тут. Хотя дословно слово верно переведено.
    Возможно потому что часто в русском оставляют кальку "пайплайн". А может было бы ещё лучше превратить во что-нибудь вроде "последовательность шагов". Или вообще переформулировать без перевода этого слова. "Обновление состоит из этапов/шагов".


  3. copy-on-write при переводе исчезло. Не уверен как правильно и понятно перевести.


  4. немного непоследовательно описание данных пайплайна: "данные среды", потом "датасет" передающийся "на серверы базы данных".



.....


===================================


Давайтея попробую сам эту лямку потянуть.


Оригинал:


As part of our standard toolkit, we provide each developer at Skroutz with a writable database snapshot against which she can develop. These snapshots are updated daily through a pipeline that involves taking an LVM snapshot of production data, anonymizing the dataset by stripping all personal data, and transferring it via rsync to the development database servers. The development servers in turn use ZFS snapshots to expose a copy-on-write snapshot to each developer, with self-service tools allowing rollback or upgrades to newer snapshots.

Ваш перевод:


Здесь в Skroutz в составе нашего стандартного набора инструментов мы обеспечиваем каждого разработчика перезаписываемыми снимками базы данных, которые он использует в разработке. Обновление при этом происходит ежедневно в виде конвейера, который включает формирование LVM-снимков данных производственной среды, анонимизацию этого датасета путем удаления всей личной информации и его последующую передачу через rsync на серверы базы данных разработки. Серверы, в свою очередь, предоставляют ZFS-снимок каждому разработчику вместе с инструментами, позволяющими выполнять переход на новые снимки или делать откат к старым.

Мои правки по вашему переводу:


Здесь в Skroutz частью нашего стандартного набора инструментов является обеспечение каждого разработчика снимками базы данных с возможностью записи, которые он использует в разработке. Обновление при этом происходит ежедневно в виде пайплайна, который включает формирование LVM-снимков производственной базы данных, анонимизацию этих данных путем удаления всей личной информации и их последующую передачу через rsync на серверы базы данных разработки. Серверы, в свою очередь, предоставляют ZFS-снимок с копированием при записи каждому разработчику вместе с инструментами, позволяющими выполнять переход на новые снимки или делать откат к старым.

И всё ещё хочется это переписать, сделав предложения более простыми, без сложноподчинённых (а-ля художественный, но для технического текста):


У нас в Skroutz есть стандартный набор инструментов для разработчиков. Частью набора является личный снимок производственной базы данных с возможностью локальной записи. Обновления происходят ежедневно путём создания LVM-снимка производственной базы данных, анонимизации этих данных путем удаления личной информации, а также и их последующей передачи через rsync на серверы базы данных разработки. Серверы, в свою очередь, предоставляют каждому разработчику ZFS-снимок с копированием при записи вместе с инструментами, позволяющими выполнять переход на новые снимки или делать откат к старым.
1. С перезаписываемыми соглашусь, нюанс, можно исправить на возможность перезаписи для точности.

2. Пайплайн как раз не по-русски, а значение у пайплайн — трубопровод. Конвейер — это устоявшийся термин в среде разработки и значение у него вполне себе понятное. Хотя мне изначально оно тоже не очень заходило, привык. Это программирование, тут много подобных слов и выражений, которые обывателю могут показаться странными и «не по-русски звучащими». Можете поискать по тому же поиску CI/CD-конвейер.

3. Copy-on-write исчезло, потому что болталось лишним. ZFS-снимок сам по себе подразумевает этот термин в своем техническом смысле.

4. Делается снимок среды (ее данных) — обрабатывается датасет (набор этих снимков данных) — передается на серверы. Что тут непоследовательного. Если слово датасет не нравится, просто писать данные несколько раз подряд будет совсем неуклюже, а датасет тоже домашний термин в программировании.

Отдельно по прогнозированию заголовка — это именно прогнозирование (термин очень распространенный в области ПО, погуглите на досуге), а не предсказание (из области шаманов и провидцев).

Вот ссылка www.freesoft.org/CIE/RFC/1323/17.htm
Здесь более-менее про предикшен расписано. Может это и не такое прям прогнозирование, как в моделях МО, например, но суть та же. Задается вопрос «является ли сегмент (пакет) следующим в последовательности?» Отсюда делается вывод и соответствующая обработка.

А вот еще точнее картинка faculty-web.msoe.edu/yoder/cs2911/lab1res/Lab1Example.pdf
Тут вообще вопросы отпадают.

Правка по датасету — не набор снимков данных, а набор данных снимка.

:) Настаивать не буду. Я не технический переводчик ни разу.


По прогнозированию у меня отдельный пост есть тут в комментах.


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

Можете поискать по тому же поиску CI/CD-конвейер.

в моем окружении никто не говорит конвейер — это выглядит как заумь, которая может быть в формальной документации для госорганов. В народе говорят пайплайн — и все понятно. И если уж докапываться — либо конвейер и "набор данных", либо "пайплайн" и "датасет".


  1. Copy-on-write исчезло, потому что болталось лишним. ZFS-снимок сам по себе подразумевает этот термин в своем техническом смысле.

нет, не подразумевает. Молодец, Вы исказили смысл


Отдельно по прогнозированию заголовка — это именно прогнозирование (термин очень распространенный в области ПО, погуглите на досуге), а не предсказание (из области шаманов и провидцев).

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

Только production в данном контексте не «производственная», а промышленная. По аналогии с промышленной эксплуатацией, например.

С остальным согласен :)
«сбой прогнозирования заголовка быстрого пути»

Если память не изменяет, то скорее всего тут имеется введу изменение заголовка TCP пакета. Т.к. когда начинается обработка TCP пакета, то первым делом в сетевом стеке определяется, как его следует обрабатывать. По «slow_path» или по «fast_path». Почти все пакеты обрабатываются по «быстрому пути». В функции tcp_rcv_established. В этой функции, решение, о том следует ли попасть в «slow_path» определяется на основании указанного времени отправки последнего пакета сервером tp->rx_opt.rcv_tsval. TP- это структура tcp соединения. Вообще, можно формировать любые пакеты tcp с любым временем (таким чтоб пакеты не отбрасывались при проверки), играться с значениями syn ack urg в пакетах. И тогда, можно увидеть далеко не "зависание соединения"
Я выше накопал пару полезных ссылок для более точного понимания header prediction. Если с английским дружите — обратите внимание.

Вот бы кто-то ещё отладил похожую мистику с подвисанием соединений WireGuard. Это точно не данный баг, к сожалению, потому что там UDP. (Судя по tcpdump, пакет от клиента приходит на сервер, сервер на него отвечает, но до клиента ответ не доходит. При этом похоже, что теряются пакеты от сервера исключительно с порта WireGuard сервиса на порт WireGuard клиента — пакет отправленный ручками с другого порта сервера на тот же порт клиента доходит нормально. Перезапуск клиента через wg syncconf приводит к смене порта клиента и всё снова работает. До подвисания соединения по нему тоже успевают гигабайты набегаться, и случается это не каждую неделю, так что отлаживать сложновато.)

Спасибо за информацию. То-то я думаю, что WG еще не готов к массовому распространению )

Я не думаю, что это проблема WG, примерно как в статье это была не проблема rsync.

В inetd была бага 10 лет дающая DoS и норм :)

Припоминаю (видимо) аналогичный случай с нашей "полковой кобылой": ~10 лет назад (до докера) была своя мини-ферма для CI, где сборочные chroot-ы подтягивались/синхронизировались rsync-ом. И вот rsync иногда действительно подвешивался, то только при работе на серверах самой фермы (10G на локальном свиче). На рабочих станциях (с 1G) воспроизвести не смогли, поэтому грешили на сферу и/или свичи...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий