lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AANLkTimtwc28BzpxzEhNSMH2TiDvZwxKrOyiOfv8r2kZ@mail.gmail.com>
Date:	Sat, 21 Aug 2010 11:15:53 -0300
From:	Pedro Eugênio Rocha 
	<pedro.eugenio.rocha@...il.com>
To:	Corrado Zoccolo <czoccolo@...il.com>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: Using block layer's I/O context api (block/blk-ioc.c) without CFQ.

Thanks for your reply,

2010/8/20 Corrado Zoccolo <czoccolo@...il.com>:
> 2010/8/19 Pedro Eugênio Rocha <pedro.eugenio.rocha@...il.com>:
>> Hi,
> Hi,
>>
>> Is there a way to use the generic block layer I/O context api
>> (block/blk-ioc.c), without
>> using cfq specific functions and structs? I'm writing an I/O scheduler
>> for my master
>> thesis, and I'd like to use my own functions for I/O context handling,
>> not cfq's. Sorry
>> if I'm missing something here.
> Sure. I think you can get an idea by grabbing an old enough kernel
> that still has anticipatory scheduler (if I recall correctly, 2.6.32
> should have it), and look at its functions.

In mainstream kernel as in 2.6.32, it's used a generic get_io_context
function to get the current task io_context. In addition, you can create
a function like cfq_get_io_context to implement some scheduler
specific stuff. Oh right so far.

But when the task is exiting there is an exit_io_context function, which
calls put_io_context. This function calls cfq_dtor, which seems to be
an specific cfq function, and maybe will not work with others I/O
schedulers. My newbie question is, those block/blk-ioc.c functions
are  supposed to be generic, or my scheduler should implement it's
own?


> Or you can look at my post:
> http://lists.openwall.net/linux-kernel/2009/06/08/387, where I
> implemented a proof-of-concept I/O scheduler based on anticipatory
> scheduler. Most of the concepts in that scheduler were later ported to
> CFQ.
> Do you already have a scheduling algorithm in mind? And what will be
> your main purpose/target?
>

Yes. Our main purpose is to share disk I/O bandwidth among
processes/tasks/cgroups/whatever providing strong QoS guarantees, such
as bandwidth, bursts and latency. It borrows many ideas from bfq and
pClock I/O schedulers. The implementation will be just a proof-of-concept,
not something you can use in a real environment. =)

Thanks for your help!

> Thanks
> Corrado
>>
>> Thanks,
>>
>> Pedro Eugênio Rocha
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo@...r.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at  http://www.tux.org/lkml/
>>
>
>
>
> --
> __________________________________________________________________________
>
> dott. Corrado Zoccolo                          mailto:czoccolo@...il.com
> PhD - Department of Computer Science - University of Pisa, Italy
> --------------------------------------------------------------------------
> The self-confidence of a warrior is not the self-confidence of the average
> man. The average man seeks certainty in the eyes of the onlooker and calls
> that self-confidence. The warrior seeks impeccability in his own eyes and
> calls that humbleness.
>                                Tales of Power - C. Castaneda
>



-- 
Pedro Eugênio Rocha
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ