성능 분석

프로그램이 느린데 CPU 사용률이 20% 정도로 낮았다. 가장 가능성이 높은 원인은?

  1. ACPU 계산이 너무 빠르다
  2. B프로그램의 명령어 수가 너무 적다
  3. C디스크나 네트워크의 입출력 대기, 락 대기 등으로 CPU를 사용하지 않고 기다리는 시간이 길다
정답과 해설 보기

정답: C. 디스크나 네트워크의 입출력 대기, 락 대기 등으로 CPU를 사용하지 않고 기다리는 시간이 길다

CPU 사용률이 낮은데 프로그램이 느리다면, 시간의 대부분은 CPU 바깥의 무언가를 기다리고 있다고 볼 수 있습니다. 디스크 읽기·쓰기, 네트워크 응답, 다른 스레드가 가진 락의 해제 등입니다. 이 경우 CPU를 빠르게 하거나 계산 코드를 최적화해도 효과가 거의 없습니다. 입출력을 모으거나, 비동기로 하여 대기하는 동안 다른 처리를 진행하거나, 락의 범위를 작게 하는 등이 유효합니다.

  • A. 너무 빠른 것이 느림의 원인이 되지는 않습니다.
  • B. 명령어가 적은 것은 느림의 원인이 되지 않습니다.
  • C. 올바릅니다. CPU를 빠르게 해도 해결되지 않습니다.
이 분야 연습하기 분야로 돌아가기

성능 분석의 다른 문제

  1. 어떤 프로그램이 계산 율속인지 메모리 율속인지 확인하는 방법으로 CPU 주파수를 바꿔 가며 실행 시간을 측정했다. 메모리 율속이라면 일반적으로 어떤 결과가 나오는가?
  2. 루프라인(Roofline) 모델에서 어떤 처리가 메모리 대역폭으로 제한되는 영역에 있음을 알았을 때, 성능을 높이는 방향으로 올바른 것은?
  3. STREAM 벤치마크로 주로 측정하는 것은?
  4. 병렬 프로그램의 확장성(scalability)을 조사하는 방법으로 가장 적절한 것은?
  5. 8코어로 병렬 실행했더니 1코어일 때보다 6배 빨라졌다. 병렬 효율은 얼마인가?