![]() |
|
Модераторы: feodorv |
![]()
|
|
| ForNights |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Пишу под WinXP на Builder Cpp использую Winsock протокол TCP/IP на карточке в 100 Мбит/сек достигает скорости в 60-70 Мбит/сек, а вот когда переношу прогу на компьютер с карточкой 1 Гбит/с достигаю скорости 176 Мбит/сек!!!!
Информацию передаю через один сокет. По моему глубокому убеждению считаю что скорость должна быть, а её нет! |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 2 Всего: 135 |
чем скорость измеряешь ?
какой размер пакета, передаваемого за раз ? попробуй увеличить его раз в 10-20... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| ForNights |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Про пакеты ничего не могу сказать, но буфера я менял в пределах от 1500 до 512000 и устанавливал их через setsockopt: При отказе от ручного выставления размера буфера, он производит поиск оптимума сам, но на мою задачу это не влияет.
При инициализации глобальные переменные имеют следующие значения: count_send_data = 10; count_all_data = 0; count_loc_data = 0; lab = 0;
Добавлено через 3 минуты и 2 секунды Но вот воспользовался советом и пустил клиента в 4 потока и сервера в 4, скорость при этом на локал хосте выросла с 176 до ~350 - 700 МБит/сек, но какая то она нестабильная, у меня складывается впечатление что я где то с потоками напортачил, а вернее с подсчётом времени из этих потоков!? Сейчас у меня заведена глобальная переменная в которую потоки плюсуют количество принятых данных, при приёме десяти порций происходит подсчёт результата. Внимание вопрос, если я использую один сокет на сервере и один на клиенте, то могу ли я заполнить канал в 1 ГБит/сек, или же мне продолжать мутки с многопоточностью? |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
согласно проводимым мною экспериментам, если только писать в TCP сокет, то получится использовать его приблизительно на 70 процентов от пропускной способности. если, к примеру, в сокет и пишешь и читаешь из него, то использовать получится приблизительно 20 процентов от пропускной способности. полагаю, это особенность TCP протокола. при использовании UDP протокола, такой проблемы нет. но он не гарантирует доставку. именно по этому, разработан протокол UDT. в экспериментах, получаю, приблизительно 76-98 процентов от пропускной способности. переписывайте клиент-сервер для него. Это сообщение отредактировал(а) boostcoder - 10.3.2011, 16:10 |
|||
|
||||
| ForNights |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Благодарю за направление и думаю что в ближайшее время взгляну в сторону UDT, но вот про чтение запись в сокет не согласен! Я в клиенте только записываю в сокет, а на стороне сервера только читаю, и если я бы получил 70% скорости от гигабитного канала то был бы просто счастлив, а мои 176 МБит/сек покрывают только ~20% от канала!??? |
||||
|
|||||
| Олег2005 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |