쓰레드풀 구성하였을때 성능 관련...
글쓴이: superego73 / 작성시간: 목, 2003/02/27 - 4:37오후
혹시 Solaris와 Linux의 성능 관련된 비교 자료 혹시 보신 분 계신가요??
제가 요즘 Solaris(Solaris 8)와 Linux(Redhat 7.2)의 쓰레드풀 관련한 성능 검토를 위해서 간단하게 쓰레드를 n개 생성하여 m개의 일(malloc, memset, memcpy)을 처리하는데 걸리는 시간을 측정하는 프로그램을 작성하여 test를 하였습니다.( posix pthread를 이용 )
물론 둘 다 동일한 code를 이용하였고 gcc를 이용하여 compile하였습니다.
그런데 test를 하다보니..
Solaris의 경우에는 thread의 개수 증가에 관계없이 처리 속도가 일정한 반면
(예를 들면 thread개수에 상관없이 10만 개의 작업을 하는데 대략 1.5초 정도를 유지)
Linux의 경우에는 thread의 개수 증가에 따라 기하급수적으로 처리 속도가 늘어납니다.
(thread 10 : 9초, thread 50 : 90초, thread 150개 : 수분 이상)
들리는 얘기에 의하면 linux가 원래 scheduling이 약하다는 말도 있고.. 훔훔..
혹시 이런거에 대해서 고민해 보셨던 분들이나 고민 중이시거나 아시는 분은 알려주세요..
그럼 날마다 좋은 하루 되세요..
Forums:
아는 것은 없습니다만..^^;;
저는 자바 프로그래밍 밖에 안해봐서 이에 대해서 아는 바는 없습니다만.
(실은 리눅스에서 자바의 성능이 제대로 나오지 않는 이유중 하나가 쓰레드라고 하더군요 ^^)
리눅스의 쓰레드는 프로세스를 그대로 이용하는 것이라고 알고 있습니다.
다음 URL은 구글에서 검색한 결과중 하나입니다. linux+thread로 검색해보세요 ^^;;
http://www.kr.freebsd.org/ml/archive/chat/2001/03/msg00021.shtml
아파치가 2.0으로 버전업 되면서 쓰레드를 사용하기 때문에 리눅스를 제외한 운영체계에서는 성능이 다 좋아졌다고 하더군요.
현재는 리눅스에서도 NGPT, NPTL 란게 있다고 합니다.
그리고 아래는 예전에 여기서 있었던 토론(?) 이네요.^^.. 참고해보시기 바랍니다.
http://bbs.kldp.org/viewtopic.php?t=349&highlight=thread
LeanBlue in CyberWorld!!!
같은 코드 일지라도..
superego73님께서 테스트 결과를 분석할려면
솔라리스와 리눅스의 사양이 좀더 보충이 되어야 할듯 하군요
작성하신 쓰레드 풀 소스도 평가를 해봐야 하구요..
그리고 메모리에 관련된 부분이..
cpu의 캐쉬나, cpu와 메모리간의 버스 구조
운영체제의 가상메모리의 구현에 따라서
달라질 수 있습니다..
같은 플랫폼 내에서도.. 어떻게 메모리 카피를 하느냐에
따라서 성능의 차이가 큽니다.
http://www.ezdoum.com/stories.php?story=02/05/08/2994599
쓰레드풀의 성능을 측정하실려면 메모리 카피를 할것이 아니라.
풀에 들어가는 단위잡의 시간을 일정하게 잡아주고
순수하게 쓰레드풀의 기능만을 평가해야겠죠..
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기