Live dc++ forum
Форма входа
Главная | TR015 - Форум | Четверг, 28.11.2024, 09:06
[ Новые сообщения · Участники · Правила форума · Поиск
  • Страница 1 из 1
  • 1
TR015
а нужно ли это
1. нужно [ 2 ] [66.67%]
2. всё равно [ 1 ] [33.33%]
3. не нужно [ 0 ] [0.00%]
Всего ответов: 3
hmuryДата: Вторник, 11.08.2009, 07:05 | Сообщение # 1
Генерал-лейтенант
Сообщений: 599
Репутация: 32
Статус: Offline
Клиент валится как мамонт на скотобойне, если увеличить размеры буфера чтения и буфера отдачи.
Вот что я сделал:
настройки\для экспертов
socket read buffer 64 Mb
socket Write buffer 64 Mb
Размер буфера 128 Mb (нигде не смог найти буфер ЧЕГО это? не подскажете?)
Теперь, как только начинают качать, не может устоять и минуты, валиться с таким логом:

[...]

Я вижу, что там процесс грейлинка занимает 700 Мб в оперативке, но почему он валится, когда ему на буфер начинает нехватать ОЗУ? Там какая-то недорабгтка.
А подругому, в нашей сети просто нельзя, она быстрая. Присосуться 4 человека на 100 мегабит качать, и винт лежит. Оно и им не отдает на нормальной скорости. и у меня машина лежит. Для таких скоростей, маленький буфер не годится. Снижать скорость отдачи несерьезно, тогда у меня очередь ростет до 30 человек. Снижать число слотов отдачи тоже, тогда меня банят по слотам. Хочу буфер! Но немогу, грейлинк валится. И вобще, в целом мое мнение относительно оптимизации скоростей, там еще есть много над чем работать. Может можно было бы обойтись и без буферов, если сделать например такую настройку, которая бы автоматически разбивала качающих на группы, по скорости отдачи. И тем кому отдается очень быстро, чтоб отдавало последовательно, 2 сек одному, потом 2 сек второму, потом третему.. а не наваливалось на винт одновременно, и долбило его. И чтоб эти все правила можно было настраивать. для каждой группы качающих. Я был бы рад, тогда был бы суперклиент.

DooMer

 
SMTДата: Вторник, 11.08.2009, 10:10 | Сообщение # 2
Генерал-лейтенант
Сообщений: 514
Репутация: 28
Статус: Offline
"буферы сокета" напрямую не влияют на функционирование программы. параметр передаётся в WinSock API и устанавливает размер буфера приёма/передачи, по заполнению которого сокет начинает блокировать данные, если программа не подхватила их вовремя (или сетевая карта не отправила)

"размер буфера" - это размер буфера записи в файл, на отдачу не влияет. но когда нажимается "ОК" в настройках при записи каждого файла, даже небольшого DCPlusPlus.xml создаётся буфер в 128MB, и запись в файл начинается только при заполнении всего буфера или закрытии файла

желаемого поведения нельзя добиться накруткой настроек по той причине, что передача присходит блоками 64K - 4MB (зависит от размера файла, 4MB для больших файлов, типа DVD9. в среднем 1Mb). передающая сторона не знает, какой блок будет запрошен следующим, поэтому нельзя впрок прочитать много данных.

если у файла несколько источников, клиент с каждого запрашивает блок со случайным номером, чтобы как можно быстрее распространить весь файл (разным людям раздаются разные куски, а не всем начало файла, а потом они обмениваются между собой, разгружая источник)

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

 
4e4akoДата: Вторник, 11.08.2009, 10:51 | Сообщение # 3
Майор
Сообщений: 87
Репутация: 2
Статус: Offline
на 100мбит если винт слабый - то только ограничение скорости+слотов поможет
+полное выключение всех логов.

хз может все это не в тему и ерунда полная, но опытным путем выставил:
socket read buffer 2 Mb - по TX сетевой карты (стандартно на карте 512)
socket Write buffer 1 Mb - по RX карты
Размер буфера 4 Mb - половина буфера харда (реально влияет на скорость открытия большого файл-листа)

Добавлено (11.08.2009, 10:51)
---------------------------------------------
да забыл добавить - файл подкачки отключен

Сообщение отредактировал 4e4ako - Вторник, 11.08.2009, 10:37
 
DooMerДата: Вторник, 11.08.2009, 18:24 | Сообщение # 4
Рядовой
Сообщений: 2
Репутация: 0
Статус: Offline
Quote (hmury)
"размер буфера" - это размер буфера записи в файл, на отдачу не влияет. но когда нажимается "ОК" в настройках при записи каждого файла, даже небольшого DCPlusPlus.xml создаётся буфер в 128MB, и запись в файл начинается только при заполнении всего буфера или закрытии файла

Он один, общий, для всех одновременно записывающихся файлов, или для каждого выделяется отдельный в 128?
А socket буферы тоже общие?
 
SMTДата: Вторник, 11.08.2009, 18:29 | Сообщение # 5
Генерал-лейтенант
Сообщений: 514
Репутация: 28
Статус: Offline
для каждого файла, для каждого сокета - отдельный буфер указанного размера
 
PhemmerДата: Воскресенье, 16.08.2009, 00:46 | Сообщение # 6
Полковник
Сообщений: 247
Репутация: 10
Статус: Offline
реализация в 5.92
Code
Для чтения с диска отдаваемых файлов используется свой кеш, а не кеш Windows. Можно выставить ограничение на размер кеша, чтобы комфортно работать со своими данными при отдачах в фоновом режиме. Можно увеличить размер блока чтения, чтобы сгладить конфликты параллельных высокоскоростных отдач файлов. Конфигурируется на странице настроек "совместимость"
 
DooMerДата: Пятница, 28.08.2009, 17:09 | Сообщение # 7
Рядовой
Сообщений: 2
Репутация: 0
Статус: Offline
Спасибо всем что быстро отреагировали.
 
  • Страница 1 из 1
  • 1
Поиск:


В движке поковырялся LiveDC :p © 2024
Сделать бесплатный сайт с uCoz