Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Асинхронный вывод - достижимо ли ускорение, по сравнению с обычным выводом 
V
    Опции темы
marcusmae
Дата 25.1.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: нет
Всего: 39



Цитата(MAKCim @  25.1.2008,  11:03 Найти цитируемый пост)
 уведомление о завершении операции асинхронного I/O приходит после физической записи данных на устройство

Да, более того, можно вообще обойтись без уведомления, если не заказывать получение сигнала.

Цитата(MAKCim @  25.1.2008,  11:03 Найти цитируемый пост)
если же использовать обычные операции write()/read() (без O_SYNC), то они возвращают управление после отправки пакета bio планировщику I/O, т. е до физической записи на устройство

Я конечно не знаток никсов, но что-то мне это кажется малоправдоподобным. А что, если, допустим, понадобится записать и тут же этот файл считать? Read ведь не выдаст отказ в доступе? Где-то можно прочитать об этом?

Цитата(MAKCim @  25.1.2008,  11:03 Найти цитируемый пост)
поэтому время работы асинхронных функций при таком способе измерения времени больше

Нет, нелогично smile Я замеряю время работы итераций цикла, отягощённых тем или иным способом вывода. Скорость асинхронного вывода оттуда нельзя измерить : если зажать его в cpu_time, то разность просто равна нулю. Ну а длительность обычных write-ов, кстати, вполне осязаема.

Я вот что думаю : может, какая-то тонкая настройка системы играет роль?
Цитата

I/O-bound versus CPU-bound processes
A process that is I/O bound is one that performs more I/O than processing. A CPU-bound process does more processing than I/O. The Linux 2.6 scheduler actually favors I/O-bound processes because they commonly initiate an I/O and then block, which means other work can be efficiently interlaced between them.


Это сообщение отредактировал(а) marcusmae - 25.1.2008, 12:28


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
MAKCim
Дата 25.1.2008, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(marcusmae @  25.1.2008,  12:26 Найти цитируемый пост)
Я конечно не знаток никсов, но что-то мне это кажется малоправдоподобным. А что, если, допустим, понадобится записать и тут же этот файл считать? Read ведь не выдаст отказ в доступе? Где-то можно прочитать об этом?

для каждого файла в Linux существует кэш страниц, в которых кэшируются операции I/O
при записи в файл модифицируется соответствующая страница (или страницы) его кэша
далее, запрос на чтение будет удовлетворен из него (т. е из памяти)
потоки ядра pdflush выполняют запись модифицированных страниц на диск
Цитата(marcusmae @  25.1.2008,  12:26 Найти цитируемый пост)
Нет, нелогично

т. е ты при использовании асинхронного I/O конечное время высчитываешь не после получения уведомления о завершении операции I/O


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
marcusmae
Дата 25.1.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: нет
Всего: 39



Цитата(MAKCim @  25.1.2008,  12:49 Найти цитируемый пост)
потоки ядра pdflush выполняют запись модифицированных страниц на диск


MAKCim, спасибо за информацию! = К своему стыду я не слишком засиживаюсь за чтением книжек по внутреннему устройству Unix. Скажите, а есть ли способы настройки того процесса, что Вы описали?

Цитата(MAKCim @  25.1.2008,  12:49 Найти цитируемый пост)
т. е ты при использовании асинхронного I/O конечное время высчитываешь не после получения уведомления о завершении операции I/O

Да. Меня в большей степени волнует, с какой скоростью будет работать программа. Впрочем, Вы правы, стоило бы засечь время от aio_write до SIG_AIO.


Это сообщение отредактировал(а) marcusmae - 25.1.2008, 13:08


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
MAKCim
Дата 25.1.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(marcusmae @  25.1.2008,  13:05 Найти цитируемый пост)
Да. Меня в большей степени волнует, с какой скоростью будет работать программа

вот
естественно, инициализация aiocb и выполнение вызова aio_write() может занимать больше времени, нежели ofstream :: write()
однако это вовсе не означает, что физическая запись на диск во втором случае будет осуществлена быстрее
Цитата(marcusmae @  25.1.2008,  13:05 Найти цитируемый пост)
Скажите, а есть ли способы настройки того процесса, что Вы описали?

какого плана настройки?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
marcusmae
Дата 25.1.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: нет
Всего: 39



Цитата(MAKCim @  25.1.2008,  13:13 Найти цитируемый пост)
какого плана настройки?

Ну вот CPU-bound и I/O-bound процессы? = О чём может идти речь?


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
MAKCim
Дата 25.1.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(marcusmae @  25.1.2008,  15:14 Найти цитируемый пост)
Ну вот CPU-bound и I/O-bound процессы? = О чём может идти речь?

это совсем из другой темы
а именно, для более гибкой реализации стратегии планирования процессов



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
marcusmae
Дата 31.1.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: нет
Всего: 39



MAKCim, напрасно я переживал : на реальном SuSE (без виртуальной машины) всё оказалось лучше, чем я думал (графики присоединены). Остаётся маленькая проблемка, связанная с тем, что генерируемые в асинхронном варианте файлы получают ограниченные права на доступ. Наверно дело в этой строчке

Код

this->aioControlBlock->aio_fildes = open(filename, O_CREAT | O_WRONLY); 


user posted image

Маленькая поправка : Xeon всё-таки по-быстрее : 2,6 GHz.

Теперь пробовать на реальных задачах  smile




Это сообщение отредактировал(а) marcusmae - 31.1.2008, 13:48

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Graphs.pdf 105,63 Kb


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
MAKCim
Дата 31.1.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(marcusmae @  31.1.2008,  13:44 Найти цитируемый пост)
Наверно дело в этой строчке

угу
нужно так
Код

this->aioControlBlock->aio_fildes = open(filename, O_CREAT | O_WRONLY, 0666);

0666 - битовая маска прав в 8-ой СС
подробнее man 2 chmod

Добавлено через 2 минуты и 21 секунду
Цитата(marcusmae @  31.1.2008,  13:44 Найти цитируемый пост)
на реальном SuSE (без виртуальной машины) всё оказалось лучше, чем я думал

что же ты раньше не сказал, что на виртуальной машине тестировал?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
marcusmae
Дата 31.1.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: нет
Всего: 39



Цитата(MAKCim @  31.1.2008,  17:13 Найти цитируемый пост)
нужно так

спасибо!

Цитата(MAKCim @  31.1.2008,  17:13 Найти цитируемый пост)
что же ты раньше не сказал, что на виртуальной машине тестировал?   

Нда, sorry, явно не сказал. Я расчитывал, она хоть динамику будет воспроизводить. Не тут-то было smile 



--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1192 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.