게임 프로세스의 우선 순위를 실시간으로 변경하는 것이 CPU에 유해합니까?

게임 프로세스의 우선 순위를 실시간으로 변경하는 것이 CPU에 유해합니까?

Windows에서는 성능 향상을 위해 게임 프로세스의 우선 순위를 "높음" 또는 "라이브"로 변경하는 경우가 많습니다. 이로 인해 내 하드웨어에 문제가 발생한 적이 없습니다. 나는 Linux에서 명령을 사용하여 chrt게임 프로세스의 실시간 우선순위를 변경할 수 있을 것이라고 생각했습니다. renice-20(가장 높은 우선순위)으로 변경해도 눈에 띄는 향상이 제공되지 않는 것 같기 때문입니다. 그러나 CPU에 해를 끼칠지 여부를 알지 못한 채 이 작업을 수행하는 것은 조심스럽습니다. 누구든지 나에게 위험을 말해 줄 수 있습니까?

답변1

프로세스의 우선순위를 변경하면 다른 프로세스가 CPU 시간을 놓고 경쟁할 때 해당 프로세스가 실행되는 빈도가 결정됩니다. 프로세스가 CPU 시간을 사용하는 유일한 프로세스인 경우에는 아무런 효과가 없습니다. 유휴 시스템에서 우선 순위가 가장 낮은 프로세스는 우선 순위가 가장 높은 프로세스와 마찬가지로 CPU 시간의 100%를 얻습니다.

따라서 더 높은 우선 순위로 게임을 실행할 수 있지만 시스템의 다른 항목이 CPU 시간을 많이 사용하지 않는 한 게임이 더 빠르게 실행되지는 않습니다.

X 서버보다 우선 순위를 낮게 유지하는 것이 좋습니다. 왜냐하면 X 서버에 CPU 시간이 필요한 경우 게임에서 복잡한 내용을 표시해야 하기 때문일 가능성이 높으며 표시는 일반적으로 CPU를 많이 사용하는 작업입니다. 많은 CPU 시간) 작업은 GPU에서 수행됩니다. CPU 우선순위는 GPU에 영향을 미치지 않습니다.

CPU는 코드를 실행하도록 설계되었습니다. 프로세스 우선순위를 변경해도 CPU 작업량에는 영향이 없지만, 그렇게 한다고 해도 CPU가 손상되지는 않고 CPU가 더 뜨거워지기만 하여 컴퓨터 팬이 더 세게 돌아가게 됩니다.

답변2

스레드를 실행할 때 CPU 요구량을 변경하는 것에 대해 이야기하고 있습니까?

최신 CPU는 실제로 매우 빠른 속도의 스테핑을 사용합니다. 예를 들어, Intel Core i5/i7의 클럭을 프로파일링하면 클럭 속도가 매우 빠르게 위아래로 깜박이는 것을 볼 수 있습니다. 이는 전력 소비에 따라 성능을 조정하려는 인텔의 노력의 일환입니다. 데스크톱 컴퓨터에는 사용할 수 있는 전력이 많을 수 있지만 CPU가 더 열심히 작동하면 해당 전력이 열로 변환되므로 와트당 최대 전력을 얻는 것이 중요합니다.

나는 다른 게임 포럼에서 읽은 내용을 통해서만 이것을 알고 있습니다. 저는 CPU 과학자가 아닙니다.

스레드를 최대 "성가심 수준"으로 조정하는 데 아무런 해가 없다고 생각합니다. 주의해야 할 유일한 것은 CPU가 얼마나 뜨거워지는가인데, BIOS의 과전압 기능을 사용하지 않는 한, 종료하기 전에 CPU를 태워버리는 것은 거의 불가능합니다.

최신 CPU는 속도를 빠르게 변경하도록 설계되었습니다. Intel Speed ​​Stepping 및 "CPU C 상태"를 검색하면 무슨 뜻인지 알 수 있습니다.

답변3

Linux에서 프로그램을 사용한다고 해서 reniceCPU가 소모되지는 않지만 원하는 대로 작동하지 않을 수도 있습니다.

우선순위는아무것도 없다CPU가 코드를 실행하는 속도와 관련됩니다. 동일한 속도로 다른 우선순위를 가진 프로그램의 코드를 실행합니다. 우선순위를 변경하는 것은 선택이 주어졌을 때 실행할 프로그램을 운영 체제가 선택하는 것입니다. CPU는 한 번에 하나의 실행 "스레드"만 실행할 수 있습니다(기술적으로 멀티 코어 CPU의 경우 코어당 스레드 1개). 더 많은 작업을 수행해야 하는 경우 멀티태스킹에 의존합니다. 즉, 다른 프로그램 실행 사이를 앞뒤로 전환하여 CPU보다 더 많은 스레드가 실행되고 있다는 착각을 불러일으킵니다. 각 작업에 할당할 시간을 선택할 때 우선순위를 단서로 사용합니다.

컴퓨터에서 "실시간"은 "너무 빠르게 실행"이 아니라 "프로세스를 선점하지 않음"을 의미합니다. 실시간 프로그래밍은 많은 분야에서 중요합니다. 예를 들어, 자동차의 잠김 방지 브레이크 시스템을 관리하는 소프트웨어를 작성한다면진짜OS가 앞유리 와이퍼에 대한 진단을 실행해야 한다고 결정하기 때문에 내 작업이 몇 밀리초 늦게 실행되는 것을 원하지 않습니다. 따라서 자동차의 잠김 방지 브레이크 관리 소프트웨어는 "실시간" 우선순위로 작동합니다.

솔직히 말해서 "실시간" 우선순위는 Linux에서 약간 잘못된 이름입니다. 이는 Linux가 프로세스를 예약하는 방식 때문입니다. Windows에서는 더 높은 우선 순위로 실행 중인 프로세스가 있는 경우 더 높은 우선 순위 작업이 무언가를 기다리고 있지 않는 한 더 낮은 우선 순위로 실행 중인 프로세스는 CPU 시간을 전혀 얻지 못합니다. "실시간" Windows 작업 위에서는 커널 프로세스만 실행할 수 있습니다. Windows에는항상 백그라운드에서 실행되는 Bloatware이므로 우선순위를 "실시간"으로 높이면 모든 쓰레기가 실행되는 것을 방지할 수 있습니다.

그러나 문제가 있습니다. 때로는 우선순위가 높은 작업이 우선순위가 낮은 작업 중 하나에 따라 달라지는 경우도 있습니다. 이것을 "우선순위 역전"이라고 하며 멀티스레드 프로그래밍 세계에서는 큰 주제입니다. 이런 일이 발생하면 우선 순위가 높은 작업이 자체적으로 중지되고 있다는 사실을 깨닫지 못한 채 우선 순위가 낮은 작업을 중단시킬 수 있습니다. Linux에서는 이런 일이 발생하지 않습니다. 왜냐하면 Linux에서는 우선 순위가 전부 아니면 전무(all-or-nothing) 접근 방식이 아니라 각 프로그램에 CPU의 어느 부분을 할당할지 결정하는 방법으로 간주되기 때문입니다. -20으로 실행되는 프로세스는본질적으로0에서 실행하는 것보다 CPU 시간이 더 많이 걸리지만 -20개의 프로그램이 있어도 0 프로그램은일부CPU 시간. 메모리를 사용할 수 있는 경우 현재 Linux 스케줄러는 프로그램에 -1을 0으로 두 배 더 많은 CPU 성능을 제공하고, -2를 -1로 두 배 더 많은 CPU 성능을 제공하는 식입니다. 이는 -20의 프로그램에서 CPU 시간의 0.9999046%를 사용하지만 여전히 작은 양이 있음을 의미합니다.하다0시에 프로그램으로 이동합니다. 0의 프로그램은 200kHz 프로세서에서 실행되는 것처럼 느껴집니다!

네가 원했다면진짜실시간으로 다른 것이 당신을 선점하는 것을 방지할 수 있으며, 커널 드라이버를 작성하거나 Linux용 실시간 확장을 사용해야 합니다. Redhat에는 Linux에서 진정한 실시간 처리를 가능하게 하는 MRG라는 도구가 있습니다. 이 맥락에서 "실시간"은 특정한 것을 의미합니다. MRG에서 "실시간" 그룹의 사용자는 이러한 실시간 확장을 사용할 수 있습니다(고의적으로 친숙한 Linux 스케줄러를 사용하지 않기 때문에 프로세서를 영원히 바쁜 상태로 유지할 수 있음).

관련 정보