The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"OpenNews: Оптимизация ввода/вывода при помощи POSIX AIO API"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [Проследить за развитием треда]

"OpenNews: Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от opennews (??) on 03-Сен-06, 18:41 
В статье "Boost application performance using asynchronous I/O (http://www-128.ibm.com/developerworks/linux/library/l-async/)" рассказывается про оптимизацию производительности приложений используя средства асинхронного ввода/вывода в Linux.

URL: http://www-128.ibm.com/developerworks/linux/library/l-async/
Новость: http://www.opennet.ru/opennews/art.shtml?num=8275

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от pavlinux email(??) on 03-Сен-06, 18:41 
- if ((ret = aio_return( &my_iocb )) > 0)
+ if ((ret = aio_return( &my_aiocb )) > 0)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от klalafuda on 03-Сен-06, 21:40 

на познакомиться IMHO вполне приличная статья, молодцы.

// wbr

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от Woody email(??) on 04-Сен-06, 12:21 
Я в таких случаях завожу отдельный поток, очередь и бросаю всё в неё. Как по мне такое решение более красивое, наглядное и простое чем полинг состояния AIO.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от pavlinux email(??) on 04-Сен-06, 12:28 
Дык, в подсистеме AIO тоже есть ниточки - aio_threads :)

#ifdef __USE_GNU
extern void aio_init (__const struct aioinit *__init) __THROW;
#endif

struct aioinit
  {
    int aio_threads;            /* Maximal number of threads.  */
    int aio_num;                /* Number of expected simultanious requests. */
    int aio_locks;              /* Not used.  */
    int aio_usedba;             /* Not used.  */
    int aio_debug;              /* Not used.  */
    int aio_numusers;           /* Not used.  */
    int aio_idle_time;          /* Number of seconds before idle thread
                                   terminates.  */
    int aio_reserved;
  };


Только действительно, немного через ж...у получается...


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от Woody email(??) on 04-Сен-06, 12:38 
>Дык, в подсистеме AIO тоже есть ниточки - aio_threads :)

Но обработка то всё-равно выполняется в одном потоке.

Если с aio (если верить статье ;) я буду делать:

-----
  ret = aio_write( &my_aiocb );
  while ( aio_error( &my_aiocb ) == EINPROGRESS )
    do_something();
-----

То в случае с потоками получится примерно следующее:
-----
  queue.add(buf, size);
-----

А в соседнем потоке ждём очередь, и потом пишем. Так удобно логеры делать и обработку потока  данных (заводим три потока: reader, writer и worker и понеслось ;)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от pavlinux email(??) on 04-Сен-06, 17:29 
Ну struct QUEUE, это отдельная история...

Вот ещё в догону парочка...

http://lwn.net/Articles/145365
http://www.bullopensource.org/posix

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от Анонимоус on 04-Сен-06, 18:37 
>Но обработка то всё-равно выполняется в одном потоке.
Для простых дисков и дисковых массивов один поток лучше чем много.По скорости.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от Woody email(??) on 04-Сен-06, 18:42 
>>Но обработка то всё-равно выполняется в одном потоке.
>Для простых дисков и дисковых массивов один поток лучше чем много.По скорости.

Я не то имел в виду. Есть один поток (thread) который пишет на диск. У него есть очередь в которую другие потоки кидают запросы на запись.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от Супербизон on 04-Сен-06, 20:25 
а если не диск а сокеты??
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от Woody email(??) on 04-Сен-06, 20:50 
>а если не диск а сокеты??

Зависит от логики. Либо один сокет на поток, либо несколько и через select/etc.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от pavlinux email(??) on 04-Сен-06, 22:40 
AIO read and write on sockets (doesn't return an explicit error, but quietly defaults to synchronous or rather non-AIO behavior)
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

12. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от pavlinux email(??) on 04-Сен-06, 22:40 
http://lse.sourceforge.net/io/aio.html
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

13. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от J0ester email(ok) on 24-Окт-07, 07:20 
При использовании сигналов или нитей для уведомления о завершении, нужно ли хранить структуры которые использовались для вызова? или можно не дожидаясь завершения операции заюзать структуру aiocb снова?

Вобще хочется дать n запросов на ио через lio_listio и двигатся далее

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

14. "Оптимизация ввода/вывода при помощи POSIX AIO API"  
Сообщение от Аноним on 24-Окт-07, 09:50 
Подскажиете пожалуста, как динамически создать N структур для aio и передать их lio_listio? У меня за цикл разное количество операций и я не могу эффективно использовать уже выделенную память или создать столько сколько нужно.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру