powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / c# class для замера продолжительность события в наносекундах
25 сообщений из 106, страница 2 из 5
c# class для замера продолжительность события в наносекундах
    #37406997
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.DragonTestor1,

авторЕсли вычислить минимальное время прохождение пакета в ночное время (выбираем минимальное из тестов) до ADLS устройства и отдельно до ADSL модема, то можно вычислить расстояние между ними - вычитаем = (время до модема - время до роутера) * скорость света

Ты читаешь внимательно?

узел1: 2
узел2: 12
узел3: 78
узел4: 215

вычисли расстояние.

только нужен не обычный пинг

в случае когда загрузка сети минимальна
то 215-78 = 137 * на скорость электрического тока
реально скорость еще меньше из-за кодирование сигнала.


в теории я могу подключить разных людей, которые будут пинговать этот адрес с разных IP но находясь в этом городе
возможно я так как-то смогу уменьшить погрешность
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37407040
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Testor1]
Ну если у тебя есть свой человек, на пути к которому присутствуют все те узлы, которые есть на пути искомого хоста, то да, задача решаема, т.к. каждый из 6 промежуточных хостов ты можешь пропинговать в обе стороны.

Но допустим имеем пути

я - 1 - 2 - 3 - 4 - 5 - 6 - аноним
я - 1 - 2 - 3 - 4 - 5 - 6 - друг

мы выясняем, что
"6 - друг" = 5 км
"6 - аноним" = 3 км

координаты друга известны.

чертим вокруг координаты друга круг радиусом 5 км. Узел 6 находится в любой точке этой окружности. А аноним находится на 3-километровой окружности от этой любой точки. Т.е. в итоге мы выяснили, что аноним находится в радиусе от 2 до 8 километров от друга в неизвесном от друга направлении. Не очень-то полезная информация. Это почти то же самое, что утверждение "они в одном городе".

А если же пути следующие:
я - 1 - 2 - 3 - 4 - 5 - 6 - аноним
я - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - друг

то это гораздо хуже. Собственно и выйдет - они в одном городе.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37407166
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Edd.Dragon]Testor1Ну если у тебя есть свой человек, на пути к которому присутствуют все те узлы, которые есть на пути искомого хоста, то да, задача решаема, т.к. каждый из 6 промежуточных хостов ты можешь пропинговать в обе стороны.

Но допустим имеем пути

я - 1 - 2 - 3 - 4 - 5 - 6 - аноним
я - 1 - 2 - 3 - 4 - 5 - 6 - друг

мы выясняем, что
"6 - друг" = 5 км
"6 - аноним" = 3 км

координаты друга известны.

чертим вокруг координаты друга круг радиусом 5 км. Узел 6 находится в любой точке этой окружности. А аноним находится на 3-километровой окружности от этой любой точки. Т.е. в итоге мы выяснили, что аноним находится в радиусе от 2 до 8 километров от друга в неизвесном от друга направлении. Не очень-то полезная информация. Это почти то же самое, что утверждение "они в одном городе".

А если же пути следующие:
я - 1 - 2 - 3 - 4 - 5 - 6 - аноним
я - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - друг

то это гораздо хуже. Собственно и выйдет - они в одном городе.


определив на какой атс стоит оборудование, я могу сузить поиск. центр радиуса - АТС. Ведь это АДСЛ.
Радиус не равномерно застрроен домами. Есть пустыри.
То есть не все так плохо :)

Вопрос - как на с# написать правильный пинг :)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37407660
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1...Нужно написать подобие ping-а


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

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

Для начала Вам необходимо решить задачу по перепрограммированию 8253 (комплект x86 семейства. на пнях по идеи должно быть всё вверх совместимо) - так называемый PIT (программируемый интервальный таймер). Там 3 канала (гейта). Идеально найти свободный (с минимальными привнесениями в систему) - но это вряд ли. На самых первых компах один гейт заведовал системным таймером (тот что 18 с хвостиком раз в секунду), второй для регенерации памяти и пдп (если не ошибаюсь). третий вроде как чего то там и звук(не помню уже - копайте да обрящите). Если под форточками сможете покрамсать какой либо из них - то вы справились с задачей.

Далее
1) перепрограммировать один из каналов 8253 на нужную частоту (там есть предделитель тактовой - собственно надо его сбросить в одын).
2) считываете показания.
3) посылаете пинг
4) принимаете пинг
5) считываете показания.
6) вычисляете время. оно равно второе показание, минус первое, минус шаги проца между считываниями и посылкой/приёмкой пакетов.
7) повторяете это энное кол-во раз с таймаутом успокоения, в разное время суток и недели.

собственно всё.
Но. (как же без них). Как правильно тут прозвучало - среда вытесняющая. Соответственно фазы 2,3,4,5 должны быть как можно ближе друг к другу по времени и в монопольном режиме.

но перед тем как делать, всё же подумайте - сможете ли вы померять 5 см. длины, резинкой?

удачи вам
(круглый)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37407738
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolobok0,

Понимаю вашу мысль ... и согласен с ней, но ... бывают не стандартные решения

Сложно написать пинг на C#, который дает точность в микросекундах ?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37407774
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1kolobok0,

Понимаю вашу мысль ... и согласен с ней, но ... бывают не стандартные решения

Сложно написать пинг на C#, который дает точность в микросекундах ?

Чем ближе - тем пинг будет меньше :)
но это не 100% утверждение
есть другие факторы, но все же
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37407918
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1...Сложно написать пинг на C#, который дает точность в микросекундах ?

если учесть что шарп исполняется под своей машиной, которую может прервать сборщик мусора (к примеру), кстати на несколько СЕКУНД - это реально.... то Вы сами ответите на свой вопрос :)

предположим что что такие казусы будут редки. тогда всё то же самое что я писал выше, за исключением программирования 8253 - чисто опрос его счётчиков. Либо системных, любой API функцией. Точность переключения задач - несколько десятков милисекунд. Если Вам это достаточно - то пробуйте.

но сдаётся мне Вы будете мерять 5 см. резиновым метром :)

(круглый)
ЗЫ
Можно попробывать натификэшен от сетевого уровня внутри программы - но опять же, в цепочку включаются обработчики ивентов.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408125
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1ну я на c++ писал взломщик RSA, но это было давно ...
уже не молод. не так легко переключаться между языками

Мерять с такой точностью довольно трудно. Вобщем, процессор
и твой исполняемый код под .net "шумит" с большей гранулярностью
чем наносекунда. Поэтому чтобы получить наносекунды нужно
делать очень-очень много измерений и находить арифметическое
среднее. Я щас не помню формул но предположим что измерений
надо будет сделать около сотни. Но тебе ждать будет скучно и
захочестся видеть решение "грубее" но быстрее.

Отсюда вобщем-то напрашивается вывод что для принятия решения
по твоей проблеме можно сделать 5-6 замеров с достигая точности милисекунд
и этого уже будет достаточно.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408163
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Сложно написать пинг на C#, который дает точность в микросекундах ?
Этот вопрос был успешно решен еще на первой странице ))
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408174
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ничего тебе среднее не даст, не говори глупости. Ты хоть 1000 раз обычной линейкой померь болт. Но разделив сумму на 1000 ты никак не получишь точность более 0.5 мм, которые ты с успехом получаешь и при 1 измерении (цена деления - 1мм, плюс ты ее визуально можешь разделить пополам и получить 0.5 мм). Цена деления в шарпе (если никто мешать не будет!!!) порядка 1 микросекунды. Всё.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408186
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon, один болт или очень много болтов?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408204
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

1000 пингов - это как раз 1000 замеров одного болта. Почему нам не достаточно одного замера? Потому что у нас нет стабильной линейки. У нас есть "шумящая" линейка, потому каждый замер одного и того же болта отличается друг от друга. В итоге среднее по 1000 замерам нивелирует шум нашей нестабильной линейки, а не увеличивает ее точность.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408227
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А много болтов - это проложить 100 идентичных сегментов сети друг за другом с репитерами. При этом гарантировать, что задержка сигнала на репитерах известна с достаточной точностью и ее разброс не больше требуемой точности измерения. Замерить прохождение сигнала по всей длине из 100 сегментов,вычесть время репитеров, разделить на 100. Такое измерение будет в 100 раз точнее, чем замерять отдельно взятый короткий сегмент. Опять таки все 99 репитеров и 100 сегментов должны показывать одинаковое время, а не болтаться в диапазоне в 1000 раз превышающем измеряемое время.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408239
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати о репитерах )))

между модемом клиента и модемом на АТС ведь не цельный кабель проложен )))
В итоге, если посчитать, что он цельный - получится, что между клиентом и АТС 200 км, а не 2 км )))
А что бы так не вышло, нужно знать из каких запчастей (сколько оптики, сколько обычного кабеля, сколько репитеров или свичей) состоит этот последний сегмент (остальные нас не интересуют, т.к. мы якобы знаем расположение АТС). А нам это все не известно. И никакими пингами мы не получим количество и время прохождения пингов, количество и тип кабеля. Так что, бинго недостижимо.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408844
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonTestor1ну я на c++ писал взломщик RSA, но это было давно ...
уже не молод. не так легко переключаться между языками

Мерять с такой точностью довольно трудно. Вобщем, процессор
и твой исполняемый код под .net "шумит" с большей гранулярностью
чем наносекунда. Поэтому чтобы получить наносекунды нужно
делать очень-очень много измерений и находить арифметическое
среднее. Я щас не помню формул но предположим что измерений
надо будет сделать около сотни. Но тебе ждать будет скучно и
захочестся видеть решение "грубее" но быстрее.

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

Почему среднее, а не наименьшее из серии тестов ? :)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408865
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.Dragon,

От устройства DSLAM - до модема - кабель максиму 10 км.
Иначе инет не будет работать
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37408878
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Edd.Dragon,

От устройства DSLAM - до модема - кабель максиму 10 км.
Иначе инет не будет работать
В смысле? Т.е. к чему это?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37409325
Bazist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а) Провести в цикле 1000 замеров
б) Замерять время за которое выполнился пункт "а" допустим 5 микросекунд
в) Разделить 5 микросекунд на 1000 получить, 5 нс, точное усредненное время.

Повысили точность измерения + Получили наносекунды.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37409332
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bazistа) Провести в цикле 1000 замеров
б) Замерять время за которое выполнился пункт "а" допустим 5 микросекунд
в) Разделить 5 микросекунд на 1000 получить, 5 нс, точное усредненное время.

Повысили точность измерения + Получили наносекунды.

Ну как бы это и есть сабжевый вопрос)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37410316
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bazistа) Провести в цикле 1000 замеров
б) Замерять время за которое выполнился пункт "а" допустим 5 микросекунд
в) Разделить 5 микросекунд на 1000 получить, 5 нс, точное усредненное время.

Повысили точность измерения + Получили наносекунды.

С ручника... )))

Пинг, он допустим 2 мс - один.
Тысячу пингов - 2000 мс (2 сек).
Делим на 1000 - получаем "в среднем 2мс".

А нам надо с точностью наносек. Т.е .получать, не 2 мс, а при замерах, а 2.0000005. И что бы вот это 5 было не шумом, а реальным замером.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37410319
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonТ.е .получать, не 2 мс, а при замерах, а 2.0000005.
Т.е. получать при замере не 2 мс, а 2.0000005 мс (или 0.002000005 с!!!)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37410357
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragonmayton,

1000 пингов - это как раз 1000 замеров одного болта. Почему нам не достаточно одного замера? Потому что у нас нет стабильной линейки. У нас есть "шумящая" линейка, потому каждый замер одного и того же болта отличается друг от друга. В итоге среднее по 1000 замерам нивелирует шум нашей нестабильной линейки, а не увеличивает ее точность.
(ух-ты. сабж продолжается. я и не заметил сорри)

Верно. Но статистика абстрагируется от точности измерительного прибора. Если взять к
примеру Performance Counters в MSWindows или v$*stat представления в RDBMS Oracle.
Большинство из них - это просто целочисленные счётчики событий. Их мгновенное
значение не имеет никакого смысла. Но если мы меряем текущее значение v1, ожидаем
некоторое время t1 и меряем еще одно v2 во время t2 и далее можем получать
усреднённые значения скорости генерации событий (v2-v1)/(t2-t1) с любой точностью.
Это дешёвая и эффективная методика оценки производительности систем
работающих под нагрузкой. Эффективнее я еще не видел.

Я не буду спорить по поводу "абсолютной погрешности" измерительного прибора
"цены деления" и прочих вещей. Но я ЗНАЮ как оценить или как СРАВНИТЬ две
системы имея грубый инструмент вроде сабжевого ping и т.п.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37410391
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНо статистика абстрагируется от точности измерительного прибора.
А вопрос то как получить желаемую точность.

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

А вопрос точности - это уже к ней. Я это понимаю ))
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37410394
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, ТС утверждает, что статистика ему и не нужна. Ему нужно минимальное измерение из замеров в разные моменты. По большому счету он прав.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37410396
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка:

А вопрос точности - это уже НЕ к ней.
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 2 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / c# class для замера продолжительность события в наносекундах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]