Linux 디스크 스케줄러를 작성하여 동적으로 변경할 수 있습니까 /sys/block/sda/queue/scheduler
? 변경 시 애플리케이션(예: Mysql)을 중지/시작해야 합니까?
답변1
걱정 없이 언제든지 IO 스케줄러를 변경할 수 있습니다. 트랜잭션이 손실되지 않도록 적절한 잠금으로 보호됩니다.
답변2
예, 가능합니다. 아니요. 애플리케이션을 중지/시작할 필요가 없습니다. 이는 가동 중지 시간 없이 프로덕션 시스템에서 다른 시스템을 (상대적으로) 안전하게 시험해 볼 수 있도록 설계된 것입니다.
새 스케줄러가 설치될 때까지 진행 중인 IO가 완료되도록 허용하고 새 IO 요청을 차단하는 "딸꾹질"이 발생합니다.
또한 각 블록 장치에 대해 서로 다른 IO 스케줄러를 설정할 수도 있습니다(커널에 표시되는 대로, 예: /dev/sda).
답변3
echo deadline > /sys/block/sda/queue/scheduler
예를 들어 애플리케이션 시작 부분에 하나를 추가하고echo
초기 스케줄러를 사용하여 끝에 또 하나를 추가 할 수 있습니다 .echo cfq > /sys/block/sda/queue/scheduler
cron
애플리케이션의 시작을 확인하고 이에 따라 스케줄러를 변경하는 스크립트를 작성할 수 있습니다 .