게임 서버 엔진 프라우드넷을 무료로 이용해보세요!
프라우드넷 블로그 오픈 소식!

프라우드넷의 공식 블로그가 2024년 6월 26일 수요일 오픈됩니다! 🎉
프라우드넷 블로그에서는 여러분이 궁금해하시던 모든 것들을 만나보실 수 있습니다.

✨ 블로그 주요 콘텐츠 ✨

  • 프라우드넷 소식 : 최신 뉴스와 업데이트, 월간 뉴스레터를 통해 프라우드넷의 새로운 소식을 빠르게 전달해드릴 예정입니다.
  • 서비스 소개 : 프라우드넷과 프라우드챗의 기능 및 사용법을 상세히 안내해드립니다.
  • 기술 가이드 : 서버 개발에 필요한 팁과 용어집, 최신 트렌드 인사이트를 제공하여 여러분의 기술적 성장을 지원합니다.
  • 고객 사례 : 프라우드넷을 이용 중인 고객님들의 실제 사례를 통해 성공적인 서버 개발 경험을 공유드립니다.
  • 커뮤니티 : 행사, 교육/세미나, 프로모션 및 이벤트 등 커뮤니티 활동 소식을 전해드립니다.

🎁 특별 이벤트

블로그 오픈을 기념하여, 특별 프로모션과 이벤트를 준비했습니다.
자세한 내용은 블로그 오픈 당일 공개될 예정이오니, 많은 기대와 관심 부탁드립니다.
프라우드넷은 앞으로도 개발자 여러분께 유용한 정보와 지원을 제공하기 위해 최선을 다하겠습니다.
📄 서버 성능을 위한 팁 III
수신 처리 루틴 최적화하기
수신 처리 루틴이 오랜 시간을 차지하면 서버 성능에 부정적인 영향을 끼칠 수 있습니다. 그렇기 때문에 성능이 떨어지는 수신 처리 루틴을 찾아 해결해야 합니다.

게임의 클라이언트는 일정한 주기로 수신 처리 루틴을 호출하여 서버에서 받은 메시지를 처리합니다. 수신 처리 루틴은 플레이어가 서버와 실시간 소통과 통신을 유지하게 돕는 다리 역할을 하며 대량의 데이터 수신, 잦은 인터럽트 발생, 비효율적 루틴 구현 등 다양한 원인에 의해 느려질 수 있습니다.

최적화된 게임서버를 만들고자 한다면 수신측(Stub) 호출 시점 접근하기를 통해 성능이 저하된 루틴을 찾아 문제가 발생하는 근본적인 원인을 찾아 제거해야 합니다.


1. 성능 저하 원인 분석 

수신 처리 루틴의 시작부터 끝까지의 흐름을 추적하여 각 단계에서의 처리 시간을 측정합니다. 이를 통해 느린 수신 처리 루틴이 Device Burst Time이나 CPU Burst Time 중 어느 부분에서 병목이 발생하는지 확인할 수 있습니다.

2. Device Burst Time 개선

  • Critical Section Lock 최소화 : 동시성 문제를 피하기 위해 사용되는 critical section을 최소화하도록 설계합니다. 예를 들어, 락의 범위를 줄이고, 가능한 한 짧은 시간 동안만 락을 유지합니다.
  • 데이터베이스 성능 향상 : 쿼리 최적화, 인덱싱, 적절한 데이터베이스 구조 설계 등을 통해 데이터 접근을 효율적으로 만듭니다.
  • I/O작업 최적화 : 자주 접근하는 데이터를 캐싱하여 I/O 작업을 줄이고, I/O 작업을 비동기적으로 처리하여 CPU가 대기하지 않도록 합니다. 프라우드넷을 사용하면 I/O 작업과 관련된 많은 최적화 작업이 자동으로 적용되어, 개발자는 보다 쉽게 고성능의 게임 서버를 구축할 수 있습니다.

3. CPU Burst Time 개선

  • 병렬처리 : 데이터 처리 작업을 병렬화하여 여러 CPU 코어를 활용합니다. 멀티스레딩이나 멀티프로세싱 기법을 적용하여 성능을 개선합니다.
  • 알고리즘 및 코드 최적화 : 비효율적인 알고리즘을 최적화된 알고리즘으로 대체하고, 불필요한 연산을 제거합니다. 메모리 접근 패턴을 최적화하여 캐시 히트율을 높이고, 메모리 사용을 최소화합니다.

📚 Burst Time 이란?

Burst Time은 크게 CPU Burst time 과 Device Burst Time으로 나뉩니다.
  • CPU Burst Time : 특정 루틴을 실행하는데 CPU가 실제로 연산하는 시간으로, CPU Burst Time 중인 스레드의 CPU 코어 점유율은 100%로 볼 수 있습니다.
  • Device Burst Time : 특정 루틴을 실행하는 동안 CPU가 다른 처리의 완료를 기다리는 시간을 말하며, Device Burst Time 중인 스레드의 CPU 코어 점유율은 0%입니다. CPU가 다른 처리의 완료를 기다리는 대표적인 경우는 파일 읽기/쓰기 중, DB 쿼리 실행 중, 다른 호스트로의 서비스 응답 대기 중이 있습니다.
(주) 넷텐션
(06174) 서울 강남구 테헤란로104길 26, 4층
contact@nettention.com
02-556-2532
사업자등록번호: 105-87-34621
COPYRIGHT 2024 ⓒ Nettention Inc. ALL RIGHTS RESERVED.
수신거부 Unsubscribe