[Multi-Thread] 환경에서 debug 출력이 뒤섞이는 문제 도움 부탁드립니다. #2
글쓴이: ariyan / 작성시간: 목, 2005/12/29 - 4:41오후
12/23일에 multi-Thread에 의한 출력 뒤섞임 현상에 대한 물음을 하여, 몇분들이 flockfile(), funlockfile() 사용을 추천하여
출력이 atomic 하게 나옴을 확인하였습니다.
감사합니다.
성능이슈도 있는 문제여서 좀더 내용을 확인하였더니..
flockfile 은 stream을 lock 하며 funlockfile할때까지 다른 thread들은 사용할 수 없고, flockfile이 시스템 콜을 사용한다는 글을 어디선가 본것 같습니다.
본 문제를 해결하기 위해 부득이 stream을 lock하여 사용할수밖에 없다면, mutexLock 을 사용해서 쓰는것과 flockfile을 사용하는 것중 성능면에서 어떤 쪽이 나을까요?
감사합니다.
Forums:
정확히는 모르겠지만 flockfile도 내부적으로 mutex를 쓸수밖
정확히는 모르겠지만
flockfile도 내부적으로 mutex를 쓸수밖에 없지 않을까 싶습니다.
퍼포먼스가 문제시라면 일단 로깅 자체가
전체 작업에 비해서 어느 정도 퍼포먼스를
차지하는지 살펴보셔야 합니다.
전체 메인 작업의 퍼포먼스가 크고,
상대적으로 로깅 작업 자체가 차지하는 퍼포먼스가 작다면
별 신경 안쓰셔도 됩니다.
하지만 메인 작업에 비해서 로깅작업이 크다면
퍼포먼스가 문제가 될텐데,
그럴 경우에는 로그의 양을 최소화 시키는 것이
중요하지 않을까 싶네요. 그리고 버퍼링 IO도 필수일테구요.
왜냐면 로깅 자체에서 mutex와 file IO가 연달아 일어날텐데
mutex자체는 file IO에 비해서는 굉장히 싸거든요.
따라서, mutex냐 아니냐의 여부가 중요한 것이 아니라
file IO를 어떻게 싸게 할까가 중요할 것 같습니다.
권위를 의심할 것,어긋남을 존경할 것,자리잡기를 거부할 것,항상 자신을 재창조할 것 - MIT 미디어랩 -
댓글 달기