|
VB 6.0으로 개발한 소프트웨어가 있습니다.
Windows2000에서는 짱짱하게 잘 돌아가는 S/W인데..
WindowsXP에서 돌릴 때 눈에 띄게 느려집니다.
특히 COM Port에서 데이터가 많이 유입되서 처리할 양이 늘어나면 눈에 띄게 느려지는데요..
동일한 S/W를 Window2000에서 돌릴 때 보다 처리 속도 면에서는 절반 정도 느려지는 것 같습니다.
소프트웨어 구성은,
VB로 된 메인 S/W가 있고, Serial 통신을 책임지는 통신용 프로그램(MFC로 개발됨)이 있고,
이 두개의 프로그램간의 통신은 MSMQ(Microsoft Message Queue) 서비스를 이용해서
하고 있습니다. 이렇게 구성한 것은 VB에서 직접 Serial 통신을 책임질 경우 CPU가 마구마구 100%를
치달아서 이렇게 분리해 놓은 상태고, MFC로 된 통신 프로그램도 송수신 시 모두 스레드로 처리해서
처리속도와 CPU 점유율등을 낮추어서 처리했구요..
내부적으로는 메인 소프트웨어(VB로 된)가 타이머로 1초에 3~4번 시리얼로 데이터를 요구하고
(실제로는 MSMQ에 쓰고 시리얼로 데이터를 내보내는 것은 통신 프로그램이 담당.),
1초에 3~4번 데이터가 유입되면 데이터의 상태에 따라 그냥 Skip, 또는 화면 처리하고 DB 저장하는
루틴을 지나갑니다.
디버그로 찍어보니,
시리얼에서 데이터를 받아서 작업해야 할 것이 많은 경우 그 다음 발생해야 할 타이머 이벤트가 몇 개가
그냥 Skip하는 현상이 발생됩니다.(시리얼 데이터 처리하느라 바빠서 그런 것으로 추축됨.)
그래서, 전체적으로 보면, 메인 프로그램이 시리얼 데이터 처리하느라 타이머 이벤트 몇 개 놓치고,
그래서, 시리얼로 데이터 요구하는 횟수가 줄어들고, 그 에 따른 데이터 수신량도 줄어드는...이런
현상이 발생해서 전체적으로 시스템 운영 속도가 늦어지는 현상을 나타냅니다.
동일한 바이너리 코드를 Windows2000에서는 잘 돌아가는데, WindowsXP에서 이렇게 늦게 동작하니
당황스러운데요..
추축은 WindowsXP의 Kernel이 Windows2000의 Kernel 보다 무겁고 비대해 져서 전체적인 속도가
떨어지는 게 아닌가 싶습니다. VB 프로그램 자체가 느린 것도 한 몫 하는 것 같고..
H/W 사양이 좀 센 PC에서는 이런 증상이 좀 덜한 것을 보면 Kernel을 계속 의심하게 되네요.
XP에서 소프트웨어 속도 개선을 위한 방법...뭐 좋은 방법 없을까요?
이것때문에..주말에 현장에 테스트하러 나가게 생겼습니다. 나가는 건 좋은데..해결이 되야....ㅠ.ㅠ;;;;
고견 부탁드립니다..
감사합니다.
|