성능 분석

멀티코어나 NUMA 시스템에서 성능을 측정할 때 스레드를 특정 코어에 고정(어피니티 설정)하는 경우가 있는 이유로 올바른 것은?

  1. AOS가 스레드를 코어 사이에서 이동시키면 캐시 내용이 사라지거나 먼 메모리를 사용하게 되어 결과가 흔들리기 때문에
  2. B고정하면 코어 수가 2배가 되기 때문에
  3. C고정하지 않으면 프로그램을 실행할 수 없기 때문에
정답과 해설 보기

정답: A. OS가 스레드를 코어 사이에서 이동시키면 캐시 내용이 사라지거나 먼 메모리를 사용하게 되어 결과가 흔들리기 때문에

OS는 부하를 분산하기 위해 스레드를 다른 코어로 옮기는 일이 있습니다. 옮겨 간 코어의 캐시에는 필요한 데이터가 없고, NUMA 시스템에서는 데이터가 놓인 메모리에서 먼 소켓으로 옮겨 가 버리기도 합니다. 그래서 같은 프로그램이라도 어느 코어에서 실행되었는지에 따라 시간이 달라집니다. 스레드를 코어에 고정하고 메모리 배치도 맞추면 측정의 재현성이 높아집니다.

  • A. 올바릅니다. 측정 조건을 맞추기 위한 노력입니다.
  • B. 코어 수는 변하지 않습니다.
  • C. 고정하지 않아도 실행은 가능합니다.
이 분야 연습하기 분야로 돌아가기

성능 분석의 다른 문제

  1. GPU를 사용하는 프로그램의 성능을 분석할 때 가장 먼저 확인해야 할 것으로 가장 적절한 것은?
  2. 데이터센터에서 서버를 고를 때 피크 성능 외에 고려해야 할 관점이 아닌 것은?
  3. 「새로운 방법으로 100배 빨라졌다」는 주장을 평가할 때 확인해야 할 점으로 가장 적절한 것은?
  4. SSD 성능을 연속 읽기 대역폭(MB/s)뿐 아니라 4 KB 랜덤 읽기의 IOPS(초당 입출력 횟수)로도 나타내는 경우가 많은 이유로 올바른 것은?
  5. 배열의 크기를 조금씩 키우면서 배열을 반복해서 읽는 처리의 요소 1개당 시간을 측정하면, 특정 크기마다 시간이 단계적으로 늘어난다. 그 이유로 올바른 것은?