Unix/Linux/Mac,  컴퓨터와 인터넷

[Solaris] 시스템 타이머 간격 조정하기

[ CnUnix ] in KIDS
글 쓴 이(By): guest (senius)
날 짜 (Date): 2000년 10월 20일 금요일 오전 03시 20분 14초
제 목(Title): 10ms보다 작은 타이머 인터벌 ?

이 가능합니까? 아무리 setitimer를 인터벌 500 microsecond로 줘도 10ms가 되버리네요. man쳐보면 시스템 클럭으로 라운드업된다구 하구요. 다른 방법이 없나요 ? 작은 인터벌의 알람시그널을 받는 방법요. 지금 저는 Solaris 2.6을 쓰고 있습니다.

감사합니다. 꾸벅.

[ CnUnix ] in KIDS
글 쓴 이(By): swhan (fOO bAR)
날 짜 (Date): 2000년 10월 20일 금요일 오전 10시 49분 25초
제 목(Title): Re: [질문] Solaris에서 network program

> -lsocket -lnsl 옵션을 줘도 inet_aton 에서는 여전히 reference
> error가 뜹니다.
> /usr/include/arpa/inet.h 에 분명 inet_aton이 정의되어 있는데도
> 이게 뜨는 이유를 모르겠네요. library 위치가 잘못되었을까요? -_-;

man inet_aton을 해보세요. 아마 없을겁니다. /usr/include/arpa/inet.h에는 extern으로만 선언되어 있군요. 이 부분은 inet_ntoa 기타 다른 함수도 마찬가지가 되겠습니다만 다른 함수들은 extern이 아닌 정의도 포함되어 있습니다. 흠.. 구현해서 쓰고싶으면 그렇게 하라는 뜻일까요? 저는 모르겠네요 ^^; (혹시 옛 코드의 찌꺼기?O.o)

하튼 저는 header파일보다는 manual page를 중심으로 보시라는 말씀을 드리고 싶네요. 길은 거기에 있습니다. header파일은 문제해결시 참고자료로만 이용하세요.

> man inet 해보면 inet_ntoa 는 있는데 inet_aton이 없는 이유도
> 궁금합니다!
혹시 SEE ALSO를 살펴보셨나요?

[ CnUnix ] in KIDS
글 쓴 이(By): swhan (fOO bAR)
날 짜 (Date): 2000년 10월 20일 금요일 오전 11시 25분 33초
제 목(Title): Re: 10ms보다 작은 타이머 인터벌 ?

위에 몇 번 얘기가 나왔었는데 결론은 방법이 (거의) 없다. 입니다. Solaris에서 트릭을 써서 해결하셨던 분이 있는데 그 분은 Audio Device의 hardware interrupt를 이용하셨다고 합니다. audio sampling하는데 interval이 1ms쯤 된다고…

제가 Sol8 x86하고 Compaq TruUnix 5에서 테스트하니. .Compaq는 1ms조금 안되게 해상도가 나오는군요. Sol8은 어떻게 해도 10ms이구요. ^^;

[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2000년 10월 20일 금요일 오후 12시 05분 06초
제 목(Title): Re: 10ms보다 작은 타이머 인터벌 ?

거 참 대단한 트릭이네요. 일반적으로 사용하려면 각종 아키텍쳐에서 1ms(똑같은 시간)마다 인터럽트 체크하는 그런 디바이스가 있어야겠군요. 그런 게 없으면 Solaris에서만 가능하겠죠?

10ms보다 작은 타이머 resolution을 사용할 수 있게 된다면(어떤 트릭이 유효한지는 모르겠지만) 사용한다고 하더라도 커널의 퍼포먼스가 떨어지지 않을까요?

1ms마다 인터럽트 핸들러가 동작하고 그게 1ms보다 길게 수행되면 다음 인터럽트는 무시하고 그래야 하나요? 이런 문제는 다소 복잡할 듯.

[ CnUnix ] in KIDS
글 쓴 이(By): nike (승리의여신)
날 짜 (Date): 2000년 10월 20일 금요일 오후 03시 25분 35초
제 목(Title): Re: 10ms보다 작은 타이머 인터벌 ?

/etc/system 에 다음의 라인을 추가하시고

set hires_tick = 1

다시 부팅하시면 1 msec 단위까지 가능합니다. 디폴트 값이 10 msec 이라서 위와 같은 결과가 나오는 것이죠. 물론 솔라리스(2.6 이상)에서만 해당하는 얘기입니다.

주의하실 점은 clock interval을 위에서처럼 더 작게 조정하는 것은 전체 시스템 성능에 상당한 영향을 끼칠수 있습니다. 따라서 상용 제품을 개발하시는 거라면 테스팅 작업을 확실히 하셔야 할겁니다.

500 usec이라…흠..

“승리의여신”
“Nothing worth to learn could be taught” – Oscar Wilde

[ CnUnix ] in KIDS
글 쓴 이(By): swhan (fOO bAR)
날 짜 (Date): 2000년 10월 20일 금요일 오후 04시 22분 32초
제 목(Title): Re: 10ms보다 작은 타이머 인터벌 ?

오옷! 감사합니다. 시스템의 파라메타로 있군요. 흐흐~

[ CnUnix ] in KIDS
글 쓴 이(By): unixboy (세탁소주인)
날 짜 (Date): 2000년 10월 23일 월요일 오후 06시 57분 29초
제 목(Title): Re: 10ms보다 작은 타이머 인터벌 ?

10ms보다 작은 경우에 interrupt overrun 이 발생할 확률이 대단히 높답니다. 아까 어떤분 말대로 timer 인터럽트를 하나하고 다음것 포기하고 그다음것 처리하는 뭐 이런식으로 돌겠죠. 10ms보다 작게 하려면 아마도 대단한 트릭이 필요할 듯한데요.. 근데 한 DVD 스트림정도 처리하시나요? 그정도까지 되어야할 필요가 있나요? 아님 뭐 core 라우터정도 되는 건지 궁금하네요….

답글 남기기