유닉스 명령이 가장 좋은 것은 무엇입니까?


9

빠른 벤치마킹 테스트를 위해 nice와 ionice를 최대 효과로 결합하는 방법, 즉 명령이 가능한 한 적은 리소스를 사용하지 않고 (유휴 상태없이) 어떻게 할 수 있습니까?

(나는`nice -n 19 ionice -c 2 [command]와 비슷하다고 생각하지만 ionice의 "-n"(classdata param)에 대해서는 확실하지 않다.


3
영리한 질문 제목에는 1을 더한 것이지만 일반적으로 좋은 질문이기도합니다.
Lizardx

답변:


10

원하는 전체 명령은 다음과 같습니다.

chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]

chrt처음에 명령은 nice 값에 0.5를 추가하는 것과 같습니다 배치 스케줄링 클래스에 물건을 전환됩니다. ionice에 대한 -n 옵션은 실시간 ( -c 1) 및 최선 노력 ( -c 2) 옵션에 대한 단순 우선 순위이며, 낮은 값은 좋은 값 (0-7 범위)과 같이 높은 우선 순위입니다. 그러나,은 ionice 명령은 I / O 스케줄링 클래스 및 우선 순위는 CPU 스케줄링 매개 변수에서 파생 된 기본적으로 있기 때문에, 꼭 필요한 것은, 그리고 nice -n 19의미한다 ionice -c 2 -n 7.

그러나 CPU 및 I / O 스케줄링 클래스를 모두 유휴로 설정하여 절대적인 최소 자원 사용을 얻을 수 있습니다. 두 경우 모두 '유휴'스케줄러는 실제로 유휴 스케줄러가 아니며 여전히 자원을 사용할 수 있습니다. 모든 것이 우선 순위가 더 높다는 것입니다.

CPU 스케줄링 클래스의 경우,이 chrt명령 도 필요하지 않지만 nice( 0유휴 스케줄링 클래스에서 우선 순위를 설정해야 함 ) 다음과 같이 명령을 사용합니다.

chrt -i 0 {command or PID}

niceLinux 의 명령은 SVR4 버전을 미러링하므로 스케줄링 클래스를 변경할 수 없으며 좋은 값만 가질 수 있습니다 (이는 Linux에서 고전적인 UNIX와 다르게 작동하지만 약간 OT입니다). 원래 다른 예약 클래스는 POSIX.1E 실시간 있었다으로 SCHED_RR하고 SCHED_FIFO, 결국 세트 예약 클래스에 명령 호출되고 chrt. 이 -i옵션은 SCHED_IDLE스케줄링 클래스 를 사용하도록 지정합니다.

I / O 스케줄링 클래스에는을 사용 ionice합니다. 정확한 명령은 다음과 같습니다.

ionice -c 3 {command or PID}

-c옵션은 사용할 스케줄링 클래스를 지정하고 3은 유휴 클래스의 번호입니다. 사용중인 블록 I / O 스케줄러에 따라 실제로는 아무런 영향을 미치지 않을 수 있습니다. 특히, noopI / O 스케줄러는 우선 순위 또는 스케줄링 클래스를 전혀 지원하지 않으며 deadline스케줄러 (레거시 스케줄러 및 blk-mq 둘 다)도 지원하지 않습니다.

자신의 프로그램이나 다른 프로세스를 위해 프로그래밍 방식 으로이 작업을 수행하거나 다른 프로세스에 대한 작업을 조정하려면 sched_setschedulerioprio_set시스템 호출에 대한 매뉴얼 페이지를 확인하십시오 (더 많은 배경을 원한다면 읽을 가치가 있지만).


0

해당 명령이 다른 사람이 완료 될 때까지 완전히 기다리지 않기를 원한다고 가정하면 잠재적으로 리소스 부족 문제가 발생 하지 않습니다 .

nice -n19 [command]

으로 은 ionice은 현대 리눅스 커널에 비례하여 설정됩니다.

그건 그렇고 좋은 점과 chrt -b0는 관련이 없지만 CPU가 한 프로세스에서 다른 프로세스로 얼마나 자주 점프하는지입니다. 이 줄은 배치 프로그램이 캐시를 더 잘 사용하는 데 시간이 오래 걸리지 만 다른 명령에는 쓸모가 없습니다. 여기에서 볼 수 있듯이 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.