Multi CPU core 에서 충돌을 일으키는 프로그램이 많군요.
2011.01.09 19:39
옛날에 나온 게임 -심시티4 라든지- 에서만 멀티코어 CPU 를 사용할 때 충돌이 일어나는 줄 알았는데,
생각보다 요즘에 나온 어플리케이션들도 꽤나 충돌을 일으키네요.
자주 유용하게 사용하는 이미지 뷰어 ACDSEE Pro 2.5 버전이 심심찮게 충돌을 일으켜서 다운되곤 했습니다만,
CPU 코어 1개만 할당해주니 뻑하면 다운되는 것이 사라지고 안정적으로 쓸 수 있었습니다.
다른 자주 다운되는 프로그램도 CPU 코어 1개만 할당해주면 안정화가 될런지도 모르겠네요.
참고로 프로그램 (프로세스) 에 CPU 코어를 할당해주는 방법은 3가지가 있습니다.
첫번째는 임시로 지정해주는 것으로, 작업관리자를 열어서 프로세스 탭의 각 프로그램 설정을 보면 '선호도' 가 있습니다.
여기서 CPU 선호도를 지정해주는 것이 가능합니다. 단, 프로그램 종료하고 재실행시 리셋됩니다.
두번째는 실행 - msconfig - 두번째 탭의 고급 탭에서 CPU 갯수를 지정해주는 것입니다. 운영체제 차원에서
확실하게 CPU 갯수를 제한해주지만 재부팅을 해야 한다는 단점이 있습니다.
세번째는 CPU Affinity 라는 프로그램을 사용하는 것입니다. 램상주시키는 프로그램으로서, 각각의 프로그램마다
CPU 선호도를 저장하고 실행하자마자 자동적으로 세팅해둔 설정을 적용시켜줍니다. 평소에 싱글코어로 쓰기엔
요즘 윈도는 무거우니 평상시 잠깐잠깐 싱글코어가 필요할 경우엔 이걸 쓰는게 좋습니다.
코멘트 7
-
마.
01.09 19:49
-
최강산왕
01.09 21:37
acdesee 그러고 보니까 록그룹이름이랑 비슷하네요.
-
몽배
01.09 22:15
ACDC를 안다면 아마도 학번대가....ㅎ;;
-
빰! 빠바밤! 빠바밤! 띠리리리리리~~ 내 마음대로 춤을 춰도 아무도 뭐라하지~~ 아.. 이거 아니지 참...
-
cloudn1ne
01.09 23:20
희안하네요. 프로그램 입장에서는 그저 프로세스이고 스레드일 뿐일텐데..
리거시코드중에 문제되는게 있나봅니다.
-
정말 그렇다면... Race Condition 이라는 게 이런 경우에 해당할 수 있겠지요. ㅎㅎ
-
냠냠님 말씀처럼 Race Condition때문일겁니다. Thread를 할당할때 CPU 갯수에 맞춰 할당했는데, 각 Thread간에 동기화 문제로 충돌이 일어나는 경우죠. 예를 들어 Thread안에 같은 Memory 영역에 값을 써주는 코드가 있는데, 이게 어쩌다가 동시에 일어나는 경우가 생기게되면 죽어버립니다. 그런데 CPU가 한개일 경우에는 Thread가 한개밖에 생성되지 않으니 이런 경우가 안생기죠.
OpenMP를 이용해 개발을 하게 되면 CPU 수에 따라 여러개의 Thread를 할당하는 일을 자연스럽게 하게 되고, 삐끗 잘못하면 저런 경우가 자주 생겨요.
참.. 심시티같은 게임에서는 또 다른 문제일겁니다. 하드웨어를 많이 사용하는 프로그램의 경우에는 멀티코어가 미치는 영향이 훨씬 크거든요. 특히 구형 플랫폼을 타겟으로 하는 게임에서는 사운드 디바이스같은걸 동시에 컨트롤하면 뻑뻑 죽어버려요.
아아.. acdsee 어플 간만에 듣는것 같아요.. 정말 좋아하는 플그램이였는데... 윈도.. 기본 어플로.. 대체 하고있네요.