Linux의 HyperThreading 시스템의 CPU 시간 수


0

다중 스레드 응용 프로그램이 수행하는 작업량을 추정하려고합니다. proc에서 CPU 시간을 가져갈 수 있기 때문에 실제 CPU / 코어를 사용하는 것은 매우 간단한 작업이며 응용 프로그램이 차지하는 CPU의 양을 추정합니다.

그러나 HT 지원 프로세서는 어떻습니까? 시간은 어떻게 계산됩니까? 스레드가 HT 레이스의 경우 프로세서 파이프가 비워지기를 기다리는 경우 CPU에서 소비 한 시간으로 계산됩니까? 또는 스레드가 HT를 10 % 활용할 수 있다면 실제 CPU 실행 시간의 10 %를 계산합니까?

답변:


1

죄송합니다. 매우 명확하지 않습니다.

HT를 활성화 한 경우 코어 당 2 개의 논리 프로세서가 있습니다. 비활성화하면 하나만있는 것입니다. (이것은 우리가 "CPU"의 의미를 지속적으로 제한하지 않고 스케줄러의 작동 방식에 대해 이야기 할 수있게합니다.) 어느 쪽이든, 논리 프로세서는 OS에서 프로세서로 인식되며 최적화 일정을 잡는 일부 시도를 제외하고는 OS는 하이퍼 스레딩에 의해 또는 하이퍼 스레딩으로 인해 다른 작업을 수행하지 마십시오.

LP 컨텍스트 전환에서 스레드로 전환 할 때부터 다른 스레드로 전환 할 때까지 해당 스레드에서 LP를 100 % 사용하는 것으로 간주됩니다. OS는 LP의 스레드가 코어의 10 % 또는 코어의 90 %를 사용하는지 또는 다른 LP의 스레드가 수행중인 작업으로 인해 완전히 정지되었는지 알 수있는 방법이 없습니다. OS는 실행 중이라고 생각합니다.

HT는 스레드 우선 순위와 같은 것을 구현하지 않습니다. 따라서 두 개의 스레드가 한 코어의 두 LP에서 실행하려고 시도하고 하나는 OS에서 다른 코어보다 우선 순위가 높은 것으로 설정되면 코어는 그것에 대해 아무것도 할 수 없습니다-알 수있는 방법이 없습니다. 코어는 두 스레드가 동일한 우선 순위를 갖는 것으로 간주하고 이에 따라 마이크로 아키텍처 리소스를 할당합니다.

* 최적화 : 최신 OS는 LP와 코어의 관계를 알고 있으며, 예를 들어 number_of_cores 이상의 스레드가 실행될 때까지 각 코어에서 하나의 LP 만 사용하려고 시도 합니다. 캐시 투자에 관한 한 코어의 두 LP는 동등한 것으로 간주됩니다. 기타


제이미, 철저한 설명 감사합니다. 내가 이해하는 한, 당신이 말하려는 것은 NTHREADS == NCORES논리 코어 시간 실제로 공유 할 수있는 실제 명령 양을 무시하고 CPU 시간으로 계산한다는 것입니다. 따라서 HT를 활성화 한 상태에서 소비 한 CPU 시간을 거의 두 배로 늘리고 (완전히) 공정한 큐잉의 경우 (LP) 코어 당 평균 FLOPS의 절반을 얻을 수 있습니까?
grandrew

Q1 : 그렇습니다. "공유 할 수있는 지침"이라는 문구는 얻지 못합니다. 그 현장에서 무엇을 공유하겠습니까? Q2 : 그렇습니다. HT를 활성화 NTHREADS==2xNCORES하면 사용 된 CPU 시간이 2 배이지만 작업이 2 배는되지 않습니다. 셋째 : HT가 비활성화되었을 때 코어의 FP 장치에 병목 현상이 발생한 경우 HT와 코어 당 2 개의 스레드를 사용하는 경우 총 FP 작업은 코어 당 1 개의 스레드와 거의 동일하지만 각 스레드는 FP의 절반 만 가져옵니다 thruput. 그러나 FP 성능은 메모리 액세스와 같은 FP 장치 이외의 요소에도 의존하므로 확실하지 않습니다.
Jamie Hanrahan

내가 알다시피, 두 개의 스레드가 HT CPU에서 단일 코어의 시간 동안 경쟁 할 때-스레드는 코어가 해제되기를 기다리는 대신 일부 코어를 "공유"할 수 있습니다-코어가 다른 코어와 공유 할 것이있는 경우 대기 중) 첫 번째 스레드를 실행하는 동안 스레드.
grandrew

음 ... "첫 번째 스레드"라는 개념이 없습니다. 즉, 어느 LP도 우선하지 않습니다. 펌웨어는 두 LP가 모두 진행할 수 있도록 코어 리소스를 예약하려고합니다.
Jamie Hanrahan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.