Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Description  





2 History  



2.1  Prior to the integration  





2.2  Kernel 2.6.6 (10 May 2004)  





2.3  Kernel 2.6.9 (19 October 2004)  





2.4  Kernel 2.6.10 (24 December 2004)  





2.5  Kernel 2.6.13 (27 June 2005)  





2.6  Kernel 2.6.18 (20 September 2006)  





2.7  Kernel 5.0 (2019-03-03)  







3 See also  





4 References  





5 Sources  





6 External links  














Completely fair queueing






Français
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Completely Fair Queuing (CFQ) is an I/O scheduler for the Linux kernel which was written in 2003 by Jens Axboe.[1]

Description[edit]

CFQ places synchronous requests submitted by processes into a number of per-process queues and then allocates timeslices for each of the queues to access the disk. The length of the time slice and the number of requests a queue is allowed to submit depends on the I/O priority of the given process. Asynchronous requests for all processes are batched together in fewer queues, one per priority. While CFQ does not do explicit anticipatory I/O scheduling, it achieves the same effect of having good aggregate throughput for the system as a whole, by allowing a process queue to idle at the end of synchronous I/O thereby "anticipating" further close I/O from that process. It can be considered a natural extension of granting I/O time slices to a process.

History[edit]

Prior to the integration[edit]

In February 2003 Andrea Arcangeli put forward his idea for a Stochastic Fair Queueing I/O scheduler to Jens Axboe who then implemented it. Jens Axboe made improvements to his first implementation, calling the new version the Completely Fair Queueing scheduler, and produced a patch to apply it to the 2.5.60 development series kernel.

Kernel 2.6.6 (10 May 2004)[edit]

The CFQ I/O scheduler was first integrated into the mainline kernel as an optional I/O scheduler. It was possible to change the scheduler at boot time with the 'elevator' parameter to kernel.

Kernel 2.6.9 (19 October 2004)[edit]

Red Hat Enterprise Linux 4 used this I/O scheduler as the default even though it used a kernel based on a 2.6.9.[2]

Kernel 2.6.10 (24 December 2004)[edit]

The second release of the CFQ scheduler dubbed CFQv2 is included in the 2.6.10, improvements include better responsiveness and the elimination of some starvation issues which were present in the earlier version. The scheduler now is also switchable at run time by modifying the /sys/block/<block_device>/queue/scheduler variable in the sysfs filesystem.

Kernel 2.6.13 (27 June 2005)[edit]

CFQ scheduler moved to a new time sliced design dubbed CFQv3. Among other things, it implements ioprio_get(2) and ioprio_set(2) which allows user to set per-process I/O priorities, usually using ionice(1) command (although using nice(1) also modifies I/O priorities somewhat)

Kernel 2.6.18 (20 September 2006)[edit]

CFQ became the default scheduler, replacing the anticipatory scheduler.[3]

Kernel 5.0 (2019-03-03)[edit]

CFQ has been removed.[4][5] CFQ evolved into Budget Fair Queueing (BFQ).[6][7]

See also[edit]

References[edit]

  1. ^ "Source code of the IO scheduler, (contains copyright information in header)". Retrieved 28 December 2017.
  • ^ D. John Shakshober (June 2005). "Choosing an I/O Scheduler for Red Hat® Enterprise Linux® 4 and the 2.6 Kernel". Red Hat magazine. Archived from the original on 27 August 2007. Retrieved 20 November 2011.
  • ^ Jens Axboe (June 2006). "Linux Kernel 2.6.18 - Make CFQ the default IO scheduler". Retrieved 20 March 2016.
  • ^ Jens Axboe (2018-10-12). "block: remove legacy IO schedulers". Retrieved 2020-10-25.
  • ^ Linus Torvalds (2018-12-28). "Merge tag 'for-4.21/block-20181221' of git.kernel.dk/linux-block". Retrieved 2020-10-25.
  • ^ "Budget Fair Queueing I/O Scheduler".
  • ^ "BFQ I/O Scheduler Queued For Linux 4.12 - Phoronix". www.phoronix.com.
  • Sources[edit]

    External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=Completely_fair_queueing&oldid=1146817829"

    Categories: 
    Disk scheduling algorithms
    Linux kernel features
    Scheduling algorithms
    Hidden categories: 
    Articles needing additional references from February 2013
    All articles needing additional references
     



    This page was last edited on 27 March 2023, at 03:48 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki