Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Что ограничивает скорость записи данных на диск?  (Прочитано 8886 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« : 13-10-2004 17:35 » 

День/вечер добрый.

ВОПРОС:
 от чего зависет скорость записи данных на диск?

ПОЯСНЕНИЕ:
  Есть программа сбора данных. Эта программа получает данные по Ethernet, показывает их в графическом виде и пишет на диск. Есть возможность просто выводить данные на экран, и можно писать данные без вывода на экран.
 Если просматривать данные без записи на диск--все хорошо: принимаются и отображаются все данные. Если же включить запись на диск, то часть данных теряется (скорее всего не успевают считаться пакеты из карточки).
  НО, если я этот же хард (через переходник) подключаю к USB, то одновременная запись и отображение происходят без потери данных.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-10-2004 17:42 » 

Артем, а эти ethernet данные ты получаешь "нормальным" путем, или всю сетку слушаешь?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 13-10-2004 18:04 » 

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

Кстати, в классическом PC вывод на экран заведомо медленнее вывода на диск.

Вышесказанное относится к "своей" программе, а не чьей-то сторонней.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #3 : 17-10-2004 18:53 » 

Цитата: RXL
Артем, а эти ethernet данные ты получаешь "нормальным" путем, или всю сетку слушаешь?


Не очень понял вопрос. Что значит "слушать всю сетку"?
А пакеты у меня UDP-шные, и обрабатываю их по своему порту...


Цитата: RXL
Лучше всего создать достаточно ёмкую очередь и с одного конца пополнять её данными из сетки, а с другого блоками писать на диск, очищая очередь и делать это параллельно двумя потоками. А ёмкость очереди и размер блока подобрать таким образом, чтобы потоку пополнения очереди никогда не приходилось ждать потока очистки очереди для самого медленного девайса, обратное ожидание допустимо.


Я, может не совсем точно описал проблему: все данные, которые доходят до программы, на диск попадают. Тут все верно. Другое дело, что при использовании "обыкновенного" харда, при этом начинают теряться "пакеты", а при использовании харда через USB такого не происходит...

 т.е. такое ощущение, будто в первом случае запись на диск "съедает" больше ресурсов, чем во втором (и похоже, что из-за этого в первом случае я не успеваю "выгребать" пакеты из сетевой карточки, и они теряются Жаль ). Почему? Как это исправить?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 18-10-2004 06:27 » 

ну не верю я, что запись на обычный диск медленее вывода на экран, чтобы что-то терялось - баг в другом месте.

а ты уверен, что на диске достаточно места? сетевые логи - дело большое, бывает, что за секунды мегабайты набегают.

кстати, обычный хард не 1990 года выпуска, случаем?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Серж
Гость
« Ответ #5 : 18-10-2004 07:41 » 

Артем, без сомнения, что-то с алгоритмом записи на диск. Может быть, буфера маловаты или отключен дисковый кэш (что, конечно, мало вероятно, но возможно).
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 18-10-2004 13:09 » 

Артем, под "слушаешь сетку" я имел в виду захват всего трафика сети, а не только того, что предназначалось твоей машине.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #7 : 18-10-2004 15:57 » 

Цитата: dimka
ну не верю я, что запись на обычный диск медленее вывода на экран, чтобы что-то терялось - баг в другом месте.

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

Цитата: dimka

а ты уверен, что на диске достаточно места? сетевые логи - дело большое, бывает, что за секунды мегабайты набегают.


уверен Улыбаюсь. Там под потребности этой проги почти сотня гигов отведена...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines