Java로 간단한 프로그램을 만들었습니다.
public static void main(String[] args) throws InterruptedException {
while (true)
;
}
Linux 컴퓨터에서 이것을 실행하면 100 % CPU 사용량이 표시되지만 OS가 느리게 나타나지는 않습니다. 그러나 Windows에서 정확히 동일한 코드를 실행하면 CPU 사용률이 약 20 %에 불과합니다.
Windows에서 Oracle JRE를 사용하고 Linux에서 OpenJDK 6을 사용하고 있습니다.
Windows 스케줄러가 스레드를 무작위로 선점하고 Linux가 아닌지 궁금합니다.
답변
기본적 top
으로 Linux에서는 Windows 작업 관리자가 아닌 소위 IRIX 모드로 실행됩니다. 코어가 4 개 있다고 가정 해 봅시다.
-
IRIX 모드가 켜져 있으면 1 개의 완전히 활용 된 코어가 100 %이고 4 개의 코어가 400 %입니다.
-
IRIX 모드를 끄면 완전히 활용 된 1 개의 코어가 25 %이고 4 개의 코어가 100 %입니다.
이것은 기본적 top
으로 Linux에서 ~ 100 %로 무한 루프를 표시하고 Windows는 ~ 25 %로 표시하며 정확히 동일한 것을 의미합니다.
+ top
로 실행중인 동안 IRIX 모드를 전환 할 수 있습니다 . 숫자가 일치하게됩니다.Shifti