C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75733] Re:Re:Re:Re:Re:[udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ?[자답]
금목암 [iconms1] 3065 읽음    2019-12-23 09:08
거의 1달 가까이 기존 유럽제 시스템을 분석한 결론 입니다
아직 기대에 미치지 못하지만 ..
더 이상 개선에 시간을 쏱을수 없고 이 정도로 만족합니다

udp echo server를 windows 에서 50Us 응답속도로 개선 했습니다
1. 한글 윈도우 보다 영문 윈도우os가 빠름(원리 모름)
2. 방화벽,백신을 삭제해야함
3. 안쓰는 네트워크 드라이버 서비스 모두 삭제
4. 기가비트 네트워크내 잡음내는 장비 모두 제거
5. 기가비트 네트워크 설정값 최적화 및 선로 switch 등 최적 성능 설정후
  평균  전송속도 1.3기가 비트로 설정
6. 네트워크 쓰레드 처리
   복잡하게 짜는것 보다 간단한게 더 빠름
7. 리눅스보다 윈도우가 3~30배 정도 빠름 (커널 드라이버 안쓰면)
   리눅스는 모든 서비스 제거한 콘솔모드로 gcc만 깔고 테스트
   물어보니 원래 리눅스 느리다고 함 전에는 빨랐다고 아는데
   윈도우 컴파일러 처럼 최적화 안되고 빠른 기기는 커널을 조작해 특수 기능만
   빠르고 대용량 전송시 유리하지 소규모 에는 특수한 방법을 써야 한다고함
    github의 크로노스 udp echoserver 값 처럼 초고속 대용량 빠른 회수 처리
    일반 모드에서는 불가능

8. 윈도우 메모리를 32기가 정도에 cpu도 8코어 정도로
   8코어 이상에서는 크게 개선 안됨 1코어당 0.5%정도
   코어수 적어도 메인 클럭이 높을수록 성능이 좋아짐
9. windows vs 2019  c++ 보다 c++builder가 10~20% 빨랐음 ㅗ
10. decompiler 로 유럽 장비 디컴파일러시 어셈블러 코드로 만들어 지고
     c++로 보기에는 적합치 않음 엉망으로 나옴
     컴파일시 실행은 되나 어떤 원리로 되나 알수 없음
  
===========================================
금목암 님이 쓰신 글 :
: 디바이스 드라이버 만들 실력은 안되어서 (이쪽은 잘 모름 )
: 읽어보니 ndis 쪽 아주 복잡하고 중간에 설명이 나온 소스를 '못구함 
:
: 몇가지 꼼수를 써서 일단 100 uS 대로 맟추엇습니다
: 원하는 바에는 못미치지만
: 조금만 더 올리면 될것 같네요
: 서비스도 죽이고 그래픽도 최적 성능에 이거저거 서비스 다 죽여보면서 테스트하고
: mtu도 220으로 내리고 합니다(별 차이 안남 )
:
: 인텔 컴파일러 ,어셈블러나 api, 델파이로 짜면 c++builder 보다 빨라지나 ? 델파이가 느림
: 인텔 컴파일러가 vc보다 30~50% 빠르다고 함
: 리눅스도 윈도우와 비슷한 속도 입니다
:
: -------------------------------------------------
: [해결방법]
: 현재 WINDOWS10 환경에서는 CPU를 빠른것을 써야 됩니다
: 사용하는 드라이버나 서비스 가능한 내리고 MTU도 작게 잡고
: 네트워크는 1G나 10G로 사용함
: C++BUILDER에서 CONSOLE로 WS2_32 소켙 라이브러리 붙여서
: 100us로 응답하게 하는게 최선이고 더 빠른 cpu코어 써보니 시간이
: 조금씩 줄어드네요:  한 16~32코어 정도 쓰면 그 정도 속도 나올듯 함
: win7에서는 프레임워크 삭제하면 빨라짐
:
: fast udp 라고 요즘 asio 라이브러리 보고 있습니다
: https://github.com/chronoxor/CppServer/blob/master/tests/test_udp.cpp
: : -----------------------------------------------------------
: : 금목암 님이 쓰신 글 :
: : : 지금  indy 쓰레드로 0.15ms 로 처리하게 만들었습니다
: : : 그리고 받자마자 바로 검사하고 회신주고 이 시간에 처리 됩니다 
: : :
: : : 다른 처리방법으로 fpga나 micom으로 짜면 되는데 가능하면
: : : pc 상에서 처리하고 싶고 이미 pc 환경에서 처리하는 업체가 있습니다
: : : 정확한 방법이나 언어는 모르는데 win7 에서 0.001ms로 응답 합니다
: : :
: : : ========================================
: : : 왕초보와코드 님이 쓰신 글 :
: : : : 윈도우 운영체제 자체가 불가능한 환경입니다.
: : : :
: : : : 1.쓰레드를 만들어 무한 반복하게 해도, 1회 실행한후 재실행 시간차가 16ms정도입니다
: : : : 2.윈도우 운영체제 자체도 들어온 패킷을 확인하고 응용 프로그램에 전달하는 시간이 추가로 소요됩니다
: : : :
: : : : 따라서 불가능합니다
: : : :
: : : : 금목암 님이 쓰신 글 :
: : : : : [udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ?
: : : : :
: : : : : 추운 날씨에 건강들 주의하세요
: : : : :
: : : : : 질문내용은 아래 사항이 가능한가 입니다
: : : : :
: : : : : udp 서버와 클라이언트 컴포넌트를 설정후
: : : : :  192.168.10.100   에 5001번 포트로 들어온 38바이트 값을 검사한후
: : : : : 이 패킷을 보내온 ip의 5001번 포트로 응답을 20바이트 보내주는데
: : : : :
: : : : :  처음에는 c#으로 작성해서 처리하면서 시간을 측정해보니 1~20ms정도
: : : : :  나옵니다 보통은 1~4ms 이내 지만 간혹 시간이 길어지는데 이게 윈도우 문제라고
: : : : :   하더군요  콘솔모드로 작성했습니다
: : : : :   네트워크는 1Gbit 망입니다
: : : : :
: : : : :  그래서 c++builder indy 콤포넌트로 작성하니 처리후 응답시간이
: : : : :  0.1ms~ 0.4ms로 약 10배 정도 빠르게 되었지만 (평균 160us)
: : : : : 응답 데이터를 가끔 놓친다고 해서 ..
: : : : :
: : : : :  저쪽에서는 2us~ 20us로 50배 정도 더 빠르게 처리해 달라고 하더군요
: : : : :  그래서 저쪽 장비를 연결하고 wireshark 로 캡처해보니
: : : : :  정말 그런 속도로 응답 처리를 해서 이건 micom에서 처리한다고 하는데 ..
: : : : : (평균 2~10 us로 응답 처리함)
: : : : :
: : : : :  pc에서 windows10  64비트 8기가 ram  i7   8th cpu  속도로 응답 처리하려면 어떻게 해야 할지
: : : : :  모르겟네요 ?  일단 pc환경에서 가능한지 확인하고 답변해줘야 할것 같습니다
: : : : : 네트워크는 1기가 full duplex설정 입니다
: : : : : echo 서버처럼 빠른 회신을 주고자 합니다
: : : : : =============
: : : : : [응답 받자마자 회신]
: : : : : void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, const TIdBytes AData,
: : : : :           TIdSocketHandle *ABinding)  // 수신 부분  수신 이벤트 발생시 이곳으로 온다
: : : : : {
: : : : :      AnsiString Buffer2;
: : : : :     Buffer2=IdUDPServer1->ReceiveString();  //버퍼에서 읽어들인다
: : : : :       IdUDPClient1->Send("test");   // 상대편에 응답을 보낸다
: : : : : }
: : : : :
: : : : :

+ -

관련 글 리스트
75687 [udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ? udp echo server 금목암 2637 2019/11/11
75690     Re:[udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ? 왕초보와코드 3060 2019/11/14
75693             Re:Re:Re:[udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ? 왕초보와코드 2556 2019/11/15
75698                 Re:Re:Re:Re:[udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ? 금목암 2644 2019/11/22
75733                     Re:Re:Re:Re:Re:[udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ?[자답] 금목암 3065 2019/12/23
76045                         Re:Re:Re:Re:Re:Re:[udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ?[자답] 1890 2021/02/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.