|
|
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.DragonTestor1, авторЕсли вычислить минимальное время прохождение пакета в ночное время (выбираем минимальное из тестов) до ADLS устройства и отдельно до ADSL модема, то можно вычислить расстояние между ними - вычитаем = (время до модема - время до роутера) * скорость света Ты читаешь внимательно? узел1: 2 узел2: 12 узел3: 78 узел4: 215 вычисли расстояние. только нужен не обычный пинг в случае когда загрузка сети минимальна то 215-78 = 137 * на скорость электрического тока реально скорость еще меньше из-за кодирование сигнала. в теории я могу подключить разных людей, которые будут пинговать этот адрес с разных IP но находясь в этом городе возможно я так как-то смогу уменьшить погрешность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:47 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
[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 - друг то это гораздо хуже. Собственно и выйдет - они в одном городе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 01:39 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
[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 - друг то это гораздо хуже. Собственно и выйдет - они в одном городе. определив на какой атс стоит оборудование, я могу сузить поиск. центр радиуса - АТС. Ведь это АДСЛ. Радиус не равномерно застрроен домами. Есть пустыри. То есть не все так плохо :) Вопрос - как на с# написать правильный пинг :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 09:08 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1...Нужно написать подобие ping-а тут уже выше написали - это мягко говоря глупость. Сточки зрения анализа удалённости - в сети нет фиксированных таймингов как таковых (как ни странно это звучит). Вы должны будете делать разные тесты, в разное время, разной интенсивности для выявления достоверности результата. По поводу замеров. Физически выжать из писюка можно, то что Вы хотите. Но шарп отдыхает. Как минимум Вам придёться писать на уровне ядра. Но даже сделав всё это - погрешность измерений будет плюс минус километр. Для начала Вам необходимо решить задачу по перепрограммированию 8253 (комплект x86 семейства. на пнях по идеи должно быть всё вверх совместимо) - так называемый PIT (программируемый интервальный таймер). Там 3 канала (гейта). Идеально найти свободный (с минимальными привнесениями в систему) - но это вряд ли. На самых первых компах один гейт заведовал системным таймером (тот что 18 с хвостиком раз в секунду), второй для регенерации памяти и пдп (если не ошибаюсь). третий вроде как чего то там и звук(не помню уже - копайте да обрящите). Если под форточками сможете покрамсать какой либо из них - то вы справились с задачей. Далее 1) перепрограммировать один из каналов 8253 на нужную частоту (там есть предделитель тактовой - собственно надо его сбросить в одын). 2) считываете показания. 3) посылаете пинг 4) принимаете пинг 5) считываете показания. 6) вычисляете время. оно равно второе показание, минус первое, минус шаги проца между считываниями и посылкой/приёмкой пакетов. 7) повторяете это энное кол-во раз с таймаутом успокоения, в разное время суток и недели. собственно всё. Но. (как же без них). Как правильно тут прозвучало - среда вытесняющая. Соответственно фазы 2,3,4,5 должны быть как можно ближе друг к другу по времени и в монопольном режиме. но перед тем как делать, всё же подумайте - сможете ли вы померять 5 см. длины, резинкой? удачи вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 12:36 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
kolobok0, Понимаю вашу мысль ... и согласен с ней, но ... бывают не стандартные решения Сложно написать пинг на C#, который дает точность в микросекундах ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 13:03 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1kolobok0, Понимаю вашу мысль ... и согласен с ней, но ... бывают не стандартные решения Сложно написать пинг на C#, который дает точность в микросекундах ? Чем ближе - тем пинг будет меньше :) но это не 100% утверждение есть другие факторы, но все же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 13:16 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1...Сложно написать пинг на C#, который дает точность в микросекундах ? если учесть что шарп исполняется под своей машиной, которую может прервать сборщик мусора (к примеру), кстати на несколько СЕКУНД - это реально.... то Вы сами ответите на свой вопрос :) предположим что что такие казусы будут редки. тогда всё то же самое что я писал выше, за исключением программирования 8253 - чисто опрос его счётчиков. Либо системных, любой API функцией. Точность переключения задач - несколько десятков милисекунд. Если Вам это достаточно - то пробуйте. но сдаётся мне Вы будете мерять 5 см. резиновым метром :) (круглый) ЗЫ Можно попробывать натификэшен от сетевого уровня внутри программы - но опять же, в цепочку включаются обработчики ивентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 14:31 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1ну я на c++ писал взломщик RSA, но это было давно ... уже не молод. не так легко переключаться между языками Мерять с такой точностью довольно трудно. Вобщем, процессор и твой исполняемый код под .net "шумит" с большей гранулярностью чем наносекунда. Поэтому чтобы получить наносекунды нужно делать очень-очень много измерений и находить арифметическое среднее. Я щас не помню формул но предположим что измерений надо будет сделать около сотни. Но тебе ждать будет скучно и захочестся видеть решение "грубее" но быстрее. Отсюда вобщем-то напрашивается вывод что для принятия решения по твоей проблеме можно сделать 5-6 замеров с достигая точности милисекунд и этого уже будет достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:56 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1Сложно написать пинг на C#, который дает точность в микросекундах ? Этот вопрос был успешно решен еще на первой странице )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:09 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
mayton, Ничего тебе среднее не даст, не говори глупости. Ты хоть 1000 раз обычной линейкой померь болт. Но разделив сумму на 1000 ты никак не получишь точность более 0.5 мм, которые ты с успехом получаешь и при 1 измерении (цена деления - 1мм, плюс ты ее визуально можешь разделить пополам и получить 0.5 мм). Цена деления в шарпе (если никто мешать не будет!!!) порядка 1 микросекунды. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:13 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, один болт или очень много болтов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:18 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
mayton, 1000 пингов - это как раз 1000 замеров одного болта. Почему нам не достаточно одного замера? Потому что у нас нет стабильной линейки. У нас есть "шумящая" линейка, потому каждый замер одного и того же болта отличается друг от друга. В итоге среднее по 1000 замерам нивелирует шум нашей нестабильной линейки, а не увеличивает ее точность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:25 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
А много болтов - это проложить 100 идентичных сегментов сети друг за другом с репитерами. При этом гарантировать, что задержка сигнала на репитерах известна с достаточной точностью и ее разброс не больше требуемой точности измерения. Замерить прохождение сигнала по всей длине из 100 сегментов,вычесть время репитеров, разделить на 100. Такое измерение будет в 100 раз точнее, чем замерять отдельно взятый короткий сегмент. Опять таки все 99 репитеров и 100 сегментов должны показывать одинаковое время, а не болтаться в диапазоне в 1000 раз превышающем измеряемое время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:32 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
кстати о репитерах ))) между модемом клиента и модемом на АТС ведь не цельный кабель проложен ))) В итоге, если посчитать, что он цельный - получится, что между клиентом и АТС 200 км, а не 2 км ))) А что бы так не вышло, нужно знать из каких запчастей (сколько оптики, сколько обычного кабеля, сколько репитеров или свичей) состоит этот последний сегмент (остальные нас не интересуют, т.к. мы якобы знаем расположение АТС). А нам это все не известно. И никакими пингами мы не получим количество и время прохождения пингов, количество и тип кабеля. Так что, бинго недостижимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:36 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
maytonTestor1ну я на c++ писал взломщик RSA, но это было давно ... уже не молод. не так легко переключаться между языками Мерять с такой точностью довольно трудно. Вобщем, процессор и твой исполняемый код под .net "шумит" с большей гранулярностью чем наносекунда. Поэтому чтобы получить наносекунды нужно делать очень-очень много измерений и находить арифметическое среднее. Я щас не помню формул но предположим что измерений надо будет сделать около сотни. Но тебе ждать будет скучно и захочестся видеть решение "грубее" но быстрее. Отсюда вобщем-то напрашивается вывод что для принятия решения по твоей проблеме можно сделать 5-6 замеров с достигая точности милисекунд и этого уже будет достаточно. Почему среднее, а не наименьшее из серии тестов ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 23:29 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, От устройства DSLAM - до модема - кабель максиму 10 км. Иначе инет не будет работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 23:47 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1Edd.Dragon, От устройства DSLAM - до модема - кабель максиму 10 км. Иначе инет не будет работать В смысле? Т.е. к чему это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 23:54 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
а) Провести в цикле 1000 замеров б) Замерять время за которое выполнился пункт "а" допустим 5 микросекунд в) Разделить 5 микросекунд на 1000 получить, 5 нс, точное усредненное время. Повысили точность измерения + Получили наносекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 11:12 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Bazistа) Провести в цикле 1000 замеров б) Замерять время за которое выполнился пункт "а" допустим 5 микросекунд в) Разделить 5 микросекунд на 1000 получить, 5 нс, точное усредненное время. Повысили точность измерения + Получили наносекунды. Ну как бы это и есть сабжевый вопрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 11:17 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Bazistа) Провести в цикле 1000 замеров б) Замерять время за которое выполнился пункт "а" допустим 5 микросекунд в) Разделить 5 микросекунд на 1000 получить, 5 нс, точное усредненное время. Повысили точность измерения + Получили наносекунды. С ручника... ))) Пинг, он допустим 2 мс - один. Тысячу пингов - 2000 мс (2 сек). Делим на 1000 - получаем "в среднем 2мс". А нам надо с точностью наносек. Т.е .получать, не 2 мс, а при замерах, а 2.0000005. И что бы вот это 5 было не шумом, а реальным замером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 18:02 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.DragonТ.е .получать, не 2 мс, а при замерах, а 2.0000005. Т.е. получать при замере не 2 мс, а 2.0000005 мс (или 0.002000005 с!!!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 18:03 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.Dragonmayton, 1000 пингов - это как раз 1000 замеров одного болта. Почему нам не достаточно одного замера? Потому что у нас нет стабильной линейки. У нас есть "шумящая" линейка, потому каждый замер одного и того же болта отличается друг от друга. В итоге среднее по 1000 замерам нивелирует шум нашей нестабильной линейки, а не увеличивает ее точность. (ух-ты. сабж продолжается. я и не заметил сорри) Верно. Но статистика абстрагируется от точности измерительного прибора. Если взять к примеру Performance Counters в MSWindows или v$*stat представления в RDBMS Oracle. Большинство из них - это просто целочисленные счётчики событий. Их мгновенное значение не имеет никакого смысла. Но если мы меряем текущее значение v1, ожидаем некоторое время t1 и меряем еще одно v2 во время t2 и далее можем получать усреднённые значения скорости генерации событий (v2-v1)/(t2-t1) с любой точностью. Это дешёвая и эффективная методика оценки производительности систем работающих под нагрузкой. Эффективнее я еще не видел. Я не буду спорить по поводу "абсолютной погрешности" измерительного прибора "цены деления" и прочих вещей. Но я ЗНАЮ как оценить или как СРАВНИТЬ две системы имея грубый инструмент вроде сабжевого ping и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 18:25 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
maytonНо статистика абстрагируется от точности измерительного прибора. А вопрос то как получить желаемую точность. В том то и дело, что статистика в простейшем случае нам даст, грубо говоря, матожидание и разброс случ. величины. Поможет выявить закономерности в выборке. А вопрос точности - это уже к ней. Я это понимаю )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 18:45 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Кроме того, ТС утверждает, что статистика ему и не нужна. Ему нужно минимальное измерение из замеров в разные моменты. По большому счету он прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 18:48 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37410357&tid=1342771]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 529ms |

| 0 / 0 |
