디스크 IO 우선순위를 어떻게 자동으로 설정할 수 있나요?

디스크 IO 우선순위를 어떻게 자동으로 설정할 수 있나요?

일부 IO 집약적인 애플리케이션(Virtualbox, Steam 데이터 확인 또는 심지어 )을 사용하면 dd시스템이 거의 응답하지 않게 됩니다. 모든 것이 일반 우선순위로 시작되었음에도 불구하고 데스크탑을 매우 느리게 만들고 다른 응용프로그램의 시작을 많이 지연시킵니다.

예를 들어 우선 순위를 유휴 상태로 변경하는 것과 같은 것을 사용할 수 있다는 것을 알고 있지만 ionice많은 프로세스를 생성하는 Virtualbox의 경우에는 어려워집니다.

시스템에 특정 유형의 힌트를 제공하여 일부 특정 응용 프로그램을 시작할 때 가장 낮은 IO 우선 순위로 시작되도록 할 수 있습니까?

답변1

참고: 이 솔루션은 설명된 대로 cfq 스케줄러에서만 작동합니다.여기. 발급하여 어떤 것을 사용하는지 확인해야합니다

cat /sys/block/sda/queue/scheduler

그리고변화필요하다면.

내가 올바르게 이해했다면 ionice명령을 시작할 때마다 일부 설정이 적용되기를 원할 것입니다. 다음과 같은 방법으로 할 수 있습니다:

echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/

VirtualBox첫 번째 명령은 작은따옴표로 묶인 텍스트를 내용으로 사용 하여 파일을 만듭니다 . 여기에는 프로그램의 전체 경로가 있어야 합니다. 왜냐하면 하나만 지정하면 VirtualBox방금 만든 파일로 해석하여 "루프"를 생성할 수 있기 때문입니다.

두 번째 명령은 파일을 실행 가능하게 만들고 세 번째는 이 새 파일을 "시스템" bin 폴더 앞에 있는 폴더로 이동하므로 /usr/bin원본 대신 새 파일이 실행됩니다. "$@" 부분에는 명령이 호출된 모든 인수가 포함되어 있으므로 실제 VirtualBox 명령으로 전달됩니다.

이 슈퍼유저 질문에 대한 답변("예")에 따르면하위 프로세스는 상위 프로세스로부터 이온 우선순위를 상속합니까? 실행 중인 프로세스의 IO 우선순위를 어떻게 확인합니까?ionice, 다음과 같이 상위 프로세스 에 충분해야 합니다 .

ionice -c 3 VirtualBox

에서ionice 매뉴얼 페이지, 다음 I/O 예약 클래스 값을 사용할 수 있습니다.

  • 없음의 경우 0
  • 실시간 1개
  • 최선의 노력을 위한 2
  • 유휴 상태인 경우 3(위 예에서 사용됨)

번호나 클래스 이름을 사용할 수 있습니다.

또한 -n level옵션은 유효한 데이터(우선순위 수준)가 0-7인 실시간 및 최선형 클래스에 적용 가능합니다.

답변2

'renice' 명령을 사용하여 프로세스의 우선순위를 지정할 수 있습니다.

renice -<priority> <application's pid>

드라이브 회전 속도가 너무 느려질 수도 있으므로 Virtualbox와 같은 응용 프로그램을 시작하려면 작업을 시작하기 전에 회전 속도를 높여야 합니다(시간이 걸릴 수 있음).

관련 정보