완전 균등화 큐잉

Completely fair queueing

CFQ(완전 균등화 큐잉)는 2003년에 Jens Axboe에 의해 작성된 Linux 커널[1]I/O 스케줄러입니다.

묘사

CFQ는 프로세스별로 송신된 동기 요구를 다수의 프로세스별 큐에 배치한 후 각 큐에 타임라이스를 할당하여 디스크에 액세스합니다.큐가 송신할 수 있는 시간 슬라이스 길이와 요청 수는 지정된 프로세스의 I/O 우선순위에 따라 달라집니다.모든 프로세스의 비동기 요구는 priority별로 1개씩 적은 수의 큐로 일괄 처리됩니다.CFQ는 명시적으로 예상되는 I/O스케줄링을 실시하지 않지만 동기 I/O 종료 시 프로세스 큐가 아이돌 상태가 되도록 함으로써 시스템 전체의 집약 throughput이 양호해지는 것과 같은 효과를 얻을 수 있습니다.이것에 의해, 그 프로세스로부터 I/O가 한층 더 「예상」됩니다.이는 공정에 I/O 시간 슬라이스를 부여하는 자연스러운 확장이라고 볼 수 있습니다.

역사

통합 전

2003년 2월 Andrea Arcangeli는 확률론적 페어 큐잉 I/O 스케줄러에 대한 아이디어를 Jens Axboe에게 제출했고, 그 후 이를 구현했습니다.Jens Axboe는 새로운 버전을 Complete Fair Queueing 스케줄러라고 부르며 첫 번째 구현을 개선했으며 2.5.60 개발 시리즈 커널에 적용하기 위한 패치를 제작했습니다.

커널 2.6.6 (2004년 5월 10일)

CFQ I/O 스케줄러는 처음에 옵션 I/O 스케줄러로 메인라인 커널에 통합되었습니다.부팅 시 'elevator' 매개 변수를 사용하여 스케줄러를 커널로 변경할 수 있습니다.

커널 2.6.9 (2004년 10월 19일)

Red Hat Enterprise Linux 4는 2.6.[2]9 기반의 커널을 사용했음에도 불구하고 이 I/O 스케줄러를 기본값으로 사용했습니다.

커널 2.6.10 (2004년 12월 24일)

CFQv2라는 이름의 CFQ 스케줄러의 두 번째 릴리스는 2.6.10에 포함되어 있으며, 향상된 응답성 및 이전 버전에서 존재했던 기아 문제의 제거가 포함됩니다.sysfs 파일시스템 내의 /sys/block/<block_device>/queue/scheduler 변수를 변경함으로써 실행 시 스케줄러를 전환할 수도 있습니다.

커널 2.6.13 (2005년 6월 27일)

CFQ 스케줄러는 CFQv3라는 새로운 타임슬라이스 설계로 이행했습니다특히 ioprio_get(2)ioprio_set(2)를 구현하여 사용자가 프로세스별 I/O 우선순위를 설정할 수 있도록 합니다(통상 ionice(1) 명령어를 사용하여 I/O 우선순위를 다소 변경할 수도 있습니다).

커널 2.6.18 (2006년 9월 20일)

CFQ가 디폴트스케줄러가 되어 예측 [3]스케줄러가 대체되었습니다.

커널 5.0(2019-03-03)

CFQ가 [4][5]삭제되었습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Source code of the IO scheduler, (contains copyright information in header)". Retrieved 28 December 2017.
  2. ^ 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.
  3. ^ Jens Axboe (June 2006). "Linux Kernel 2.6.18 - Make CFQ the default IO scheduler". Retrieved 20 March 2016.
  4. ^ Jens Axboe (2018-10-12). "block: remove legacy IO schedulers". Retrieved 2020-10-25.
  5. ^ Linus Torvalds (2018-12-28). "Merge tag 'for-4.21/block-20181221' of git.kernel.dk/linux-block". Retrieved 2020-10-25.

원천

외부 링크