Onstage

언리얼 인사이트와 친해지기 위한 준비 운동

일반적인 서버-클라이언트 구조에서 프로파일링 툴을 활용해 서버를 튜닝하는 사례는 쉽게 찾아볼 수 있습니다. 반면, 언리얼 엔진에 특화된 서버 튜닝 사례는 아직 찾아보기 쉽지 않습니다. 다행히 언리얼 엔진에는 언리얼 인사이트(Unreal Insight)라는 무료 프로파일링 툴이 있습니다.

간단하지만 까다로운 언리얼 엔진 개발 환경 구축

언리얼 엔진 기반으로 개발하는 게임을 마주한다면, 직접 게임을 개발하는 개발자가 아니더라도 디버깅이나 성능 분석을 위해 언리얼 엔진 개발 환경을 구축해야 하는 상황이 생깁니다. 특히, 언리얼 인사이트나 네트워크 프로파일러 같은 유용한 툴을 쓰기 위해서는 언리얼 엔진 소스를 다운…

멀티패스 우분투 VM에도 고정 IP를 붙여보자

기본 원리는 WSL2에서 고정 IP를 설정했던 방법과 동일합니다. 제어할 수 있는 네트워크 인터페이스를 추가하면 됩니다. 다만, 네트워크 인터페이스를 추가하는 방법에 차이가 있습니다. Hyper-v에서 NAT 네트워크를 설치하는 방법이 있습니다. 이 방법으로 가상 네트워크 스위치…

단일 프로세스에서 NUMA가 야기한 성능 저하

물리적으로는 CPU 1개지만, 그 안에 코어가 여러 개 들어있습니다. 각 코어는 연산을 위해 메모리 컨트롤러를 거쳐 메모리에 접근합니다. 이때, 코어가 메모리에 접근하는 속도를 올리거나 동시 전송량을 늘릴 수 있다면 코어 연산 능력을 높일 수 있습니다. 다만 이들 사이에 오가는…

WSL2 활용도를 높여주는 고정 IP 설정

앞서 본 프로젝트 중 차용할 수 있는 기본 개념은 간단했습니다. Hyper-v와 WSL2에 기본 설정으로 잡혀있는 네트워크 인터페이스를 제어할 수 없다면, 제어할 수 있는 네트워크 인터페이스를 추가해서 붙이는 방식이었습니다. 이렇게 네트워크 인터페이스를 추가해서 WSL2 네트워크…

strace가 -k 옵션을 만난 날

strace는 리눅스에서 서버 병목을 확인할 수 있도록, 시스템 콜(시스템 호출, System call)을 측정하는 툴입니다. strace를 활용하면, 리눅스 커널과 프로세스 사이에서 발생하는 시스템 콜, 시그널 전달(Signal deliveries), 프로세스 상태 변화…

C/C++ 정적 분석 도구, Cppcheck

이슈를 발견한 후에 바로바로 수정하면서 크래시에 대응하는 방법도 있습니다. 하지만 개발 초기가 아니라 개발 후기 또는 라이브 서버였다면 어떨까요? 서비스 장애가 빈번히 발생해 사용자에게 치명적인 경험을 줄 수도 있습니다. 그래서 크래시를 미리 확인할 방법을 마련해 이슈에 선제대응할…

RESTful API 서버를 위협하는 한 글자, 슬래시 – CVE-2016-5007

CVE-2016-5007 취약점은 2016년 7월 7일에 최초 공개됐습니다. 어느덧 최초 공개일로부터 5년을 훌쩍 넘었습니다. 하지만 최근까지도 스프링 프레임워크 기반 RESTful API 서버를 사용하는 여러 서비스에서 심각한 보안 위협이 발견되고 있어서, 연구 과제로 선정했습니다..

리눅스용 메모리 프로파일러, Heaptrack(2/2)

GUI 환경에서 동작하는 GUI 분석기는 WSL로 설치한 리눅스 셸에서 실행해야 합니다. 리눅스 안에서 파일을 찾아 이동하는 건 번거로울 수 있으니, 수집 파일이 들어 있는 폴더 위에서 ‘Shift + 우클릭’을 누르면 ‘여기에서 Linux 셸 열기’로 바로 들어가는 방법을 추천합니다.

리눅스용 메모리 프로파일러, Heaptrack(1/2)

Heaptrack은 모든 메모리 할당마다 스택 트레이스(Stack Traces) 주석을 붙입니다. 전용 분석 도구를 활용해 힙 메모리(Heap Memory) 프로필도 볼 수 있으므로, 메모리릭이 발생하는 지점을 찾을 수 있습니다. Heaptrack은 크게 두 부분으로 구성돼 있습니다.