성능 분석
멀티코어나 NUMA 시스템에서 성능을 측정할 때 스레드를 특정 코어에 고정(어피니티 설정)하는 경우가 있는 이유로 올바른 것은?
- AOS가 스레드를 코어 사이에서 이동시키면 캐시 내용이 사라지거나 먼 메모리를 사용하게 되어 결과가 흔들리기 때문에
- B고정하면 코어 수가 2배가 되기 때문에
- C고정하지 않으면 프로그램을 실행할 수 없기 때문에
정답과 해설 보기
정답: A. OS가 스레드를 코어 사이에서 이동시키면 캐시 내용이 사라지거나 먼 메모리를 사용하게 되어 결과가 흔들리기 때문에
OS는 부하를 분산하기 위해 스레드를 다른 코어로 옮기는 일이 있습니다. 옮겨 간 코어의 캐시에는 필요한 데이터가 없고, NUMA 시스템에서는 데이터가 놓인 메모리에서 먼 소켓으로 옮겨 가 버리기도 합니다. 그래서 같은 프로그램이라도 어느 코어에서 실행되었는지에 따라 시간이 달라집니다. 스레드를 코어에 고정하고 메모리 배치도 맞추면 측정의 재현성이 높아집니다.
- A. 올바릅니다. 측정 조건을 맞추기 위한 노력입니다.
- B. 코어 수는 변하지 않습니다.
- C. 고정하지 않아도 실행은 가능합니다.