멀티쓰레드 프로그램에서 로그남길때..
글쓴이: muzie / 작성시간: 수, 2010/04/14 - 10:15오전
약 20여개의 소스파일, 10개정도의 쓰레드가 동작하는 프로그램을 작성중입니다.
현재 로그를 화면에 찍기만 하고 있고, 이제 이것을 파일로 덤프하면서
운용할 계획입니다.
처음에는 메세지큐를 이용하여 로그를 남길생각이었는데
꽤 많은 쓰레드가 돌고있고 만약 한꺼번에 16개 이상의 로그가 메세지큐에 들어간다면
오버플로나 시스템 동작에 문제가 생길지도 모른다는 생각이 드네요.
그래서.. 대응책으로 생각한 것은
1. 소켓을 이용
2. 메세지큐가 아닌 일반 원형큐를 이용
두가지로 좁혀졌습니다.
성능에 민감한 프로그램이기 때문에 최대한 오버헤드가 작고 안정적으로 돌수있는
방식을 골라야합니다만 경험이 부족해서 어떤 방법을 선택하는 것이 최선책인지 모르겠네요.
경험 많으신 분들의 조언 부탁드리겠습니다.
덧. 로그는 소스별이 아닌 하나의 파일에서 모든소스의 로그를 남길 예정입니다.
Forums:
syslog를 써보는건
syslog를 써보는건 어떤지요? 스레드별로 각각 syslog을 호출하면 됩니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
하나의 log entry가
하나의 log entry가 fprintf 등을 한 번 써서 생성되는 것이라면, 그냥 여러 thread에서 (동기화 등을 신경쓸 필요없이) fprintf를 호출하면 됩니다.
한 log entry가 때에 따라 fprintf()를 여러번 호출해서 생성될 수 있다면, flockfile()/funlockfile()을 쓰면 됩니다.
물어보신 목적을 위해서 따로 socket/message queue를 쓸 필요는 없을 것 같군요.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
http://log4c.sourceforge.net/
http://log4c.sourceforge.net/ 을 참고하시면 어떨런지요?
인생의 무게를 느껴라. 아는 만큼 보이는게다.
댓글 달기