![]() |
Прога для пропорц.раскидывания игр.Используя особеность свича
Всем Здорова
Программа основываеться на том что свич, в отличии от хаба каждый пакет посылает не на все порты, а на нужный. Приведу пример на клубе из 15 компов и админского(admin),игры на 2 гб, которая при средней скорости в 8 Мб\с кидаеться ~4 минуты. Если раскидывать обычным способом, тобишь последовательно, весь процес займет соответсвенно ~60 минут. Раскидывание моим способом буду расписывать по шагам: 1 шаг игра кидаеться с admin на 1 комп 4 мин 2 шаг игра кидаеться с admin на 2,а с 1 на 3 4 мин 3 шаг игра кидаеться с admin на 4,с1на5,с2на6,с3на7 4 мин 4 шаг игра кидаеться с admin на 8,с1на9,с2на10,с3на11, с4на12,с5на13,с6на14,с7на15 4 мин Итог 16 минут, вместо 60. Результат конечно приближенный, но разница заметна сразу. Если количесвто компов больше, скорость раскидывания растет в геометрической прогресии. Это основной смысл программы, так же в ней будут реализованы такие возможности: 1)сканирование определенной папки и вывод сколько занимает каждая подпапка в этой папке. Соответсвенно это будет паралельно. Нужно для того чтоб знать сколько весит каждая игра на каждом компе. 40 гиговая папка на свободном компе сканилась приблизительно 5-10 мин. 2)просмотр свободного места на каждом компе 3)удаление определенной папки на каждом компе и т.д. по мере появления новые идей,если будут предлагаейте:) Соответсвенно в настройках выбираеться,если несколько свичей, чтоб она правильно между ними раскидывала. Для того чтоб не тормозила на клиенте во время раскидывания, можно выбрать низкий приоритет. Но тогда раскидывание может затянуться.С этим надо будет еще чтото придумать. Прога находиться на альфа тестинге. Раскидывание работает, если кому интересна мысль стучитесь в аську: 173679499, или на мыло phoenixx@mail.ru |
PhoeniXX
И в чем вопрос по Программированию??? Раздел у нас есть Авторский софт. Перенес. Вернул обратно :) |
Вопрос по програмированию состоит в том, что есть проблема,
при работе этой проги на нормальном приоритете она очень грузит проц, а при низком скорость около 600 кб\с. я использовал indy 9, сначала передавал инфу по файлу, имя,размер, и т.д. а потом сам файл. то есть файл передаеться по сокету частями по 32 кб. Может нужно чтото изменить, чтоб улучшить быстродействие? использовать другой буфер, или еще чтото? |
Навскидку:
Не использовать Инди, т.к. этот фреймворк тормознутый... в идеале сокет нужно открывать напрямую и передавать данные по своему протоколу, т.е. минимум необходимых данных... Но это все баловство :) можно использовать протокол FTP, собственно для этого он и существует... можно в несколько потоков раздавать... итог: я так понимаю тут все под винду? что-то типа пиринговой системы ограниченной функциональности... тогда придется изучить винапи, на предмет мониторинга папок в частности, т.к. не логично использовать свои методы для работы с файловой системой операционки, если она имеет нативные методы для этих целей, которые в разы будут быстрее собственной реализации... почитать про протоколы передачи данных... почитать как torrent устроен :) Я бы за такую задачу не взялся, много читать придется... :) пока вот такие мысли... |
Я нехотел использоть FTP, так как он не обеспечивает нужной скорости на маленьких файлах. Он очень тормозит при передаче нескольких 10 мелких файлов.
Я реализовал это на инди, и достиг скорости до 9-10Мб в сек, я думаю это вполне нормально. у себя я реализовал сначала передаеться инфа про файл, имя, размер, путь, а потом сам файл, минимум информации. При использовани обычного TServerSocket, я достиг скорости дето 2-3 Мб Апишный сокет не использовал, так как незнаю, а времени на изучение не особо много. Буффер использовал в обоих случяях на 32кб При отправке, а при приеме он режеться по частями, дето 11 кб, и еще скокото. Кстати я у меня есть моя же программа для раскидывания записей на компы, для игровых клубов. Суть в том что есть сервер на него клиент может записать свой сейв, и потом же загрузить его если на другом компе сидишь, у каждого пользователя свой логин и пароль, квота для каждого пользователя. Если кому интересно изучайте риадми: http://phoenixx.freestarthost.com/Readme.txt Сама прога: http://phoenixx.freestarthost.com/SaveCopy2Beta.rar |
а зачем такой изврат , неужели нельзя сделать на всех компах сервисы и посылать копирование сразу от админа на всех
|
2pnp2000
разница большая, представь 10 компов если сразу от админа на все скорость каждому будет по 1,1 Мб\с, поим способом на все постепенно будет скорость до полных 10 метров в сек Цитата:
Хотя насчет мониторинга папок не согласен, мне их не надо мониторить. когда на какой то комп перишеться папка, он об этом отрапортует админскому, и тот даст ему следующее задание. и так до окончание процесса |
А какой процент битой информации через инди получается? 10 метров в секунду что-то слабо верится даже на толстом канале...
А по ФТП так медленно, наверное потому что ты в один поток и в один коннект все лил :) чисто теоретически если канал позволяет можно сразу штук 10 потоков открыть, и 10 кусков почти одновременно отправить... Еще может тормозить по причине невозхобновляемого коннекта, т.к. на устоновку соединения также тратится время... ПыСы это все в теории :) я давно таким кодингом не занимался... я сейчас на Java программирую... |
Цитата:
Тестил на файле размером 1057 Мб, пересылал его на 3 компа, потом заливал себе нормальным путем, и сравнивал побайтно. Они были идентичны. Ну а фтп все равно тормозит на передаче множества мелких файлов. Думаю засчет передачи инфы про файл, и управляющих фтп комманд. Тестил само собой на фтп в один поток. Насчет множества потоков непробовал, как по мне оно сложнее, чем мой вариант. Тем более нет большого смысла передавать в 10 коннектов, тем более что макс. скорость будети всеравно 100 мегабит |
Поздновато конечно...
Посмотри как работает, напрмер, Norton Ghost. На компьютерах запускается клиентская программа и ждёт. Админ стартует upload с сервера и всем посыпался Broadcast (UDP). Switch распихивает пакеты всем, тока в путь. Минус, что не все могут справится с потоком и потом нужно "докормить" каждого выпавшими пакетами. В итоге скорость получится ~4 минуты +15-20% (нужно пройтись по всем и кнопки потыкать). |
В принципе неплохой вариант,
но не идеален, если нужно отсылать не всем компам сетевого сегмента. Тем более как узнавать какие пакеты пришли, а какие нет. Каждый нумеровать, и сохранять что в нем было, чтоб клиент мог отправить в конце запрос с недостающими пакетами? |
ну можно наверное и так :) есть чуднесные алгоритмы из предмета "Теория информации".. ни кто не мешает их укрупнить до пакетов...
|
| Часовой пояс GMT +4, время: 23:09. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.