>시스템 튜토리얼 >리눅스 >듀얼 코어 CPU 킬러는 Linux 프로세스를 더 빠르게 실행합니다!

듀얼 코어 CPU 킬러는 Linux 프로세스를 더 빠르게 실행합니다!

WBOY
WBOY앞으로
2024-02-14 11:50:131192검색

Linux 시스템을 사용할 때 데이터 처리, 프로그램 컴파일 등과 같이 완료하는 데 많은 양의 컴퓨팅 리소스가 필요한 CPU 집약적 작업을 자주 접하게 됩니다. 그러나 시스템 하드웨어 구성이 낮으면 작업 실행 속도가 느려지고 작업 효율성에 심각한 영향을 미칠 수 있습니다. 이 문제를 해결하기 위해 이 기사에서는 프로세스를 특정 CPU 코어에 바인딩하여 프로세스의 실행 효율성을 향상시킬 수 있는 "CPU 바인딩"이라는 기술을 소개합니다.

듀얼 코어 CPU 킬러는 Linux 프로세스를 더 빠르게 실행합니다!

일반 애플리케이션의 경우 운영 체제의 기본 예약 메커니즘은 문제가 되지 않습니다. 그러나 프로세스가 더 높은 운영 효율성을 요구하는 경우, 다른 코어에 대한 스케줄링으로 인해 발생하는 오버헤드를 줄이기 위해 이를 별도의 코어에 바인딩하는 것을 고려할 필요가 있습니다.

프로세스/스레드를 특정 CPU 코어에 바인딩한 후 프로세스는 항상 이 코어에서 실행되며 운영 체제에 의해 다른 코어에 예약되지 않습니다. 그러나 바인딩된 코어는 여전히 다른 응용 프로그램을 실행하도록 예약될 수 있습니다.

운영 체제에 따른 멀티 코어 CPU 예약

현재 Windows와 Linux 모두 멀티 코어 CPU의 예약 및 관리를 지원합니다.

멀티 코어 환경에서 소프트웨어 개발의 핵심은 멀티 스레드 개발입니다. 이러한 멀티스레딩은 소프트웨어 구현에서의 멀티스레딩을 나타낼 뿐만 아니라 하드웨어에서도 멀티스레딩 기술의 사용을 요구합니다.

멀티 코어 운영 체제의 초점은 프로세스 할당 및 예약에 있습니다. 프로세스 할당은 합리적인 물리적 코어에 프로세스를 할당합니다. 왜냐하면 코어마다 공유 및 과거 작동 조건이 다르기 때문입니다. 일부 물리적 코어는 두 번째 수준 캐시를 공유할 수 있는 반면 다른 코어는 독립적입니다. 데이터 공유가 있는 프로세스가 공유된 보조 캐시가 있는 코어에 할당되면 성능이 크게 향상됩니다. 그렇지 않으면 성능이 영향을 받을 수 있습니다.

프로세스 스케줄링에는 실시간 성능 및 로드 밸런싱과 같은 문제가 포함됩니다. 현재 연구의 주요 이슈는 주로 다음 측면에 중점을 둡니다.

  1. 프로그램 병행 개발 및 설계
  2. 여러 프로세스의 시간 의존성
  3. 작업 할당 및 일정
  4. 캐시된 오류 공유
  5. 일관된 액세스 문제
  6. 프로세스 간 통신
  7. 다중 프로세서 코어 내 리소스 경쟁

CPU 코어에서 다중 프로세스와 다중 스레드가 실행되는 상황은 다음과 같습니다.
각 CPU 코어가 프로세스를 실행할 때 각 프로세스의 리소스는 독립적이므로 CPU 코어 간 전환 시 컨텍스트를 고려할 필요가 없습니다
각 CPU 코어가 스레드를 실행할 때 스레드가 리소스를 공유해야 하는 경우가 있으므로 이러한 리소스를 CPU의 한 코어에서 다른 코어로 복사해야 하므로 추가 오버헤드가 발생합니다

CPU 코어에서 실행되도록 프로세스를 바인딩

CPU의 코어 수를 확인하세요

cat /proc/cpuinfo를 사용하여 CPU 정보, 다음 두 가지 정보를 확인하세요.

프로세서, 어떤 CPU 프로세서를 지정하세요
CPU 코어, 각 프로세서의 코어 수를 지정하세요
시스템 호출 sysconf를 사용하여 CPU 코어 수를 얻을 수도 있습니다.

으아악

프로세서가 2개 있는 가상 머신을 사용하고 있습니다. 각 프로세서에는 코어가 1개만 있습니다. 이는 프로세서 1개의 코어 2개에 해당합니다.

taskset 명령 사용

프로세스 ID 가져오기

으아악

프로세스가 현재 어떤 CPU에서 실행되고 있는지 확인하세요

으아악

표시된 십진수 3은 이진수로 변환되고 가장 낮은 두 개는 1입니다. 각 1은 CPU에 해당하므로 프로세스는 CPU 2개에서 실행됩니다.

지정된 프로세스는 CPU1에서 실행됩니다

으아악

CPU 번호는 0부터 시작하므로 CPU1은 두 번째 CPU를 나타냅니다(첫 번째 CPU 번호는 0입니다).

이 시점에서 애플리케이션은 아래와 같이 실행되도록 CPU1에 바인딩됩니다.

으아악

프로그램 시작 시 CPU 바인딩

으아악

sched_setaffinity 시스템 호출 사용

sched_setaffinity는 프로세스를 특정 CPU에 바인딩할 수 있습니다.

으아악

으아악

결과 실행

으아악

CPU 코어에서 실행되도록 스레드 바인딩

pthread_setaffinity_np 함수를 사용하여 스레드를 CPU 코어에 바인딩합니다. 해당 프로토타입은 다음과 같이 정의됩니다.

으아악

각 매개변수의 의미는 sched_setaffinity와 유사합니다.

으아악

결과 실행

으아악

이 기사의 소개를 통해 우리는 CPU 바인딩 기술을 사용하여 프로세스를 특정 CPU 코어에 바인딩하여 프로세스의 실행 효율성을 크게 향상시키는 방법을 배웠습니다. 실제 애플리케이션에서는 다양한 시나리오와 요구 사항에 따라 적절한 CPU 바인딩 솔루션을 선택할 수 있으며 최상의 성능 개선 효과를 얻을 수 있습니다. 이 글을 통해 독자들이 CPU 바인딩 기술을 더 잘 이해하고 적용하며, Linux 시스템 사용 시 더 높은 작업 효율성을 달성하는 데 도움이 되기를 바랍니다.

위 내용은 듀얼 코어 CPU 킬러는 Linux 프로세스를 더 빠르게 실행합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제