noop 스케줄러로 변경하려면 어떻게합니까?


29

랩톱에 SSD가 있는데 "noop"스케줄러로 전환하는 것이 좋습니다.

noop 스케줄러로 변경하는 방법은 무엇이며 어떻게 재부팅 할 때 지속되도록 변경해야합니까?

답변:


21

/ etc / default / grub을 편집 gksudo gedit /etc/default/grub하십시오. 여기에서 elevator = noop을 추가해야합니다.

변경 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop".

그런 다음 실행 sudo update-grub2하고 다시 시작하십시오.


6
익명의 대답은 시스템의 모든 디스크에서 기본값을 변경하는 데 좋습니다. 대조적으로 Eliah Kagan의 답변은 특정 디스크의 기본값을 설정합니다. 단일 드라이브가 장착 된 랩톱의 경우 두 가지 모두 잘 작동합니다. 여러 디스크가있는 시스템, 특히 SSD와 회전 드라이브가 모두있는 디스크의 경우 Eliah Kagan의 대답은보다 세밀한 제어를 제공합니다.
Royce Williams

28

하드 디스크가이라고 가정하십시오 /dev/sda. 그런 다음 현재 사용중인 스케줄러를 확인할 수 있습니다.

cat /sys/block/sda/queue/scheduler

(현재 사용중인 스케줄러는 [ ]괄호 로 묶습니다.)

그리고 noop 스케줄러를 사용하도록 만들 수 있습니다.

echo noop > /sys/block/sda/queue/scheduler

약간 더 자세한 내용 은 이 기사 를 참조하십시오.

변경 사항을 유지하려면에 명령을 넣을 수 있습니다 /etc/rc.local.


1
sudo를 사용해도 "permission denied"오류가 발생합니다.
Lucas Bustamante

@LucasBustamante 실행 중 sudo echo noop > /sys/block/sda/queue/scheduler입니까? 사용자로 실행되는 셸은 출력이 리디렉션되는 명령을 실행하기 전에 리디렉션을 설정하므로 작동하지 않습니다. echo noop | sudo tee /sys/block/sda/queue/scheduler대신 사용할 수 있습니다 . sudo에서도“hello”> x.txt를 에코 할 수 없습니까?를 참조하십시오 . 그리고 어떻게 배쉬 재로는 sudo를 사용하는 경우 "권한이 거부되었습니다"해결하기 위해? 더 많은 정보와 다른 접근 방법. (그렇지 않다면 알려주세요.)
Eliah Kagan

대답 해 주셔서 감사합니다. NVMe SSD를 사용하고 있는데, 나는 serverfault.com/questions/693348/을
Lucas Bustamante

14

이 데비안 레퍼런스 는 SSD를 동적으로 감지하고 이에 따라 스케줄러를 변경하는 방법을 보여줍니다.

다른 드라이브 유형의 시스템에서 udev 규칙을 사용하여 설정을 조정할 수 있습니다 (/etc/udev/rules.d/60-ssd-scheduler.rules 작성).

# 비 회전 디스크에 대한 최종 기한 스케줄러 설정

 ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="deadline"

커널이 회전 상태를 감지 할 수있게하려면 :

$ for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
/sys/block/sda/queue/rotational is 1
/sys/block/sdb/queue/rotational is 1
/sys/block/sdc/queue/rotational is 0   <=== Only this is SSD!

위의 모든 내용은 데비안 레퍼런스에서 직접 인용되었으며, 이는 처음 SSD 사용자가 관심을 가질만한 다른 요소가 많이 있습니다.


root @ titan : / sys / block / sd? / queue / rotational에서 f의 경우 / home / kessaras #; printf "$ f is"; 고양이 $ f; 완료 / sys / block / sda / queue / rotational이 0 임 / sys / block / sdb / queue / rotational이 0 임 / sys / block / sdc / queue / rotational이 1 / sys / block / sdd / queue / rotational이 1 루트 임 @titan : / home / kessaras # cat / sys / block / sd * / queue / scheduler [mq-deadline] 없음 [mq-deadline] 없음 [mq-deadline] 없음 [mq-deadline] 없음 여기서 뭔가 잘못되었습니다. 모든 하드 디스크를 마감일로 변경
Pavlos Theodorou

이 명령은 아무 것도 변경하지 않습니다. 디스크가 "회전"(HDD)인지 여부 만보고합니다. Rotational = 0은 SSD 또는 다른 비 회전 드라이브임을 의미합니다.
로이스 윌리엄스

그것은 아무것도 변하지 않는다는 것을 의미합니까? 그리고 udev 규칙은 무엇을 썼습니까? 노란색 상자 안에 있습니다. 당신은 임 장님 또는 내가 읽을 수 없다는 것을 의미합니까?
Pavlos Theodorou

1
내 실수. 최신 커널에서 스케줄러를 제거 한 것 같습니다 ... ??? / sys / block / sd? / queue / scheduler에서 f의 경우; printf "$ f is"; 고양이 $ f; 완료 / sys / block / sda / queue / scheduler는 [mq- 마감일] 없음 / sys / block / sdb / queue / scheduler는 [mq- 마감일] 없음 / sys / block / sdc / queue / scheduler는 [mq- 마감일 임 ] 없음 / sys / block / sdd / queue / scheduler is [mq-deadline] 없음 기사와 작성한 모든 내용이 정상입니다. 마감일 만 있고 선택할 수있는 것은 없습니다.
Pavlos Theodorou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.