netch80: (Default)
[personal profile] netch80
Из Infiniband Architecture Specification:


When initially powered up or reset, the value of all counters contained in PortCounters on all ports of a node shall be set to zero. During operation, instead of overflowing, they shall stop at all ones. At any time, writing (Set) zero into a counter shall cause the counter to be reset to zero.


Это - остановка по достижению предела, сброс только в ноль, отсутствие атомарного чтения и сброса - сделано одинаково и для 32- и для 64-битных счётчиков, только предел разный.
Вопрос: кто может мне объяснить глубокий смысл такого решения?

Date: 2012-04-03 02:12 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Не парься, IB - не жилец.

Date: 2012-04-03 03:44 pm (UTC)
From: [identity profile] netch80.livejournal.com
А вот это уже неправда. Для целей HPC или сверхбыстрых подключений NAS сейчас ему нет альтернативы.
Ethernet не даёт даже отдалённого приближения к его возможностям.

Date: 2012-04-03 03:53 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Он не в этом смысле неживой. А в том, что он настолько редко и мало кому нужен, что и оборудование очень дорогое и поддержка драйверов у него слабая.

Date: 2012-04-03 05:43 pm (UTC)
From: [identity profile] netch80.livejournal.com
В сумме всех IT миров, где среди техники преобладают автомобильные инжекторы и смартфоны, а основная масса программистов пишет программы учёта старых портянок на C#, я с тобой согласен.

Но в нашем частном случае IB не просто нужен - он неизбежен.

Date: 2012-04-04 06:57 pm (UTC)
From: [identity profile] skolk.livejournal.com
А чем тебе PCI Express не угодил? Коммутаторы существуют. Или это zSystem? ;)

Date: 2012-04-05 09:31 am (UTC)
From: [identity profile] netch80.livejournal.com
Нет, это HPC узлы.
PCI Express хороша когда надо подключить GPU с соседнего узла на шасси, но не когда надо связать 5K узлов в одну сеть.

Date: 2012-04-03 05:48 pm (UTC)
From: [identity profile] gul-kiev.livejournal.com
Могу предположить, что остановку на всех единицах сделали из соображений "лучше не знать, сколько потеряно байт, чем не быть уверенным, сколько кругов сделал счётчик". Иначе, зная периодичность съёма показаний счётчика, злоумышленник может сделать вид, что было всего пара байт, хотя на самом деле был целый круг. Если же будет остановка на всех единицах с известной периодичностью опроса, будет однозначно понятно, что слишком много, и нужно уменьшать цикл опроса. Например, электросчётчику в квартире логичнее останавливаться на всех единицах, чем мотать кругами.

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

Хорошо, если это самая большая их лажа. :)

Date: 2012-04-03 07:32 pm (UTC)
From: [identity profile] netch80.livejournal.com
> Например, электросчётчику в квартире логичнее останавливаться на всех единицах, чем мотать кругами.

Практически известные мне счётчики делают таки круг через ноль. У меня дома был такой переход. Ну а против злоумышленников решение очевидно и известно всем, кто работает со счётчиками - снимать показания чаще, чем может быть полный круг (а лучше - чаще, чем 1/4 полного круга).
Кстати, старые счётчики имели только 4 цифры значений в кВт*ч, а переполнить 10 тысяч было ещё реально в средней квартире - всего-то сделать провода потолще и постоянные ~50A наберут это значение за месяц, а за два можно и на стандартных входных 25 ампер. Новые ставят не менее чем на 5, а то и на 6 цифр, и такой проблемы уже нет.
А с новыми технологиями и удалённым съёмом показаний - можно хоть раз в час снимать.

> Ну а отсутствие атомарного чтения и сброса (либо вычитания) - то, что лишает смысла всю затею.

Во-во, и это тоже. Если бы запись значения в счётчик вычитала его из показаний (или прибавляла - неважно, если записываемое полноразмерное), то можно было бы смириться тем, что реальный счётчик был бы где-то в софте, и ничего бы не терялось.

> Хорошо, если это самая большая их лажа. :)

Там чудес хватает. Но в целом технология полезная.

Date: 2012-04-04 09:50 am (UTC)
From: [identity profile] netch80.livejournal.com
Кстати, вместо останова счётчика можно было бы сделать однобитовый флаг события перехода счётчика через 0, который ставится железом на каждом переходе (независимо от того, что в нём было) и сбрасывается софтом по явному указанию.

Date: 2012-04-04 10:20 am (UTC)
From: [identity profile] gul-kiev.livejournal.com
Да, я тоже подумал про overflow flag.
Это полумера, т.к. всё равно не даст возможности быть уверенным в том, что всё хорошо и ничего не потеряли, но с ним было бы точно лучше, чем останавливаться на uint_max.
А наиболее правильным было бы иметь и overflow flag, и атомарность чтения/обнуления. Либо overflow flag плюс возможность вычитания. Тогда в софте можно было бы следить за тем, чтобы флаг не взводился, потому что если он взвёлся, уже ни в чём нельзя быть уверенным.

Date: 2012-04-06 04:05 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Такой флаг уже есть — старший бит счётчика. Вот что сбросить только его нельзя — это недоработка.

Date: 2012-04-04 07:08 am (UTC)
coctic: (Default)
From: [personal profile] coctic
А там и 64-битные появились? Раньше вроде были только 32-битные, которые могли остановиться за пять минут при хорошей нагрузке, что их совершенно обесценивало. 64-битные переполнить совсем другое время занимает.

Date: 2012-04-04 09:27 am (UTC)
From: [identity profile] netch80.livejournal.com
> А там и 64-битные появились?

Через libibmad. Потому что через sysfs видны только 32-битные.

> которые могли остановиться за пять минут при хорошей нагрузке

Это ты на 100Mbit/s считаешь. А на скоростях Infiniband: на QDR (как на Графите) - 4.3 секунды, а на больших - ещё быстрее.
А отсутствие атомарного вычитания приводит к тому, что надо снимать и сбрасывать раза 2 в секунду, ну а сколько пролетит за время между чтением и сбросом - ХЗ.

Date: 2012-04-04 09:33 am (UTC)
coctic: (Default)
From: [personal profile] coctic
А я только через sysfs и смотрел, и пять минут - это не подсчет, это то, что я вживую видел. Но кстати, если 32 бита переполняются через 4 секунды, то 64 - больше чем за 500 лет, если я правильно посчитал, и проблема, в общем-то, этим снимается. Вопрос только в получить эти значения.

Date: 2012-04-04 09:35 am (UTC)
From: [identity profile] netch80.livejournal.com
64 - да, даже если считать на 10GB/s (это около верха нынешних стандартов) то получается переполнение за 58 лет, и если такие счётчики есть, то будут использоваться именно они.
Текущее испытание как раз и состоит в проверке, что 64-битные счётчики есть на всех доступных шелезяках.

Date: 2012-04-04 09:40 am (UTC)
coctic: (Default)
From: [personal profile] coctic
Интересно, а когда появились 64-битные. Ведь проблема-то далеко не сегодняшняя, неужто те, кто писал этот стандарт, сразу не прикидывали, а можно ли будет их счетчиком вообще пользоваться.

Date: 2012-04-04 01:20 pm (UTC)
From: [identity profile] netch80.livejournal.com
Я смотрю на спецификацию архитектуры от 2007 года, в ней есть 64-битные счётчики, но они необязательны к реализации.
http://www.afs.enea.it/asantoro/V1r1_2_1.Release_12062007.pdf
пункт 16.1.4.11

Date: 2012-04-04 01:54 pm (UTC)
coctic: (Default)
From: [personal profile] coctic
Угу, я уже с оф. сайта скачал ее же, она последняя.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 7th, 2026 10:51 pm
Powered by Dreamwidth Studios