
Folding@Home 클라이언트를 실행하기 전에는 BOINC를 사용할 때 항상 "유휴" CPU 시간을 사용했습니다(해당 프로그램에 익숙하지 않은 분들을 위해 이 프로그램은 컴퓨터에서 엄청난 양의 과학적 계산을 실행하므로 매우 집약적입니다). 그러나 Windows와 Linux에서 다른 작업(Firefox, Netbeans 프로그래밍 등)을 수행하려고 하면 모든 프로그램이 매우 느리다는 것을 알았습니다.
이제 나는 2개 또는 3개 코어(4개 코어 시스템 가정)에서만 클라이언트를 실행하는 것과 같은 작업을 수행할 수 있다는 것을 알고 있지만 왜 이 "유휴" CPU 시간이 일반 우선순위를 가진 프로그램의 속도를 저하시키는지에 더 관심이 있습니다. 보통 우선순위의 프로세스가 유휴 우선순위의 프로세스보다 먼저 실행되고 필요한 경우 중단되지 않습니까? OS가 이를 관리하기 어려운 이유는 무엇입니까?
답변1
이러한 프로그램은 "유휴" CPU 시간 동안 실제로 실행되지 않고 낮은 우선 순위 프로세스로 실행됩니다. OS가 여러 애플리케이션을 실행하는 경우 프로세스 스케줄러를 사용하여 어떤 프로세스가 CPU에 액세스하는지, 얼마나 자주 액세스하는지 결정합니다. 이를 선점형 멀티태스킹이라고 합니다.
스케줄러는 프로세스 우선순위를 사용하여 어떤 프로세스가 CPU에 액세스할 수 있는지 결정합니다. 보통 우선 순위 프로세스는 유휴 우선 순위 프로세스보다 스케줄러에서 우선 순위를 갖지만 CPU는 여전히 사용되고 있으며 스레드와 프로세스 간 컨텍스트 전환에 약간의 오버헤드가 있습니다.
이제 CPU는 유휴 주기를 사용할 수 있는 대신 항상 100%로 실행되므로 스레드 전환 오버헤드로 인해 CPU가 유휴 상태인 경우보다 일부 프로세스와 인터럽트가 더 오래 걸릴 수 있다는 것을 상상하기 어렵지 않습니다.
이러한 프로그램 중 일부에는 컴퓨터가 사용 중일 때 프로세스 실행을 실제로 중지할 수 있는 옵션이 있습니다. 마우스나 키보드 활동을 감지하고 컴퓨터가 다시 유휴 상태라고 판단될 때까지 일정 시간 동안 스스로를 비활성화하여 백업을 시작합니다. 해당 옵션을 살펴보는 것이 좋습니다.
또 한 가지 지적해야 할 점은 CPU가 유휴 상태일 때 전체 사용 시보다 훨씬 적은 전력을 사용한다는 것입니다. 따라서 프로그램이 "예비" CPU 주기를 사용하는 동안 PC의 전력 소비를 쉽게 두 배로 늘려 한 달에 몇 달러의 전기 비용이 발생할 수 있습니다.
답변2
Chris Thompson의 답변에 몇 가지 작은 사항을 추가하면 됩니다. 그는 이미 주요 부분을 말했습니다.
이 점을 좀 더 강조하자면, 전력 소비와 전기 요금에 미치는 영향은 정말 중요할 수 있습니다. 우선순위가 낮은 추가 스레드로 인해 다른 프로그램이 영향을 받을 수 있는 이유는 프로세스 변경 시 추가 작업이 있을 수 있기 때문입니다(캐시 및 레지스터는 현재 실제로 사용 중입니다). 그리고 I/O 작업도 실제로 어느 정도 영향을 미칠 수 있습니다. 이러한 프로그램의 작업 대부분은 CPU 집약적이며 프로세스 우선순위의 영향을 받을 수 있지만 추가 I/O는 우선순위를 지정하기 어렵습니다. 그리고 추가 메모리 사용량으로 인해 시스템 속도도 느려집니다. 메모리가 가득 찬 경우 교체로 인해 시스템 성능이 크게 저하될 수 있습니다.
전력 소비에 대해 자세히 설명하자면, Intel Core i7 Extreme Edition의 실제 전력 소비 수치는 과부하 상태에서 약 300와트 이상인 것으로 나타났습니다. 최신 Intel Core 프로세서에는 CPU가 유휴 상태인 경우 다른 코어의 전력을 차단할 수 있는 정말 멋진 절전 기능이 있습니다. 그래서 이런 프로그램을 항상 실행해 놓으면 150~200W를 더 사용할 수 있을 것 같습니다. (내가 찾은 이전 숫자는 150와트 이상의 차이를 보여줍니다.) 그러나 신뢰할 수 있는 숫자를 찾지 못했기 때문에 100와트를 더 사용한다고 가정해 보겠습니다. (CPU가 더 많은 열을 생성하면 냉각 시스템도 더 많이 작동해야 한다는 점을 잊지 마십시오) - 이는 100*24*30 = 72kWh/월 또는 PC가 연중무휴로 실행되는 경우 864kWh/a를 제공합니다.