|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.05.2016, 20:16 | #1 |
Пользователь
Регистрация: 20.09.2014
Сообщений: 13
|
Сокеты. Разделяемая память. Резкое падение скорости при увеличении размера передаваемого файла.
Долго думал, в какую тему написать этот вопрос. Написал сюда.
В общем, балуюсь с сокетами и разделяемой памятью, передавая между клиентом и сервером большие файлы. И я обратил внимание на очень интересную закономерность: Как только файл превышает ~580MБ Скорость передачи разко падает(происходит резкий скачок). На разделяемой памяти удалось поймать точное мето:
1) Какие мысли есть у вас на этот счет? Данные:
Также проводил эксперементы с размером разделяемой памяти => скорости передачи. И к моему удивлению, скорость не зависит от размера блока разделяемой памяти(64 МБ - 64 КБ). Для меня это оказалось странным, так как я думал, что чем меньше размер, тем больше будет переключений между семафорами => увеличится время передачи. 2)Почему так может быть? Прав я или не прав? Все действия производились на одном компьютере. Ubuntu. Последний раз редактировалось dimoni414; 18.05.2016 в 20:29. |
19.05.2016, 07:41 | #2 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Симафоп до 0.1 милиона в секунду успевает.
Перемещение головки между "дорожками" компенсирует кэш в самом диске. SATA 3 в теории выдаёт 600 мбайт/ с. Скорость перемещения головки из центра к краю 10-20 мс. За товремя пока головка скачет в этот кэш успеет попасть 600*0.020=12 мб. При линейной записи вы скорость головки просто незаметите. Головка движется радиально со скоростью R/20 мс, а сам диск 90 оборотов/c. Есть ещё и кэш ОС. Под кэш диска используется вся доступная память. Утилиты памяти просто не показывают этот факт. Как только ваша программа её забивает информация начинает сбрасываться на диск. А реальная скорость диска у вас не 600 мбтс а 100-150 мбайт/с. Вот ваша прога и начинает тормозить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
19.05.2016, 08:08 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Я "за" кэш.
Это легко проверить вызовом syncfs() - если скорость станет равномерной, значит кэш. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Предача файла. Разделяемая память. Заполнение при считывании | dimoni414 | Общие вопросы C/C++ | 2 | 18.05.2016 18:48 |
2 проги на С++, потоки и разделяемая память. | Salec | Фриланс | 1 | 12.06.2013 18:28 |
Разделяемая память в unix на C | Cannibal | Помощь студентам | 0 | 07.06.2013 08:28 |
Разделяемая память | Spb | Общие вопросы C/C++ | 0 | 25.12.2011 14:49 |
Speed drop падение скорости | Ivn | Софт | 1 | 12.02.2009 07:17 |