Noop 스케줄러

Noop scheduler
Linux 커널의 단순화된 구조에서 I/O 스케줄러의 위치.

NOP 스케줄러는 Linux 커널의 가장 단순한 I/O 스케줄러입니다.이 스케줄러는 Jens Axboe에 의해 개발되었습니다.

개요

NOP 스케줄러는 모든 착신 I/O 요구를 단순한 FIFO 큐에 삽입하고 요청 마지를 구현합니다.이 스케줄러는, 호스트에 포함되는 섹터 번호에 근거해 요구의 순서를 변경할 필요가 없다고 판단되었을 경우에 편리합니다.즉, 스케줄러는 호스트가 요구를 생산적으로 재배열하는 방법을 인식하고 있지 않다고 가정합니다.

이 상황이 바람직한 기본 상황은 (일반적으로) 세 가지입니다.

  • I/O 스케줄링이 I/O 스택의 하위 계층에서 처리되는 경우.스케줄링을 처리할 수 있는 하위 계층의 예로는 블록 디바이스, 지능형 RAID 컨트롤러, 네트워크 연결 스토리지 또는 스위치드 스토리지 영역 [1]네트워크를 통해 액세스하는 스토리지 서브시스템과 같은 외부 연결 컨트롤러가 있습니다.I/O 요청은 낮은 수준에서 재스케줄될 수 있으므로 호스트 수준에서 IOP의 순서를 다시 지정하면 낮은 수준에서 실행 취소되는 작업에 호스트 CPU 시간이 사용되므로 지연 시간이 증가하거나 처리량이 생산적인 이유 없이 줄어듭니다.
  • 섹터 위치의 정확한 세부 정보가 호스트 시스템에서 숨겨지기 때문입니다.예를 들면, RAID 컨트롤러가 단독으로 스케줄링을 실시하지 않는 경우가 있습니다.호스트에는 요청 순서를 변경할 수 있는 기능이 있지만 RAID 컨트롤러에는 없는 경우에도 호스트 시스템은 검색 시간을 단축하기 위해 요청을 정확하게 다시 정렬할 수 있는 가시성이 부족합니다.호스트는 어떤 시퀀스가 다른 시퀀스보다 나은지 판단할 방법이 없기 때문에 액티브큐를 최적으로 재구성할 수 없기 때문에 (이론적으로) 이러한 세부사항을 더 잘 알고 있는 디바이스에 전달해야 합니다.
  • 읽기/쓰기 헤드의 이동은 재주문 오버헤드를 정당화할 만큼 애플리케이션 성능에 영향을 미치지 않기 때문입니다.일반적으로 플래시 드라이브나 SSD(Solid-State Drive)와 같은 비회전식 미디어가 이에 해당합니다.

단, NOP가 반드시 위의 시나리오에서 권장되는 I/O스케줄러는 아닙니다.성능 튜닝에 대한 일반적인 지침은 관찰된 작업 부하 패턴에 기초해야 한다(단순한 경험 규칙을 만드는 능력 부족).다른 애플리케이션으로부터 사용 가능한 I/O 대역폭에 대한 경합이 있는 경우, 가장 중요하다고 생각되는 애플리케이션을 위해 대역폭을 보다 지능적으로 분할함으로써 다른 스케줄러가 더 나은 성능을 창출할 수 있습니다.예를 들어, LDAP 디렉토리 서버를 실행하면, 기한의 읽기 환경설정 및 대기 시간 보증이 도움이 될 수 있습니다.동시에 많은 다른 애플리케이션을 실행하는 데스크톱 시스템을 사용하는 사용자는 CFQ의 조정 가능 또는 특정 애플리케이션의 대역폭을 다른 애플리케이션(ionice)보다 우선하는 기능에 액세스할 수 있습니다.

애플리케이션간에 경합이 없는 경우는, 상기의 3개의 시나리오에 대해서 스케줄러를 선택해도, 거의 메리트가 없습니다.이는 결과적으로 다른 워크로드에서 추가 용량을 사용할 수 있도록 하는 방식으로 워크로드의 운영 권한을 박탈할 수 없기 때문입니다.즉, I/O 경로가 포화 상태가 아니어서 모든 워크로드에 대한 요구가 드라이브 헤드의 불합리한 이동(운영체제가 인식하고 있는 것)을 초래하지 않는 경우, 1개의 워크로드에 우선순위를 부여하면 원하는 이점을 제공하는 대신 I/O를 스케줄링하는 데 소비된 CPU 시간이 낭비되는 상황이 발생할 수 있습니다.

Linux 커널은 또한 nomergessysfs 매개 변수는 스케줄러에 의존하지 않는 구성으로, 블록 계층의 병합 로직 요청이 완전히 비활성화되거나 더 복잡한 병합 [2]시도에만 비활성화될 수 있습니다.이로 인해 대부분의 I/O스케줄러의 오버헤드가 요청 큐 내의 인접 섹터를 Marge하기 위한 시도와 관련되어 있으므로 NOP 스케줄러의 필요성이 줄어듭니다.그러나 대부분의 I/O 워크로드는 SSD와 [3][4]같은 짧은 대기 시간 스토리지에서도 일정 수준의 요청을 병합하면 이점을 얻을 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Choosing an I/O Scheduler for Red Hat Enterprise Linux 4 and the 2.6 Kernel". Red Hat. Archived from the original on 2007-08-27. Retrieved 2007-08-10.
  2. ^ "Documentation/block/queue-sysfs.txt". Linux kernel documentation. kernel.org. December 1, 2014. Retrieved December 14, 2014.
  3. ^ "6.4.3. Noop (Red Hat Enterprise Linux 6 Documentation)". Red Hat. October 8, 2014. Retrieved December 14, 2014.
  4. ^ Paul Querna (August 15, 2014). "Configure flash drives in High I/O instances as Data drives". Rackspace. Retrieved December 15, 2014.

외부 링크