URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 104899
[ Назад ]

Исходное сообщение
"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."

Отправлено opennews , 27-Сен-15 09:38 
Сетевые инженеры Google диагностировали (http://bitsup.blogspot.ru/2015/09/thanks-google-tcp-team-for...) и разработали патч (https://github.com/torvalds/linux/commit/30927520dbae2971829...) для ошибки, около десяти лет остававшейся неисправленной в TCP-стеке ядра Linux и приводившей к снижению эффективности передачи данных.  Проблема негативно влияет на приложения, в которых интенсивный трафик чередуется с короткими периодами приостановки передачи, например, подобное поведение характерно для некоторой активности в Web, в частности, для потокового вещания.


Ошибка присутствовала в реализации алгоритма контроля перегрузки Cubic, используемого по умолчанию во многих дистрибутивах Linux. Проблема заключалась в неверной обработке состояния приостановки передачи данных приложением, что  приводило к неверному трактованию параметров перегрузки (во время приостановки передачи информация о перегрузке не поступает, что воспринималось алгоритмом как незагруженность сети и возможность нарастить скорость передачи, хотя фактически полоса пропускания не изменилась). В итоге, когда приложение возобновляло передачу данных после паузы, отправка пакетов производилась слишком быстро, что не соответствовало реальной полосе пропускания и могло привести к потере пакетов и инициированию их повторной передачи, а как следствие потере скорости и задержкам в приложении.


URL: https://news.ycombinator.com/item?id=10285151
Новость: http://www.opennet.me/opennews/art.shtml?num=43047


Содержание

Сообщения в этом обсуждении
"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено grayich , 27-Сен-15 09:38 
как часто вообще исправляются ошибки подобного уровня?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено A.Stahl , 27-Сен-15 09:56 
Практически настолько же часто, насколько часто они обнаруживаются.
Да и вообще, какого "такого"? Мне кажется ты думаешь, что это была неимоверно важная и серьёзная ошибка. Но ведь это не так -- просто иногда, нечто при некоторых обстоятельствах отрабатывало несколько медленней чем могло. Досадная мелочь. Да в любом коде такой мелочёвки наберётся немерено -- где-то какое-то значение рассчитывается в цикле (хотя можно было бы посчитать и вне его), где-то в другом цикле проходит лишняя итерация с проверкой. Да, всё это снижает производительность на доли процента. Да, нехорошо.
Но это не повод с саркастически-грустным видом спрашивать:"как часто вообще исправляются ошибки подобного уровня?"...

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено AlexYeCu_not_logged , 27-Сен-15 10:06 
>Но это не повод с саркастически-грустным видом спрашивать:"как часто вообще исправляются ошибки подобного уровня?"...
>с саркастически-грустным видом

С чего б мне начать изучение магии разума и навыка ясновиденья, чтоб добраться в этих дисциплинах до продемонстрированных вершин мастерства?


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено user9090 , 27-Сен-15 10:13 
программист-прагматик. путь от подмастерья к мастеру

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 11:06 
"Идеальный код" Под редакцией Энди Орама и Грега Уилсона. Перевод с английского Н. Вильчинский и А. Смирнов. O'Reilly, Питер.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Павел Самсонов , 27-Сен-15 11:35 
О, как раз в тему :^)
brain.sh:

#!/bin/bash
OH=("Oh" "Uff" "Ou")
rm thought* > /dev/null 2>&1
read -p "Which umask will pick the brain to think? (022,027,007,077, etc..): " BRAIN_UMASK
umask $BRAIN_UMASK
for i in 1 2 3 4 5 6 7 8 9 10
do
    let ind=($i-1)%3
    echo thought$i
    echo "${OH[$ind]}, what a rain :!(" > thought$i
    sleep 1
done
echo "Ooh! See permissions on your thoughts!:"
ls -la thought*
sleep 10


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Легион , 28-Сен-15 09:42 
for i in {1..10}

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено тигар , 28-Сен-15 10:45 
>
 
> #!/bin/bash

.....
> for i in 1 2 3 4 5 6 7 8 9
>

вся правда о тех кто в шебанг пишет /bin/bash.


"Google исправил ошибку, около 10 лет присутствующую в..."
Отправлено arisu , 30-Сен-15 22:02 
> вся правда о тех кто в шебанг пишет /bin/bash.

к сожалению, тут совсем не баш виноват…


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено омонимус , 27-Сен-15 21:09 
Юра Борщ. Как я стал человеком.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 28-Сен-15 08:05 
Я тоже добавлю Совершенный код Макконнелла.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено grayich , 27-Сен-15 10:08 
вопрос был к тому, что гугл апять героями выставляют?


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено A.Stahl , 27-Сен-15 10:18 
Герои не герои, но в этот раз они умудрились принести ложку мёда, не опрокинув несколько цистерн с дёгтем. Пока они пиарятся таким образом -- у нет вообще никаких возражений.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено РОСКОМУЗОР , 27-Сен-15 11:14 
Иди "исправляй ошибки" и будешь героем. Не дай гуглю пиариться - пиарься сам!

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено jj , 27-Сен-15 12:07 
> Иди "исправляй ошибки" и будешь героем.

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


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 14:00 
хотелось бы ссылку

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 16:14 
http://www.opennet.me/opennews/art.shtml?num=22807

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Michael Shigorin , 27-Сен-15 17:03 
> подсистемы tty

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


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено angra , 27-Сен-15 21:09 
Ну как тут не вспомнить классику:
    — Правда ли, что шахматист Петросян выиграл в лотерею тысячу рублей?
    — Правда, только не шахматист Петросян, а футболист «Арарата» Акопян, и не тысячу, а десять тысяч, и не рублей, а долларов, и не в лотерею, а в карты, и не выиграл, а проиграл.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 18:49 
> вопрос был к тому, что гугл апять героями выставляют?

Когда б ты понимал, какие ресурсы Google тратит на тестирование СПО, от которого зависит его бизнес — то есть всего реально значимого СПО на GNU/Linux — ты б не задавал глупых вопросов.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено grayich , 28-Сен-15 10:04 
не нужно выдавать желаемое за действительное нося розовые очки
гугл удачно прикрывается ширмой спо, но только потому, что выгода в итоге больше.
а по сути - лишь слегка корректируют то спо, которое в итоге закрывают и выдают за свой продукт, например как хром

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено iPony , 28-Сен-15 11:40 
А у тебя клинический случай...
Как думаешь кто в основном разрабатывает открытый chromium?
Может ты еще думаешь что большинство СПО - это студенты бесплатно работающие по идеологическим причинам?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 28-Сен-15 13:30 
> не нужно выдавать желаемое за действительное

Вот и не выдавай.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено privation , 27-Сен-15 10:45 
очевидно период полураспада 10 лет

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Andrey Mitrofanov , 28-Сен-15 09:44 
> очевидно период полураспада 10 лет

Очевидно, что п.п. из одного события посчитать невозможно.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 29-Сен-15 01:13 
Бывает по-разному. По содержимому некоторых комментариев на опеннете можно совершенно точно установить, что автору 24 года.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено fidaj , 27-Сен-15 11:41 
это последствия принципа: "работает - не трожь!"

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено guest , 29-Сен-15 01:27 
в qsort из библиотеки libc только к 17 февраля 2008г разобрались как исправить

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено б.б. , 27-Сен-15 10:10 
пачч для Debian Stable будет?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено GotF , 27-Сен-15 10:24 
> пачч для Debian Stable будет?

Это не уязвимость. Это не ведёт к остановке ядра или сбоям в юзерспейсе. Разумеется, нет.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено б.б. , 27-Сен-15 11:01 
жжаль

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 17:27 
Debian - все для людей!

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 10:14 
Эта ошибка я так понимаю влияет на скачивание торрентов на низких скоростях?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 10:31 
Нет. А вот на раздачу в некоторых случаях может.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено анон , 27-Сен-15 11:41 
А разве торенты не по udp раздаются?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 12:43 
Основной протокол - на основе TCP. Есть альтернативный, на основе UDP, под названием µTP, но он не везде поддерживается.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено GotF , 27-Сен-15 18:07 
> Основной протокол - на основе TCP. Есть альтернативный, на основе UDP, под
> названием µTP, но он не везде поддерживается.

Ну, Transmission говорит, что он у большинства пиров. На глаз — порядка 95% и более.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 28-Сен-15 03:17 
> 95%

венда/utorrent


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено GotF , 28-Сен-15 18:42 
>> 95%
> венда/utorrent

А у остальных Linux/OSX/любая-прошивка-для-роутера и Transmission с тем же µTP. Не вижу причин не включать этот протокол в клиенте.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено admin , 28-Сен-15 04:02 
Если качать порнушку - да.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено анонимус , 28-Сен-15 11:00 
> Если качать порнушку - да.

Никогда не замечал когда качал, у вас так медленно льётся что вы успеваете проанализировать все соединения, дабы потушить поскорее огонь на шишке?


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 10:50 
Поделитесь, кто какие алгоритмы контроля перегрузки и где использует: рабочие станции, файлосервера.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 11:10 
Контроля перегрузки чего?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено sage , 27-Сен-15 12:58 
TCP Congestion Control.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Etch , 27-Сен-15 12:33 
Везде - net.ipv4.tcp_congestion_control=illinois

Хоть по проводам, хоть по воздуху - везде самые лучшие показатели на сегодня.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Ivan_83 , 27-Сен-15 13:54 
htcp для раздачи IPTV и спидтеста в локалке.
hybla для тяжёлых случаев когда RTT большое / потерь больше чем htcp переносит.

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


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 10:52 
А планировщик есть часть стека TCP? А какой у него RFC? А почему ошибка обработки статистики чего-либо, приравнивается к ошибке чего-либо?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено sage , 27-Сен-15 12:59 
> А планировщик есть часть стека TCP? А какой у него RFC? А
> почему ошибка обработки статистики чего-либо, приравнивается к ошибке чего-либо?

Нет, они не стандартизированы. Более того, многие алгоритмы слабо совместимы между собой. Т.е. cubic-cubic даст лучшую скорость, чем, например, yeah-cubic, но yeah-yeah выиграет.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено cmp , 28-Сен-15 00:16 
Так о том и речь, что новость - ошибка в TCP, а по факту он непричем

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 11:25 
Так она десять лет была не обнаруженной, я полагаю? Никто о ней не знал. А не так чтобы десять лет висел багрепорт и никто не мог ничего сделать.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 11:42 
Неуловимый Джо

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 11:52 
А как можно проследить попадание патча в основную ветку? В 4.3-rc2 его ещё нет...

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 11:59 
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next...
Уже в linux-next

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 12:10 
> https://git.kernel.org/cgit/linux/kernel/git/next/linux-next...
> Уже в linux-next

В 4.1-rc1 патч принят


"Google исправил ошибку, около 10 лет присутствующую в..."
Отправлено arisu , 30-Сен-15 22:21 
> В 4.1-rc1 патч принят

а в 4.2 нет. чудно ты, о мироздание.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 12:01 
Было бы здорово увидеть хоть какие-то цифры, пускай даже для очень частного случая

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 12:08 
+0.0001%

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 29-Сен-15 09:36 
Т.е. раздули тему непонятно из-за чего?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено amominous , 27-Сен-15 19:07 
42

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено soarin , 27-Сен-15 14:17 
Ещё бы 60533 и 12309 исправил бы кто.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 15:11 
см ниже, сорян, тредом промахнулся

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 15:11 
https://bugzilla.kernel.org/show_bug.cgi?id=12309
>Status:    CLOSED CODE_FIX

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено psrafo , 27-Сен-15 15:15 
Я что-то не понял, посмотрел код, а там только добавили функцию, и в структуру вписали, а где вызывают-то ? Где используется ? Я не силен в Си, просто не понял что там, может обяснит кто ?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Омномним , 27-Сен-15 15:50 
Мельком взглянул. Это поле структуры раньше было NULL, а теперь инициализируется адресом этой новой функции. В другом месте код читает это поле и если оно не NULL, то делает косвенный вызов функции.

static inline void tcp_ca_event(struct sock *sk, const enum tcp_ca_event event)
{
    const struct inet_connection_sock *icsk = inet_csk(sk);

    if (icsk->icsk_ca_ops->cwnd_event)
        icsk->icsk_ca_ops->cwnd_event(sk, event);
}


Своеобразная эмуляция виртуального метода с пустой реализацией по умолчанию.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено psrafo , 27-Сен-15 15:54 
Большое спасибо тебе, человек.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 15:43 
>Ошибка присутствовала в реализации алгоритма контроля перегрузки Cubic

Всегда использовал старый добрый Reno и не парился.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 15:56 
> Google исправил ошибку

Почему род мужской? :)


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 28-Сен-15 15:59 
Должен быть средний? ;)

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 27-Сен-15 16:24 
Что скажите про Data Center TCP (DCTCP)?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено абвгдейка , 27-Сен-15 17:34 
рекорд 26-летней ошибки в FreeBSD не побит даже гуглом :)

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Вареник , 27-Сен-15 22:09 
>> рекорд 26-летней ошибки в FreeBSD не побит даже гуглом :)

- В данном случае не явный баг, а недочет в логике работы в некотором case.
Заниматься подобным тонким тюнингом можно до бесконечности.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Andrey Mitrofanov , 28-Сен-15 14:26 
>Другими словами, пока вся кодовая база
> не будет перепроверена, нельзя говорить "наш линукс стабилен - пользуйтесь!".

Пользуемся же -- стабилен. ПОчему ты хочешь, чтобы сы не говорили об этом? За Венду бежишь, что ли? "Десяточка хороша"?

>Он настолько же "стабилен", насколько велико наше незнание о костылях внутри.

"Мы все умрём." Прошу, вы первые.


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено anonymous , 28-Сен-15 17:35 
Такой коммент выдает косность мышления.

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


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено count0krsk , 01-Окт-15 14:44 
Эммм.. Когда я в винде разгонял проц до 3.8 Ghz на воздухе, она стабильно давала БСОД.
Линух стабильно загружался, матерясь в консоль о косяках процессора, и давал запускать программы, которые иногда вылетали, но работали жеж! На 3.5 Линух не матерился, всё пахало норм на 99%. Винда 2008 сервер падала через раз.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено AnotherReality , 27-Сен-15 22:55 
Что за ошибка?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено абвгдейка , 28-Сен-15 09:17 
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/head/he...

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 28-Сен-15 15:22 
37 лет, опенбзд, да и в "оригинальной бзде" не было никакого бага - а так все верно, да.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Меломан1 , 28-Сен-15 03:26 
Этот патч пойдет прицепом к хрому или гугл собирается внедрить в ядро, вот что не понятно.
Если хром пытается получить доступ к /etc/passwd, то какие сюрпризы дарит этот патч?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено twilight , 29-Сен-15 11:55 
мальшик, ты адресом не ошибся?
башоркру в другом месте

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Меломан1 , 28-Сен-15 03:34 
Не-не! Помните еще были ускорители интернета для Windows?

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено нонэймус , 28-Сен-15 10:08 
Давно уже сижу на fq и yeah.

"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено iPony , 28-Сен-15 11:17 
Ссылку бы нормальную давали бы в новости, а не этот ваш RU

http://bitsup.blogspot.com/2015/09/thanks-google-tcp-team-fo...


"Google исправил ошибку, около 10 лет присутствующую в TCP-ст..."
Отправлено Аноним , 30-Сен-15 10:59 
хммм...и эти люди верят в непогрешимость (10 лет, КАРЛ) опсосов