forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.ARGUS

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 17.08.2016, 16:37
Alexey Korotkov
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Alexey Korotkov написал(а) к All в Feb 16 23:29:30 по местному времени:

Привет All!

Проблема: медленно передаются радиусом мелкие файлы.
Если взять binkd и через него залить файлы на radius - то скорость исчисляется сотнями файлов в секунду.
Если взять radius и через него заливать файлы на radius - то получается в среднем около 5-7 файлов в секунду. Если свернуть окно radius-а и при этом удачно сойдутся звезды, то может ускориться до 10-20 файлов/сек.
Вопрос: что такого умеет binkd, чего не умеет радиус? Как заставить радиус работать также быстро, как binkd ? (radius<=>radius).

На досуге пытался найти в исходниках что же тормозит процесс отправки, и нашел, что происходит задержка около 200 мс при вызове WSAGetOverlappedResult. Пошел в интернет и прочитал про параметр реестра TcpAckFrequency (НKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{интерфейс}). Попробовал - помогло. Но этот параметр нужно менять как минимум на стороне, на которую передаются файлы, чего делать крайне не хотелось бы. Тем более, что binkd работает без проблем и без изменения сетевых настроек ОС. Хотелось бы выставить какой-нибудь флаг/ограничение, и чтобы стало все быстро и красиво. Возможно такое?

Radius 4.010/январь 2005, binkd-mingw/1.0.1/w32, виртуалки win2003.

Alexey
--- GoldED+/W32 1.1.5-021109
Ответить с цитированием
  #2  
Старый 17.08.2016, 16:37
Vladimir Bakhvaloff
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Vladimir Bakhvaloff написал(а) к Alexey Korotkov в Feb 16 00:10:41 по местному времени:

А чегой-та у нас гpаф Korotkov-Рымникский все жpёт?..

Отвечая на письмо Alexey Korotkov => All [Вс 21 Фев 16]:

AK> Radius 4.010/январь 2005, binkd-mingw/1.0.1/w32, виртуалки win2003.

Для начала - не мучать виртуалки...
Для продолжения - взять Тау по-новее...

С выражением глубокого почтения - Vladimir...
> ------------------------------------------------------------
Windows 7 Ultimate x86 [version 6.1.7601] Service Pack 1
Taurus v.5.114.2013.19/Autumn/FastMM 4.991/DEBUG
--- System uptime is: 11:05:15.700 (max. - 27 day(s) 6:38:31.123)
Ответить с цитированием
  #3  
Старый 17.08.2016, 16:37
Vladimir Bakhvaloff
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Vladimir Bakhvaloff написал(а) к Alexey Korotkov в Feb 16 22:52:55 по местному времени:

О, Благоpодная Дама Alexey!!! Или я опять пива пЕpепил?..

Отвечая на письмо Alexey Korotkov => Vladimir Bakhvaloff [Вт 23 Фев 16]:

VB>> Вот сколько ни пытался повторить, ну ни разу такого не
VB>> было... :-(
AK> похоже что валится тот экземпляр, который отправляет.

VB>> Ну, попробуй взять
VB>> http://bakhvaloff.ru/Download/Taurus/Tau.160223.1842.7z
VB>> В каталоге WODebug - без дебаговой информации, должно жить
VB>> полегче...
AK> Даже с tcpackfrequency=1
^^^^^^^^^^^^^^^
А что это такое и с чем его едят?..

AK> что-то затыкается как будто этого параметра
AK> нет. Для сравнения: Чуток тюнингованный радиус (такая же версия отдает
AK> файлы)
AK> 23-Feb-2016 19:53:46 CONNECT To 192.168.0.212 #24554 (1:2/3)
AK> 23-Feb-2016 19:53:51 Disconnect from 192.168.0.212 - Complete (1:2/3)
AK> IN: 900 (11,700b) OUT: 0 (0b)
AK> Данный таурус:
AK> 23-Feb-2016 20:21:09 CONNECT To 192.168.0.212 #24554 (1:2/3)
AK> 23-Feb-2016 20:22:20 Disconnect from 192.168.0.212 - Complete (1:2/3)
AK> IN: 900 (11,700b) OUT: 0 (0b)

Лучше расскажи про "чуток тюнингованный радиус"...

VB>> Сомневаюсь, что такой "ликбез" тебе кто-то сможет провести...
VB>> :-D
VB>> Над тем, что есть сейчас работали, как минимум 6 человек...
VB>> Причём с совершенно разными подходами...
AK> Оптимистичненько.... :-(

Зато реальненько...

AK> Пока что с помощью тюнинга реестра добился быстрой отдачи на
AK> сторону, где внесены изменения в реестр. Не густо, но хоть что-то.
[ skipped ]
AK> файлов скорость падает до 22-26 файлов/сек) Может подскажете что может
AK> таким образом (см. на форму графика загрузки) тормозить процесс?

Рассчёты общих и/или частных размеров, времени, сжатия, вывод графики - что угодно...

Ладно... Пойду вешаться, Alexey... ;)
> ------------------------------------------------------------
Windows 7 Ultimate x86 [version 6.1.7601] Service Pack 1
Taurus v.5.114.2013.19/Winter/FastMM 4.991/DEBUG
--- System uptime is: 3:58:31.225 (max. - 27 day(s) 6:38:31.123)
Ответить с цитированием
  #4  
Старый 17.08.2016, 16:37
Alexey Korotkov
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Alexey Korotkov написал(а) к Vladimir Bakhvaloff в Feb 16 23:30:42 по местному времени:

Привет Vladimir!

23-Фев-2016 22:52, Vladimir Bakhvaloff -> Alexey Korotkov:

AK>> Даже с tcpackfrequency=1
VB> ^^^^^^^^^^^^^^^
VB> А что это такое и с чем его едят?..
Это ключ реестра, гугол расскажет в деталях. в кратце - система не будет ждать таймаута перед отправкой пакета подтверждения tcp-сессии (ack), то может ускорить обмен данными если удаленная система ждет ack чтобы продолжить передавать данные. актуально для ситуаций когда происходит обмен мелкими пакетами. как и везде, лекарство может навредить в некоторых случаях.

VB> Лучше расскажи про "чуток тюнингованный радиус"...
Я выкинул сканирование аутбаунда (периодическое и после окончания сессии) + убрал задерку при сканировании (вроде) файлбоксов. Зачем-то туда вставили sleep после сканирования (findnext) каждого файла, в результате чего получалась задежка при коннекте и в некоторых случаях она в итоге превышала таймаут установки сессии с логичным последующим ее (сессии) разрывом. Поделка для себя.

AK>> файлов скорость падает до 22-26 файлов/сек) Может подскажете что
AK>> может таким образом (см. на форму графика загрузки) тормозить
AK>> процесс?

VB> Рассчёты общих и/или частных размеров, времени, сжатия, вывод
VB> графики - что угодно...
Это все линейная зависимость и не требует таких ресурсов.


Alexey
--- GoldED+/W32 1.1.5-021109
Ответить с цитированием
  #5  
Старый 17.08.2016, 16:37
Vladimir Bakhvaloff
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Vladimir Bakhvaloff написал(а) к Alexey Korotkov в Feb 16 23:58:44 по местному времени:

Пpивет, Alexey.

Отвечая на письмо Alexey Korotkov => Vladimir Bakhvaloff [Вт 23 Фев 16]:

AK>>> Даже с tcpackfrequency=1
VB>> ^^^^^^^^^^^^^^^
VB>> А что это такое и с чем его едят?..
AK> Это ключ реестра, гугол расскажет в деталях. в кратце - система не

Тьфу, шаманские заклинания, никому практически ненужные...

VB>> Лучше расскажи про "чуток тюнингованный радиус"...
[ skipped ]
AK> Поделка для себя.

Вот никому её и не давай... ;-)

AK>>> может таким образом (см. на форму графика загрузки) тормозить
AK>>> процесс?
VB>> Рассчёты общих и/или частных размеров, времени, сжатия, вывод
VB>> графики - что угодно...
AK> Это все линейная зависимость и не требует таких ресурсов.

Значит, требует...
...
TrapGate нашёл?.. Попробовал?..

Ладно... Пойду вешаться, Alexey... ;)
> ------------------------------------------------------------
Windows 7 Ultimate x86 [version 6.1.7601] Service Pack 1
Taurus v.5.114.2013.19/Winter/FastMM 4.991/DEBUG
--- System uptime is: 5:04:19.849 (max. - 27 day(s) 6:38:31.123)
Ответить с цитированием
  #6  
Старый 17.08.2016, 16:37
Alexey Korotkov
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Alexey Korotkov написал(а) к Vladimir Bakhvaloff в Feb 16 02:27:06 по местному времени:

Привет Vladimir!

23-Фев-2016 23:58, Vladimir Bakhvaloff -> Alexey Korotkov:

VB>>> Рассчёты общих и/или частных размеров, времени, сжатия,
VB>>> вывод графики - что угодно...
AK>> Это все линейная зависимость и не требует таких ресурсов.
VB> Значит, требует...
Нет, не требует ;-)
Нашел проблемый участок. Проблема не в графике, а в логике. Там получается цикл в цикле по набору имен файлов, и при общем количестве файлов N получается количество сравнений для каждого файла y=i(N-i) где i изменяется от 1 до N. если нарисовать график y(i), то получится перевернутая парабола с максимумом y=NN/4 при i=N/2, все практически как на графике загруки процессора. При N=100 это еще не так критично, получится до 2500 сравнений на каждый файл, но при N=10000 все становится совсем иначе...
Осталось понять назначение используемых в этом цикле списков/объектов и решить что делать дальше - толи обрезать списки, толи сортировать.

VB> TrapGate нашёл?.. Попробовал?..
Есть личные нюансы, нужен именно радиус.

Alexey
--- GoldED+/W32 1.1.5-021109
Ответить с цитированием
  #7  
Старый 17.08.2016, 16:37
Vladimir Bakhvaloff
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Vladimir Bakhvaloff написал(а) к Alexey Korotkov в Feb 16 04:10:54 по местному времени:

Рад видеть тебя, Alexey, без петли на шее!..

Отвечая на письмо Alexey Korotkov => Vladimir Bakhvaloff [Ср 24 Фев 16]:

AK> Нашел проблемый участок. Проблема не в графике, а в логике. Там
AK> получается цикл в цикле по набору имен файлов, и при общем количестве
AK> файлов N получается количество сравнений для каждого файла y=i*(N-i)
AK> где i изменяется от 1 до N. если нарисовать график y(i), то получится
AK> перевернутая парабола с максимумом y=N*N/4 при i=N/2, все практически
AK> как на графике загруки процессора. При N=100 это еще не так критично,
AK> получится до 2500 сравнений на каждый файл, но при N=10000 все
AK> становится совсем иначе... Осталось понять назначение используемых в
AK> этом цикле списков/объектов и решить что делать дальше - толи обрезать
AK> списки, толи сортировать.

Пальцем тыкни в процедуру, позырю, попробую поправить...

...and beautiful quadrosonic voice said: "Bye, Alexey!.."
> ------------------------------------------------------------
Windows 7 Ultimate x86 [version 6.1.7601] Service Pack 1
Taurus v.5.114.2013.19/Winter/FastMM 4.991/DEBUG
--- System uptime is: 9:16:29.891 (max. - 27 day(s) 6:38:31.123)
Ответить с цитированием
  #8  
Старый 17.08.2016, 16:37
Alexey Korotkov
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Alexey Korotkov написал(а) к Vladimir Bakhvaloff в Feb 16 07:28:24 по местному времени:

Привет Vladimir!

24-Фев-2016 04:10, Vladimir Bakhvaloff -> Alexey Korotkov:

AK>> Нашел проблемый участок. Проблема не в графике, а в логике. Там
AK>> получается цикл в цикле по набору имен файлов, и при общем
VB> Пальцем тыкни в процедуру, позырю, попробую поправить...
в ходе выполнения SD.OutFiles.Count уменьшается с N-1 до 0, а SD.SentFiles.Found увеличивается с 0 до N-1

MlrThr.pas
procedure TMailerThread.GetNextFile(P: TBaseProtocol);
...
for i := SD.OutFiles.Count - 1 downto 0 do
begin
f := SD.OutFiles[i];
if SD.SentFiles.Found(f) then begin
SD.OutFiles.AtFree(i);
end;
end;

SD: TMailerThreadInitData;
...
OutFiles: TOutFileColl; -> определен в Outbound.pas

Outbound.pas:
function TOutFileColl.Found;
var
i: integer;
begin
Result := False;
for i := 0 to Count - 1 do begin
if (TOutFile(Items[i]).Name = o.Name) or
(TOutFile(Items[i]).Orig = o.Name) then begin
Result := True;
break;
end;
end;
end;



Alexey
--- GoldED+/W32 1.1.5-021109
Ответить с цитированием
  #9  
Старый 17.08.2016, 16:37
Vladimir Bakhvaloff
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Vladimir Bakhvaloff написал(а) к Alexey Korotkov в Feb 16 14:08:44 по местному времени:

Удачной охоты, Alexey! (Кстати, а как пpошла пpедыдущая?)

Отвечая на письмо Alexey Korotkov => Vladimir Bakhvaloff [Ср 24 Фев 16]:

AK> в ходе выполнения SD.OutFiles.Count уменьшается с N-1 до 0, а
AK> SD.SentFiles.Found увеличивается с 0 до N-1
...
AK> MlrThr.pas
AK> procedure TMailerThread.GetNextFile(P: TBaseProtocol);
...
AK> Outbound.pas:
AK> function TOutFileColl.Found;

Ох-х-х...
"Порадую" тебя: я там уже с десяток раз пытался перековырять что одну, что другую...
Хорошо ещё, что предыдущие копии оставались... :-D
...
Попробую на днях ещё раз воспринять и упростить...
...
Кстати, а последний Аргус 3.210 пробовал поиздевать?..

Ой-ой-ой... Извени, Alexey, но дpаконах я непеpеношу...
> ------------------------------------------------------------
Windows 7 Ultimate x86 [version 6.1.7601] Service Pack 1
Taurus v.5.114.2013.19/Winter/FastMM 4.991/DEBUG
--- System uptime is: 19:10:10.806 (max. - 27 day(s) 6:38:31.123)
Ответить с цитированием
  #10  
Старый 17.08.2016, 16:37
Alexey Korotkov
Guest
 
Сообщений: n/a
По умолчанию Низкая скорость отправки большого количества мелких файлов

Alexey Korotkov написал(а) к Vladimir Bakhvaloff в Feb 16 00:05:10 по местному времени:

Привет Vladimir!

24-Фев-2016 14:08, Vladimir Bakhvaloff -> Alexey Korotkov:


AK>> в ходе выполнения SD.OutFiles.Count уменьшается с N-1 до 0, а
AK>> SD.SentFiles.Found увеличивается с 0 до N-1
VB> "Порадую" тебя: я там уже с десяток раз пытался перековырять что
VB> одну, что другую...
Да в общем-то ничего сложного нет, главное не делать эти списки большими. Поскольку SD.SentFiles особо не нужен в ходе выполнения программы, то можно при успехе if SD.SentFiles.Found(f) удалять найденные элементы, например модифицировать TOutFileColl.found задав параметр по умолчанию, сигнализирующий нужно ли при нахождении нужно сделать с этим элементом следующую цепочку действий Enter; AtFree(i); Leave; Ну и вызывать поиск с параметром для удаления. Или аналогичную работу как-то вынести в MlrThr.
Годный вариант? (насчет AtFree больше беспокоюсь).
Вот и результат при максимальном ускорении (секунду на хендшейк надо отбросить еще):
24-Feb-2016 19:52:14 CONNECT To 192.168.0.212 #24554 (1:2/3)
24-Feb-2016 19:52:20 Disconnect from 192.168.0.212 - Complete (1:2/3) IN: 4000 (52,000b) OUT: 0 (0b)


Тут другая проблема вылезла. После ускорения сетевого обмена (через модификацию реестра) проявился баг при передаче файлов на шифрованных сеансах связи (в т.ч. на радиусе от 2005 года) в виде разрыва связи.
25-Feb-2016 22:55:57 CONNECT From 192.168.0.75 #24554
25-Feb-2016 22:55:59 Disconnect from 192.168.0.75 - Aborted (222:111/1.2) IN: 0 (0b) OUT: 272 (3,549b)
25-Feb-2016 22:56:29 CONNECT From 192.168.0.75 #24554
25-Feb-2016 22:56:32 Disconnect from 192.168.0.75 - Complete (222:111/1.2) IN: 0 (0b) OUT: 728 (9,464b)
25-Feb-2016 22:57:16 CONNECT From 192.168.0.75 #24554
25-Feb-2016 22:57:20 Disconnect from 192.168.0.75 - Aborted (222:111/1.2) IN: 0 (0b) OUT: 321 (4,186b)
25-Feb-2016 22:58:36 CONNECT From 192.168.0.75 #24554
25-Feb-2016 23:00:05 Disconnect from 192.168.0.75 - Complete (222:111/1.2) IN: 0 (0b) OUT: 2679 (34,827b)
25-Feb-2016 23:00:29 CONNECT From 192.168.0.75 #24554
25-Feb-2016 23:01:57 Disconnect from 192.168.0.75 - Aborted (222:111/1.2) IN: 0 (0b) OUT: 2298 (29,887b)

25-Feb-2016 23:01:57 Sending 'D:\fido\box\02\366' (13b)
25-Feb-2016 23:01:57 Sent/delete '366'
25-Feb-2016 23:01:57 Sending 'D:\fido\box\02\367' (13b)
* 25-Feb-2016 23:01:57 Unrec: MGOT "367 13 1456430409" st=Transfer tx=Wait_MGOT rx=WaitEOB blk=НdrНi
* 25-Feb-2016 23:01:57 Protocol aborted while sending '367'
25-Feb-2016 23:01:57 Disconnect reason is fatal error
* 25-Feb-2016 23:01:57 Session aborted
25-Feb-2016 23:01:57 End

С другой стороны:
25-Feb-2016 23:01:56 Receiving '367' (13b)
25-Feb-2016 23:01:56 Received 'C:\Fido\BOX\367'
25-Feb-2016 23:01:57 Aborting due to carrier loss
* 25-Feb-2016 23:01:57 Session aborted
25-Feb-2016 23:01:57 End

Если реестр не патчить, или не использовать шифрованные соединения, то баг вроде как не проявляется, проверил на 100тыс файлах. И такое чувство, что если положить очень много файлов на отправку, то каждый последующий разрыв сессии будет происходить через бОльшее число успешно переданных в течение сессии файлов.

Alexey
--- GoldED+/W32 1.1.5-021109
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:47. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2022, vBulletin Solutions, Inc. Перевод: zCarot