리눅스 서버내 여러 프로그램을 돌릴때 과부하는 어떤이유에서 오는건가요?

scc6920의 이미지

간단한 정렬 코드(merge, quick)를 여러 상황에서 돌려 분석하는 과제를 하고 있습니다.

그중에 리눅스 서버 내에서 사용자 여러명이 정렬을 할때 늘어나는 시간에 따른 분석을 하고있는데요
(서버는 16스레드이고 돌리는 코드는 스레드1개일때 / 스레드 16개일때 입니다)

물론 여러 프로그램을 돌리면 cpu에 과부하가 일어나서 시간이 늘어난다는것은 당연히 알지만

구체적으로 왜 그런일이 발생하는지에 대해 정확한 이유가 궁금합니다.

bushi의 이미지

CPU 를 20% 만 쓰는 프로그램 다섯 개가 돈다면 얼마가 됐든 제시간에 끝나겠지만,
여섯개가 돈다면... CPU 에 20% 과부하가 걸리는 게 아니라 프로램별 완료 시간이 각각 20% 씩 더 걸립니다.

CPU 는 언제나 100% 부하이고, 정말 아무런 할 일이 없을 때의 idle 을 구현하기 위해 halt/wfi 같은 걸 동원해서 강제로 재우죠.