2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение16.09.2022, 11:43 
Заслуженный участник
Аватара пользователя


16/07/14
9150
Цюрих
Как всегда, когда встает вопрос "какое определение использовать", нужно сначала ответить на другой вопрос - что вы собираетесь делать с ответом?
Evgkegkis в сообщении #1564777 писал(а):
Вопрос: какая, в среднем, скорость была в данной ситуации?
Можете привести причины, почему ответ $42$ не подходит?

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение16.09.2022, 18:01 
Заслуженный участник


24/08/12
1053
Evgkegkis в сообщении #1564777 писал(а):
Не знаю как вам точнее ответить, поэтому постараюсь уточнить ситуацию:
Это 5 клиентов, которые фактически получили такой объем данных за такое время. Вопрос: какая, в среднем, скорость была в данной ситуации?
Задача недоопределена, так что ответ может быть каким угодно.
На вашей маньере, возьмем такие числа:
1 поток: Передано 7MB за 3 секунд
2 поток: Передано 8МB за 100000 секунд.
Допустим для определенности, что эти передачи шли по потоков с постоянной скорости за эти времена, т.е. по первом потоке передача шла равномерно 3 секунды со скорости 7/3 MB/с, по втором потоке передача шла равномерно 100000 секунд со скорости 8/100000 MB/с.
Пусть также допустим для определенности, что данные начали передаваться одновременно в момент t=0 - тоесть те 3 секунды которые данные передавались по первому потоку, и есть первые 3 секунды из 100 000 секунд которые данные передавались по второму (а то даже как перекрываются соответные времевые интервалы, у вас также не уточнено).

Теперь, если доопределять задачу по-разному, можно получить разные (очевидно верные!) ответы.

1. Допустим, что получатель принимал данные только первых три секунд при 0<t<3, и именно за этот период ищется средняя скорость.
Очевидно, за эти 3 секунды получатель получил 7+8/100000*3= 7.00024 MB, итого средняя скорость общего трансфера за эти три секунды была 7.00024 /3 = 2.33341(3) МB/с, или "средняя скорость в среднем на поток" (если ищется именно это что также неясно) есть (2.33341(3)/2) = 1.16670(6) МB/(с*поток).

2. Допустим, что получатель принимал эти данные всех 100 000 секунд при 0<t<100000, и именно за этот период ищется средняя скорость.
Для потока 2 все известно за этих 100 000 секунд. Однако, для потока 1 непонятно после первых три секунд что было? Может он продолжал передавать со скорости 7/3 МB/сек всех этих 99 997 секунд? Или, он передал 7MB, а остальных 99 997 секунд ничего не передавал? Или что-то другое??
В зависимости от того что предполагается для потока 1 распишем например два варианта (а при других предположений для потока 1, можно получить любые числа):
2.1. Поток 1 продолжал передавать со скорости 7/3 MB/сек остальных 99 997 секунд.
Тогда за все время 100000 секунд, получатель принял суммарно (7/3 MB/с*100000с + 8МB) = 233341.3(3) МB данных, средняя скорость общего трансфера по всех потоков была 2.33341(3) MB/сек, а "средняя скорость в среднем на поток" 2.33341(3)/2 = 1.16670(6) MB/(с*поток).
2.2. Поток 1 передал только 7MB первых 3 секунд со скорости 7/3 MB/сек , и потом не передавал ничего.
Тогда за все время 100000 секунд, получатель принял суммарно (7Mс + 8МB) = 15 МB данных, средняя скорость общего трансфера по всех потоков была 15/100000 = 0.00015 MB/сек, а "средняя скорость в среднем на поток" 15/100000/2 = 0.000075 MB/(с*поток).

Теперь должно быть очевидным, что ответ зависит от следующих предположений (и если их не уточнять, можно получать какие угодно бессмысленные числа):
- Что именно вычисляется, "средняя скорость общего трансфера вообще" размерности MB/с, или "средняя скорость в среднем на поток" размерности MB/(с*поток). Во втором случае, очевидно нужно еще и поделить среднюю скорость трансфера (по всех потоков), на количество потоков.
- Как взаимно перекрываются те времена, для которых в условии дана передача потоковых данных
- для тех интервалов что даны для потоков, считаем ли скорость каждого потока равномерной во времени
- Как перекрывается с этих времен "время получения данных", для которого именно получатель вычисляет соответную "среднюю скорость"
- Сколько считаем что передавалось (или не передавалось) по потоков, во временах для которых в условия задачи не сказано но все-таки "получатель получал", и они должны быть включены в рассчете соответной "средней скорости"

-- 16.09.2022, 19:45 --

Evgkegkis в сообщении #1564730 писал(а):
Мнение1: нужно сложить все мбит и разделить на все время: (10+8+5+10+20):(7+4+20+1+14)=53:46=1.15 Мбит/с
Мнение 2: Нужно вычислить скорость для каждого потока и выполнить усреднение скоростей: (10:7+8:4+5:20+10:1+20:14):5 = 3.02
Кстати.

"Мнение 1" соответствует следующим предположениям:
- Каждый канал передал свои данные, и ничего больше. Например потоки передавали свои данные по очереди, а в остальное время ничего не передавали (передача была НЕ параллельна) но это не обязательно; существенно то что каждый из каналов передал только "свое" количество данных и ничего больше. "Окно" приема получателя равно суммой всех времен в условии (поэтому и не важно на это время как перекрываются времена передачи потоков), и получатель за это время сумел получить всех данных из всех потоков. На отличие от другого случая, ищется "средняя скорость получения в общем по всех потоков", а НЕ "средняя скорость в среднем на поток" так как НЕ делим на к-во потоков; размерность величины MB/с.

"Мнение 2" соответствует следующим предположениям:
- Скорость каждого потока все время постоянна (при этом очевидно времевой интервал при который принимает получатель, и для которого он вычисляет среднюю скорость, не имеет значения); т.е. для достаточно длинного времени, по любому потоку передастся какое угодно количество данных если скорость потока не нулевая. Ищется не просто "средняя скорость получения в общем по всех потоков", а "средняя скорость в среднем на поток" так как делим на к-во потоков; размерность величины MB/(с * поток)

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение16.09.2022, 19:42 
Заслуженный участник


24/08/12
1053
Короче, определение скорости [количество изменения чего-то]/[время за которое изменилось] никто не отменял.
Тоесть в данном случае, по определению скорости нужно вычислять так [количество данных принятых суммарно по всех потоков за последних n секунд]/n где n - выбранное времевое окно в секундах.
Это и будет типа "мгновенная скорость" передачи данных.
Если предпочтительнее усреднять затухающе к прошлом (учитывать прошлые периоды но не с тем же а с меньшим весом), то можно использовать формулу например:
V = (1*[к-во данных принятых по всех п-в за последнюю секунду] + k[к-во данных принятых по всех п-в за предыдущую секунду]/n + k^2[к-во данных принятых по всех п-в за по-предыдущую секунду] + ....)/(1+k + k^2 + ...)
где 0<k<1 коеффициент "затухания-к-прошлом", а ряд обрывается через m членов (при "достаточно малом" k^m).
Это можно делать эффективно на очереди реализованной на кольцевом буффере; величину k и длину ряда выбрать наперед и суммарного веса (1+k + k^2 + ...) вычислить однажды предварительно.
Разумеется если нужна не просто "средняя скорость передачи" а "средняя скорость передачи в среднем на поток" то нужно делить еще и на количество потоков.

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение17.09.2022, 10:39 


15/09/22
17
Давайте я приложу файл, и задам вопрос - насколько корректен в нем расчет, относительно определений, в нем же используемых: ср.скорость на пользователя, и ср.секторная скорость.


ссылка на файл

Если не дает скачать - дайте знать пжл

Средняя пользовательская (Ue) скорость сектора 1 считается как $\frac{L 12}{M 12}$

Средняя пользовательская скорость(Ue) сектора2 считается как $\frac{L 13}{M 13}$

Cредняя секторная скорость сектора 1 считается как $\frac{L 12}{K 11}$

Средняя секторная скорость сектора 2 считается как $\frac {L 13}{K 11}$

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

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение17.09.2022, 11:56 
Заслуженный участник
Аватара пользователя


23/07/05
17976
Москва
Evgkegkis, Вы ужасно делаете ссылки. Такой способ годится только в случаях, когда адрес короткий. А длинный адрес приводит к большим неудобствам для читателей. Правильный формат такой:
Код:
[url=адрес]Пояснения.[/url]

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение17.09.2022, 17:12 
Заслуженный участник


24/08/12
1053
Evgkegkis в сообщении #1564811 писал(а):
Давайте я приложу файл, и задам вопрос
Ссылка требует логина в яндексе, которого у меня нет и не будет.
Но подумайте сами, "условия" вашей "задачи" не дают возможности ответить однозначно на простейший вопрос: какое суммарное количество информации, получил рецепиент в течении например, последних 100 секунд? (или 3, или 12 секунд; без значения) через всех потоков? И почему?
Поэтому, пока не будет большей ясности о чем идет конкретно речь, каких-нибудь "скоростей передачи" вычислять бессмысленно.

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение17.09.2022, 19:01 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Evgkegkis в сообщении #1564811 писал(а):
Давайте я приложу файл
manul91 в сообщении #1564843 писал(а):
Ссылка требует логина в яндексе, которого у меня нет и не будет.
Evgkegkis, Яндекс-диск позволяет расшаривать файлы так, чтобы по ссылке их можно было скачать, не авторизуясь. Не могу показать вам, куда там нужно ткнуть, но возможность такая есть точно.

 Профиль  
                  
 
 Posted automatically
Сообщение17.09.2022, 20:58 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
по следующим причинам:

- для коррекции ошибок, упомянутых в предыдущих сообщениях.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение19.09.2022, 14:47 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение19.09.2022, 16:51 
Заслуженный участник


24/08/12
1053
Evgkegkis в сообщении #1564811 писал(а):
Давайте я приложу файл, и задам вопрос - насколько корректен в нем расчет, относительно определений, в нем же используемых: ср.скорость на пользователя, и ср.секторная скорость.
Я правильно понимаю, что данные в столбцов $C$-$J$ отвечают последовательными интервалами времени длительности 1сек?
Например столбец $C$ определяет данные полученные юзерами (по соответными каналами) в интервале 9:00:00 - 9:00:01 утра, столбец $D$ определяет данные полученные юзерами в интервале 9:00:01 - 9:00:02 утра, ..... , столбец $J$ определяет данные полученные юзерами в интервале 9:00:07 - 9:00:08 утра?
Тогда короткий ответ - расчет полностью некорректен.
Evgkegkis в сообщении #1564811 писал(а):
Мое мнение, исходя из всего что выше было написано, данные расчеты некорректны относительно их определений
Нет, предоставленные данные дают возможности расчитать вполне корректные скорости на этом интервале из 8 секунд.
Более того, данные настолько подробны что можно посчитать даже как менялись скорости на этом интервале.

Почему рассчет в файле некорректен?
Короткий ответ: Потому что определение среднего: это "сумма однородных величин (в вашем случае, скоростей) поделенная на количество этих величин". И потому что ноль - число как все остальные, и его нужно третировать соответственно.

Развернутый ответ для понимания почему такой рассчет неправилен:

Вот подумайте насчет скорости только юзера 7 (из второго сектора).
Как рассчитать его скорость?
Что нам известно: что в интервале 8 секунд (с 9:00:00 до 9:00:08 утра) он получил суммарно 38Mb. Значит, его скорость можно (и нужно!) посчитать как $\frac{38Mb}{8sec} = 4.75 \frac{Mb}{sec}$.
Что такое "время седьмого юзера равно 6"???
Время на всех юзеров общее и одно и то же, они живут в одном и том же мире (общую теорию относительности пока не будем рассматривать). Интервал времени для всех юзеров известен и один и тот же, и он равен 8-ми секунд, с 9:00:00 до 9:00:08 утра (их скорости на этом интервале даже меняются и непостоянны, но это пока только усложнит дело, пока вы не разобрались еще как считать скорость в простейшем случае).

Почему вы не учитываете последние две секунды для юзера 7, и тем более по-разному не учитываете разные секунды для разных юзеров? Потому что "ячейки пустые", "юзер не получал данные" в этих двух секунд?
Но вот посмотрите, допустим данные для юзера 7 чуть-чуть незначительно изменились - в каждой из последних двух секунд, пусть он получал не 0Mb данных, а скажем по 0.0000000000001Mb каждую секунду.
Тогда входные данные для этого юзера в табличке, изменились несущественно (получил не 38MBit за этих 8 секунд, а 38.0000000000002Mbit) - но вы теперь по вашему "методу" будете вынуждены уже делить не на 6, а на 8 (ибо ячейки-то $I$ и $J$ для 7-ого юзера теперь "не пустые", "его время равно 8") - и вычисленная "скорость" для него по вашему "методу" перетерпит резкий скачок: опустится с 6.(3) Mb/сек, на 4.750 000 000 000 025 Mb/сек.

Входные данные изменились ничтожно (пренебрежимо мало) - а результат "вычислений" перетерпел резкое изменение.
То же самое получится с всеми вашими числами если вы заполните пустые ячейки для данных с пренебрежимо малыми (но все-таки ненулевыми) добавками - все "результаты" ваших якобы "средних" резко изменятся.
Хотя и входные данные практически никак не изменились.
Должно быть очевидно, что такой "рассчет" не может быть верным.

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение19.09.2022, 17:16 


15/09/22
17
Цитата:
Я правильно понимаю, что данные в столбцов $C$-$J$ отвечают последовательными интервалами времени длительности 1сек?

Да, верно понимаете

Цитата:
Почему вы не учитываете последние две секунды для юзера 7, и тем более по-разному не учитываете разные секунды для разных юзеров? Потому что "ячейки пустые", "юзер не получал данные" в этих двух секунд?

Юзер не получал данные.

В целом я все понял. Большое спасибо за подробный расклад и ответы. Очень помогло!

 Профиль  
                  
 
 Re: Как правильно вычислить ср.скорость нескольких потоков
Сообщение19.09.2022, 20:44 
Заслуженный участник


24/08/12
1053
Evgkegkis в сообщении #1565006 писал(а):
В целом я все понял. Большое спасибо за подробный расклад и ответы. Очень помогло!
Раз вы все поняли и данные у вас настолько подробны каждую секунду, то добавлю как примерно рассчитывать и "текущие скорости".

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

Тогда, "скорость юзера 7 в момент 9:00:03 утра" можно примерно определить как суммарные данные полученные юзером 7 в последних трех секунд между 9:00:00 и 9:00:03 утра, поделенные на этих же последних трех секунд времени за которого он их получил (тоесть (6+6+6)/3).
Потом чтобы получить скорость того же юзера 7 "в следующий момент 9:00:04 утра" (следующую секунду) - сдвигаем "трисекундное окно" на одну секунду вперед - и вычисляем суммарные данные полученные юзером 7 между 9:00:01 и 9:00:04 утра поделенные на этот интервал времени за которого он их получил (тоесть опять будет (6+6+6)/3).
Далее чтобы получить "скорость юзера 7 в момент 9:00:05 утра" (следующую секунду) - сдвигаем "трисекундное окно" на еще одну секунду вперед - и вычисляем суммарные данные полученные юзером 7 между 9:00:02 и 9:00:05 утра поделенные на этот интервал времени за которого он их получил (теперь уже будет (6+6+5)/3).
"Пустые ячейки" разумеется тоже нужно учитывать как нулями. Всегда единообразно делим на 3 - т.е. на ширину выбранного времевого окна (пользуем одно и то же времевое окно для всех юзеров, в каждом моменте времени).
Аналогично для всех остальных юзеров.

Потом, после того как нам известны все скорости юзеров "в момент 9:00:03 утра", можно их складывать и находить соответные посекторные и т.д. средние (разумеется, складываем скорости юзеров "для одного и того же "момента", вычисленные с одним и тем же окном) для 9:00:03 утра.
Аналогично для следующего момента 9:00:04 утра (только теперь разумеется берем скорости всех юзеров, расчетенные для того же самого следующего момента 9:00:04 утра).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group