태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

시스템은 언제나 설계자의 예상을 벗어난다!

오라클 2010.04.28 15:53
최근에 메타링크에서 아래 버그(패치)를 접했습니다.

Bug 7441165 Prevent preemption while holding a mutex

It is possible for processes holding mutexes to be scheduled out of the CPU before they are allowed to release it.

This causes higher CPU utilization and waits on "cursor: pin S".

This fix prevent preemption of a process while holding a mutex.

The fix is generic but has an OS dependency and currently Solaris and HP UX are the only Operating Systems which Oracle has an interface to make this fix effective.

Oracle does not yet has the implementation for Other OSs rendering this fix ineffective.

이 버그는 10gR2 ~ 11gR2의 모든 버전에서 발생 가능합니다. 일부 OS에 대해서만(HP, Solaris) 패치가 나와있습니다.

시스템이 설계자의 예상을 얼마만큼 벗어날 수 있는지 잘 보여주는 예라고 생각됩니다.

  • Mutex는 래치보다 가벼운 동기화 객체입니다. 지금까지 오라클이 설계한 동기화 객체 중에서 가장 가볍다고 할 수 있습니다.
  • 그런 이유로 오라클은 Mutex를 획득하지 못했을 때는 Sleep하지 않습니다. 계속 Spin을 하면서 획득을 시도합니다.
  • Sleep을 하게 되면 CPU Context Switch가 발생하기 때문에 차라리 Spin을 하면서 CPU를 점유하는 것이 더 유리하다고 판단하는 것입니다. 어차피 아주 짧은 시간 안에(래치보다 훨씬 짧게) 획득 가능하기 때문입니다.
  • 그런데 동시 사용자 수가 아주 많을 때(더 정확하게 말하면 CPU에 대한 동시 요청이 아주 많을 때), Mutex를 점유하고 있던 프로세스들이 OS 커널에 의해 CPU 점유권을 잃는 상황이 발생합니다.
  • 이때 Mutex를 획득하려고 시도하는 다른 프로세스들은 Spin을 하면서 계속해서 Mutex를 획득하려고 시도합니다. 하지만 Mutex를 점유하던 프로세스가 CPU 점유권을 잃어버렸기 때문에 과도한 Spin을 하게 됩니다.
  • 이로 인해서 CPU를 필요 이상으로 과도하게 사용하게 되고, 상황은 더욱 나빠집니다.
이것은 전혀 예상 밖의 상황입니다. 오라클 커널 개발자는 Mutex를 점유한 상태에서는 빠른 속도로 작업을 끝내고 해제할 것이라고 예상했기 때문에 Mutex를 점유한 프로세스가 CPU 점유권을 빼앗길 것이라고는 예상 못했을 것입니다. 혹은 예상했다고 하더라도 그것이 성능에 영향을 줄 정도로 빈번하지는 않을 것이라고 생각했던 것 같습니다.

하지만 적지 않은 수의 시스템에서 이 문제로 인해 cursor: pin S 대기 이벤트와 함께 CPU 사용률이 증가하는 현상이 생기고 있습니다. 이것은 버그로 등록되어 있지만, 정확하게 말하면 버그라기 보다는 "예상 밖의 폭주" 정도로 보는 것이 적당하겠습니다.

언제나 시스템은 설계자의 예상을 초과해서 폭주하는 경향을 보이는 것 같습니다. 가령 자동차의 급발진 현상들이 그렇습니다. 지난 금융 위기도 그렇고, Matrix에서 인류를 구원하는 네오(일종의 버그)도 그러네요.

오라클도 예외는 아닌 것 같습니다.

저작자 표시
신고
Trackback 0 : Comments 4
  1. extremedb 2010.04.28 16:52 신고 Modify/Delete Reply

    제가 나와 있는 사이트에도 동일한 문제가 발생하여 패치를 적용하였습니다. 앞으로 이런 트러블 슈팅이 증가할 것으로 예상되네요. 좋은 정보 감사합니다.

  2. ... 2010.05.18 08:58 신고 Modify/Delete Reply

    본문과 관계없지만...
    며칠전부터 ask.ex-em.com 이 접속이 안되던데요.

    혹시 운영 중단은 아니시죠?

    • 욱짜 2010.05.18 10:20 신고 Modify/Delete

      스토리지 쪽에 문제가 있어서 접속이 안되었던것 같습니다. 지금은 접속이 재개되었을 것입니다.

  3. 전뚜 2010.05.20 10:34 신고 Modify/Delete Reply

    예상밖의 폭주 란 단어에서 저도 모르게 빵 터져버렸습니다.

    좋은 자료 감사합니다

Write a comment

티스토리 툴바