최근에 x265
내 워크스테이션에서 일부 비디오를 인코딩 했는데 문제가 발생했습니다. nice -n 20 x265
낮은 우선순위를 사용하여 시작하더라도 실행되는 동안 컴퓨터 속도가 계속 느려집니다. 모든 것이 여전히 작동합니다. 단지...천천히! 터미널에 입력할 때 문자가 나타나기까지 지연이 발생하는 경우도 있습니다.
이걸 안고 살아야 하나? 아니면 제가 시도해 볼 수 있는 다른 것이 있나요?
편집하다:어쩌면 다음은 nice 값이 실제로 적용되었음을 증명할 수 있습니까 x265
? NI
칼럼을 보세요 .
% ps -awux -O nice | egrep "x265|PID"
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND PID NI TT STAT TIME COMMAND
nobody 56654 789.3 3.7 785656 623384 11 SN+J 11:56PM 6:05.80 x265 --input-csp 56654 20 11 SN+J 6:05.80 x265 --input-csp i420 --bframes 5 -
답변1
FreeBSD 커널은 I/O 스케줄러와 같은 것을 구현합니다.스케줄링 스케줄링. 매뉴얼 페이지를 보면 장치별 IO 스케줄러인 것으로 보입니다. 개인적으로 나는 이것이 FreeBSD 라이브 애플리케이션에 대한 좋은 기조라고 생각하며, 솔직히 말해서 기존 FreeBSD 문서를 검색해야 할 좋은 이유입니다.
rr
추측이긴 하지만, 루트 파티션의 블록 장치가 스케줄러를 사용하도록 구성되고 gsched
미디어 파일이 별도의 블록 장치에 저장될 수도 있습니다. 이를 통해 운영 체제가 I/O 측면에서 더 빠르게 응답하도록 할 수도 있습니다. I/O 병목 현상이 발생합니까?
아마도 gsched
프로세서 우선순위 구성과 함께 다음과 같은 것을 적용할 수 있습니다.rtprio 및/또는 idprio- 미디어 파일 처리량이 많은 경우에도 기본 운영 체제의 응답성을 향상시키는 데 도움이 될 수 있습니다.
또는 CPU별 최적화에 따라 포트를 컴파일하여 더 많은 프로세서 대역폭을 얻을 수 있습니다. 이 효과를 달성하기 위해 포트 구축 프로세스에 적용할 수 있고 적용할 수 있는 필드가 MACHINE_CPUARCH
있습니다 . CPUTYPE
/etc/make.conf
매뉴얼 페이지]. 물론 매뉴얼은 FreeBSD를 사용하여 포트를 구축하는 방법에 대한 많은 지침을 제공합니다.제5장]. 나 자신도 오래된 Toshiba MACHINE_CPUARCH?=amd64
노트북 을 사용하고 있습니다 CPUTYPE?=core2
. 프로세서나 블록 I/O 기능에 과부하가 걸린 상태에서 벤치마킹하지는 않았지만 LAN 게이트웨이로는 잘 작동하는 것 같았습니다.
답변2
때로는 단일 I/O 작업이 첫 번째 장치에서 직접 작동하지 않는 작업을 포함하여 모든 I/O 작업의 커널 성능에 영향을 미칠 수 있습니다.
I/O 스케줄링 우선순위를 제어하는 첫 번째이자 간접적인 방법은 이미 언급한 프로세스의 유예 수준을 조정하는 것입니다. 최신 Linux에서는 nice 값이 19(최대값)인 프로세스가 기본적으로 다음 위치에 있습니다.최고의 노력우선순위는 (19 + 20) / 5 = 7과 같으며 이는 이 클래스에서 사용할 수 있는 가장 낮은 우선순위입니다. 보다 일반적으로 이러한 매핑 함수에 따르면 그 범위는 [0,7]입니다.
I/O 스케줄링을 제어하는 보다 직접적이고 강력한 두 번째 방법은 프로세스에 할당된 I/O 스케줄링 클래스에 수동으로 개입하는 것입니다. 이를 통해 프로세스를 두 개의 추가 클래스에 넣을 수도 있습니다. 실시간 교실, 최선 노력 수준 0보다 높은 우선순위 유휴 수업, 최선 노력 수준 7보다 우선순위가 낮습니다. 이 마지막 항목은 이론적으로 다른 I/O 작업이 유휴 예약된 프로세스 작업을 기다릴 수 없음을 보장합니다. 이
nice
명령 과 유사하게ionice
지정된 우선순위로 프로세스를 생성하거나 기존 프로세스의 우선순위를 변경할 수 있습니다. 이 도구와 Linux 커널의 I/O 예약에 대한 자세한 내용은 다음을 참조하세요.이온스 맨페이지.
그렇다면 프로세스를 시작해 보셨나요 ionice -c 3 x265 ...
?
PS 죄송합니다. 답변을 게시한 후 질문에 "FreeBSD" 태그가 있는 것을 발견했습니다. 이 태그는 다음과 같이 축소될 수 있습니다.
FreeBSD에는 I/O 스케줄러가 없는 것 같습니다. 이 기능이 있고 사용하기 매우 쉬운 Linux 시스템에서 작업을 수행하는 것을 고려할 수 있습니다.
답변3
당신은 "rctl"을 원합니다
바라보다:
man rctl
이를 통해 사용자, 프로세스, 감옥 또는 로그인 클래스별로 리소스를 할당할 수 있습니다. 예를 들어
# user root, maximum reads of 400 transfers per sec (tps) per the whole user :
rctl -a user:root:readiops:throttle=400/user
# user root, maximum reads of 30Mb per sec (31,457,280 bytes) per the whole user :
rctl -a user:root:readbps:throttle=31457280/user