오늘은 좀 더 재미있는 주제를 들고왔다. Docker Desktop과 Mac전용의 OrbStack의 성능을 비교하는 것이다.
8gb짜리 컴퓨터에서 뭔가를 하려고하면 보통은 램이 모자라기 마련이다. 특히 요즘에는 Docker를 TimescaleDB때문에 쓰다보니까 더 그랬다. 그랬는데 Gemini에 따르면 OrbStack이라는게 MacOS한정으로 더 좋다! 라고 광고를 하길래 실제로 깔아서 돌려봤는데 이게 진짜로 그렇게 차이가 큰 건가?를 잘 모르겠어서, Stats, 활성 상태 보기를 통해서 내 수집기를 돌리기 더 좋은 도커 구현이 뭔지를 비교해 보려고 한다.
본심은, 왠지 OrbStack을 쓰는게 해골물 처럼 느껴져서 그랬다.

실험 환경은 일단
0. 부팅
1. OrbStack혹은 Docker Destop 키기
2. Stats / 활성 상태 보기를 켜서 벤치마크 보기
3. 내 블록체인 데이터 수집기를 켜서 부하 확인
이다.
특징이 있다면 내 수집기는 SSD에 고루 부하를 주는 편이며, 이는 TimescaleDB에도 마찬가지이다. COPY protocol과 일반적인 SELECT, INSERT, UPDATE도 자주 수행한다. 따라서 Container에도 충분히 부하가 간다고 볼 수 있겠다. 그리고 외부 SSD를 실제 볼륨으로 쓰는게 다행히도 평가의 공정에 더 좋을 것으로 보이는게, 거의 똑같은 환경을 재현할 수 있기 때문이다. 운영하는 컨테이너만 달라진다!
다만 어짜피 수집자체는 굉장히 Network I/O에 많은 영향을 받으므로 일정 부분 이상으로 쓰루풋을 늘릴 수 없으니, 돌아가는 상황에서 얼마나 RAM을 많이 먹는지를 더 중요하게 보면 된다. 이렇게 이야기는 하지만 아주 엄밀한 시험은 아닌 것을 감안해주면 좋을 것 같다...
1) Docker Desktop
1. 시작 전

2. 수집기 실행 중(안정 상태)

2) OrbStack
1.시작 직후

2.수집기 실행 중(안정 상태)

3) 결론
일부러 OrbStack(실행만 하고 기록X) -> Docker Desktop -> OrbStack 순으로 실험해서 OrbStack이 불리한(CPU에서 발열등) 조건에서 시작하도록 했는데도, 확실히 OrbStack이 더 적은 메모리로 일을 처리하는 것을 볼 수 있었다. 대충 압축된 메모리가 1GB중반에서 2GB후반~3GB에서 계속 노는것, 특히 메모리 압력면에서 Docker Desktop이 더 많은 리소스를 점유했다는 것을 알수 있었다. 그니까 해골물은 어찌되었건 아니라는 소리이다. 더 엄밀한 테스트를 위해서는 앱의 troughput을 봐서 쓰루풋 대비 리소스 점유율을 보는게 좋겠지만, Docker Desktop이 메모리를 훨씬 불안정적으로 소비한 것도 사실이었다.
내가 왜 이전에는 OrbStack을 그렇게 체감하지 못했는가를 또 알게 되었는데, 애초에 OrbStack이 적게 쓴다고 한들 Chrome하나 키니까 벌써 압력이 엄청 올라가는 것을 볼 수 있었기 때문이다. 딱! 수집기만 돌리니까 저렇게 쓰는거고, 나머지 작업은 벌써 버벅 거리고 느려진 것이다...
이번 실험은 다음에 새로운 하드웨어에서도 실행해볼건데... 뭐 어짜피 같은 애플제품이라서 그렇게 다른 환경은 아닐 것 같다는 생각이 든다.
P.S 77396273번 블럭 내 코드를 가끔 멈춰세우는 주범이었다는 것을 막 알았다.
https://tronscan.org/#/block/77396273
TRONSCAN | TRON BlockChain Explorer
TRONSCAN is the first blockchain browser in the tron community. It supports multiple login methods and provides a complete browsing and search experience. Experience the tron-ecology in the TRONSCAN blockchain browser.TRONSCAN是首款社区型波场区块
tronscan.org
이게 뭐 특별한 블록임? 이라고 하면 뭐 기술적으로 특별한건 아니고 양이 특별하다고 할 수 있겠다. 이것보다 트랜잭션이 한번에 많이 담긴 블럭을 찾는 것은 생각보다 까다로울 것이다. Tron은 블럭 1개에 3초 남짓한 시간이 걸리므로, 1000개가 넘는 USDT Transfer가 있는 것은 나름 희귀한 일이다. 확률이 적기에 난 이걸 무시 했으나, 이 블럭이 증명하듯 일어날 수 있는 일인 것이다. 멋대로 이것을 상정한 수집 코드를 짜버려서 Infinite Recursion 문제를 만들어 버렸고, 그것때문에 대역폭은 대역폭대로 날리고 쓸데없는 작업을 많이 진행해버렸다. ㅠ 앞으로는 Edge-Case를 더 신경 써서 만드는 것이 좋을 것 같다...
'일지 > Proj4' 카테고리의 다른 글
| [QuakePot] 수집기 안정화 / 스스디 발열 잡기 (0) | 2026.01.27 |
|---|---|
| [QuakePot, API Crawling, Infrastructure] 데이터 수집 결과 2 (0) | 2026.01.06 |
| [QuakePot] 데이터 수집 asyncronous 문제 (0) | 2025.12.20 |