ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FreeBSD disk AIO support


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: FreeBSD disk AIO support
  • From: Andrei Nigmatulin <andrei.nigmatulin@xxxxxxxxx>
  • Date: Mon, 24 Aug 2009 18:42:14 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:subject:date :user-agent:references:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:message-id; bh=QDx6rgTQVYNNMdNDKFSoYWTqjCOiIVoHUqqxET3AiIw=; b=BpUPRFw5jSY3ZB9QM4pcW9yhWrGyGROPM3qP3jjPaqLFxhNYOJA9ahr9iQkSXbRcIJ CQ7sdbZZau1/OA6yhvQzEeLwsscDc6Rzzq2xtKb65Iz+Jw7eFZFDYTw3y7Kl7mjCt3sX ftmRXULRzKzFGA4i3D3/pUfeYDX3sEhi1tprs=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:references:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :message-id; b=V7BZ/DpUls7IHHj4w0fBmev9iD+aSbQlKpFTtvAD8+yVAopeJb/l2Zi8VRGuygvtqW MxYRRUwE/xt73ETx9hYLgo0mB7GJlUacri3IRMuvGMkf8EiQeU2V/gY93/FghQEfVR8Y rabQ7sTYVmYC/BONKgiF5//JZDC4bvxuDVZbw=
  • In-reply-to: <20090824092746.GC69343@xxxxxxxxxxxxx>
  • References: <20090823161150.GC49906@xxxxxxxxxxxxx> <200908240457.36538.andrei.nigmatulin@xxxxxxxxx> <20090824092746.GC69343@xxxxxxxxxxxxx>

On Monday 24 August 2009 13:27, Igor Sysoev wrote:
> On Mon, Aug 24, 2009 at 04:57:36AM +0400, Andrei Nigmatulin wrote:
> > On Monday 24 August 2009 04:35, Andrei Nigmatulin wrote:
> > > On Monday 24 August 2009 02:23, Andrei Nigmatulin wrote:
> > > > On Monday 24 August 2009 01:13, Igor Sysoev wrote:
> > > > > /usr/include/libaio.h:
> > > > >
> > > > > struct iocb {
> > > > >         PADDEDptr(void *data, __pad1);  /* Return in the io
> > > > > completion event */ PADDED(unsigned key, __pad2);   /* For use in
> > > > > identifying io requests */
> > > > >
> > > > >         short           aio_lio_opcode;
> > > > >         short           aio_reqprio;
> > > > >         int             aio_fildes;
> > > > >
> > > > >         union {
> > > > >                 struct io_iocb_common           c;
> > > > > ...
> > > > >
> > > > > struct io_iocb_common {
> > > > >         PADDEDptr(void  *buf, __pad1);
> > > > >         PADDEDul(nbytes, __pad2);
> > > > >         long long       offset;
> > > > >         long long       __pad3, __pad4;
> > > > > };      /* result code is the amount read or -'ve errno */
> > > > >
> > > > >
> > > > > Полей .aio_flags и .aio_resfd в struct iocb нет. Ну и как это
> > > > > собирать ?
> > > >
> > > > А если
> > > >
> > > > -#include <libaio.h>
> > > > +#include <linux/aio_abi.h>
> > > >
> > > > ?
> > >
> > > Похоже, что libaio >= 0.3.107 имеет поддержку eventfd (патч добавил
> > > Rusty Russell) и искомые поля есть в io_iocb_common.
> >
> > Имхо, есть смысл делать в обход libaio, напрямую. Статус библиотеки
> > непонятен, домашней страницы я не нашел, необходимая для eventfd версия
> > >= 0.3.107 есть далеко не во всех дистрибутивах.
> >
> > Зато нашел пример как можно использовать io_submit/io_getevents напрямую
> > без libaio, с использованием linux/aio_abi.h:
> >
> > http://www.xmailserver.org/eventfd-aio-test.c
> >
> > Туда надо добавить:
> >
> > #include <linux/aio_abi.h>
> > #include <sys/eventfd.h>
> >
> > И немного почистить.
>
> Пока в io_iocb_common не появятся .aio_flags и .aio_resfd, буду делать так:
>
>  #include <libaio.h>
>
>  uint32_t *p = (uint32_t *) &iocb.c.__pad4;
>  p[0] = flags;
>  p[1] = fd;

По идее, будет работать. А почему ты не хочешь напрямую без libaio ? Сама 
библиотека, по сути ничего не делает, там просто врапперы io_* -> syscall.


-- 
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take


 




Copyright © Lexa Software, 1996-2009.