시피유 사용률

미담   
   조회 4557   추천 0    

코어가 많은 시피유를 1개 사용중인데 작업창을 많이 열면 버벅임이 생깁니다. 보니 전체 점유율은 이십프로 정도인데 특정 코어 하나가 많은 점유율을 보이는군요. 이 점유율을 다른 코어로 넘길 방법은 없는지요?  만약 시피유가 2개라면 저 특정 코어도 2개로 나뉘어져서 버벅임이 줄어들까요? 주 작업시 도면을 최소 열개 이상을 열어놓고 인터넷 창도 열개 정도는 기본으로 열고 사용하기에 코어갯수가 많으면 유용할줄 알았더니 조금 시피유에게 섭섭합니다. 오토캐드를 주력으로 사용하고 있습니다.
짧은글 일수록 신중하게.
박문형 2015-04
오토캐드에서는 클럭만이 진리라는
서수봉 2015-04
cpu 점유율이 특정 코어에 집중되기에 클럭이 빨라도 버벅임은 생길 듯 하군요....
김준연 2015-04
AutoCAD에서 클럭만이 진리라는 것은 맞습니다. AutoCAD는 렌더링이 아닌 경우 코어 하나만을 죽어라 써대기 때문입니다. 이건 설계가 그렇게 되어 있는 것이라 억울(?)하면 Autodesk를 인수하여 개발자들을 괴롭히면 됩니다.^^
EdH 2015-04
특정 작업이 싱글쓰레드로 돌아가게 만들어져 있는 거라면 코어 하나만 죽어라 괴롭히는 게 맞습니다. 멀티코어를 최대한 쥐어짜서 활용하는 것이 현실적으로 쉽지가 않습니다.
김준연 2015-04
멀티코어의 문제점은 스레드 하나만을 쓰는 작업에서는 별 쓸모가 없다는 것립니다. 그렇다고 제대로 코어를 다 활용하게 만들려면 보통 고생이 아닙니다. 이 문제는 12코어 비누곽이 이베이에서 몇 만원에 굴러다니는 지금이라고 달라진 것이 없습니다.

만약 그러면 여러 코어를 뭉쳐 하나의 스레드를 처리하게 하자고 할 수 있습니다만, 정말 꿈도 희망도 없는게 현실인 이야기입니다. 딱 잘라 비유를 하면 토니 스타크에게 60분동안 고3 수학 문제 5명분을 풀라고 하는건 가능해도 고3 5명을 모은다고 아크 리액터를 못 만드는 것과 같습니다.

관련 사항이 궁금하실 경우 Speculative multithreading라는 것을 찾아 보십시오. 학술적으로는 말이 많지만 현실적으로는 그야말로 꿈도 희망도 없는 기술이라는걸 알게 될 것입니다.
     
송진현 2015-04
하나 더쉽게 설명을 붙혀드리자면..

그 이유중 하나가

모든 작업에는 임계구역이라는게 존제하는데요

이 구역은 협업이 불가능한 구역입니다.

예를 들자면

A =  1+ 2 + 3 +4

이라면 통상적으로

CPU1이 1+2를

CPu2가 3+4를하고

CPU1,CPU2중 아무나가 3+7을 처리하여 A에 저장하면 끝입니다.

하지만 중요한점은

A = 1 + 2 * 3

이라면

CPU1이 2*3을 처리하는동안
CPU2는 아무것도 할수가 없습니다.

만약 CPU2가 임계구역을 침범하여 1+2를 수행한다면 원하는 값이 아닌 다른값이 나오겠죠?..

물론 CPU는 승산을 할수는 없습니다만..
단순하게 예를 들은것입니다..
윈도우 api 를 쓰는 이벤트 driven 소프트웨어들은 쓰레딩을 쓰기 싫어도 자동으로 쓰레딩으로 돌아가지 않나요?
저도 그리 잘은 모릅니다만... qt 든 vc++든 윈도 이벤트로 작동하는 소프트웨어는 그런걸로 알고 있습니다... 실제로 제가 만든 프로그램은 씽글 쓰레드이지만 프레임워크 자체가 멀티 쓰레딩이기때문에 항상 보면 수십개의 쓰레드가 돌고있더라고요..
물론 제가 어느 특정 알고리듬을 멀티쓰레딩으로 처리하려면 그부분은 멀티쓰레딩 작업을 해줘야겠죠...
     
무아 2015-04
잘 이해가 안됩니다.
씽글 쓰레드 이지만 수십개의 쓰레드가 돈다는 것 말인데요...
이렇게 이해 하면 되는 건가요?
씽글 쓰레드 안에 파일을 읽고 연산을 하고 저장을 하고 이런 것을 루프로 돌릴 경우
저장 하는 부분만 (안전한 범위 내에서) 따로 OS 에서 쓰레드로 빼서 돌린다는 얘기인가요?
          
OS 에서 그렇게 하는지 저는 모르겠습니다.

하지만 예를 들어서 제가 윈도우 프로그램을 만들면 (DOS 프로그램이아닌) 윈도우 프로그램 자체가 멀티쓰레드라는 이야기입니다. 윈도우 프로그램의 프레임워크가 멀티쓰레드이기 때문에 가끔 문제가 생길때도 있습니다. 예를 들어 어떤 라이브러리의 함수를 제가 호출을 할때 그함수가 글로벌 static variable 에 영향을 주는 경우가 있으면 그 함수가 MFC 또는 닷넷의 라이브러리소속이면 그 라이브러리 차체도 멀티 쓰레드일수 있기때문에 그 함수를 제가 만든 static 함수에서 호출을 한다고 가정을 하면 variable 의 값이 꼬이는것을 본적이 있습니다. 그리고 또한 제 함수에서는 하나의 쓰레드만 있다고 가정을 하고 프로그램을 만들었는데 라이브러리내의 함수가 lower level 에서 자꾸 멀티 쓰레딩을 해가지고  sequencial i/o 를 해야 하는경우에 문제가 생기기도 합니다. 얼마전에  ftp 라이브러리를 썼더니 그렇게 되었습니다.  ftp 커넥션이 엄청나게 생겨버린거죠... 제함수에서는 ftp 가 이루어지고 있으면 다른 커넥션을 만들지 말라고 되어있는데도 더 아래단에서 자체적으로 여결을 하는것이였습니다.... 쓰레딩으로...

실험을 해보세요... hello world 어플리케이션을 윈도 어플리케이션으로 만드셔가지고  윈도우를 띄워놓은 상태에서 쓰레드가 몇개인지 함보시면... 제가 틀렸을 수 도 있습니다~
          
수십개까지는 아니라도 윈도우 이벤트를 쓰는 프로그램이라면 하나의 쓰레드가 될 수 없지 않을까요?
지금 제 컴터에 VisualStudio 가 있었으면 바로 했봤을텐데요...

이번 주말 전에는 함 해보겠습니다...
               
사용자가 직접 추가 스레드를 생성하거나 멀티 스레드를 내부적으로 이용하는 라이브러리를 쓰지 않는 이상
기본적인 윈도우 프로그램은 단일 스레드입니다.
블루2014 2015-04
포토샵도 그렇더군요.
무아 2015-04
너구리는 클럭도 중요하지만 코어빨이라는 걸 어디선가 본 듯 합니다.
CPU 모니터 창이 바둑판이던 시스템.


QnA
제목Page 3892/5710
2014-05   5155741   정은준1
2015-12   1690140   백메가
2004-01   8153   이동재
2004-01   7662   이상기
2014-10   6276   VSPress
2017-01   5212   2FluF
2018-03   4409   빠시온
2004-01   9932   송상병
2013-05   4947   박성만
2023-07   1725   witbox
2006-09   5171   이재선
2014-10   5309   미파이브
2018-03   4222   신은왜
2010-04   10983   가빠로구나
2021-12   1705   이원재K
2022-01   1883   미수맨
2014-11   7313   블루스카이
2016-02   12498   e5472
2020-07   5212   sdlfkjwer
2023-08   3450   Elsaphaba
2014-11   3606   소환사킹
2006-10   5980   박용선