colima high cpu usage

맥에서 colima VM 으로 도커를 사용하고 있다.
vmType: vz(Virtualization.framework)로 10 vCPU, 16GB 로 설정했다.

[문제]
그런데 com.apple.Virtualization.VirtualMachine 또는 Virtual Machine Service for limactl(요건 activity monitor 에선 요 이름으로 보인다.) 이름의 프로세스가 2~3초마다 cpu 사용율이 100~200% 스파이크가 발생한다.

[시도1]
1. colima 데몬이 파일 변경을 감지하면 stat, chmod(현재 권한 그대로, 하지만 vm 커널을 거친 변경이라 inotify 파일 변경 이벤트가 발생한다.)실행한다.
2. vm 내의 커널이 이벤트를 발생시킨다.
3. 컨테이너는 이벤트를 받고 파일이 바뀐걸 알아챈다.

다음과 같이 colima inotify 가 홈 디렉터리 전체를 감시하고 있었다.
~/.config/colima/default/colima.yaml
mountInotify: true
mounts: []        # 비어 있으면 기본값으로 $HOME 전체를 마운트

그래서 colima 데몬이 $HOME 아래 모든 파일 변경을 vm 으로 전달해 파일이 변경될 때마다 ssh 로 vm 접속해서 다음과 같은 명령을 실행한다.
참고로 lima 를 감싸 docker 등의 cli 제공하는게 colima 다.

limactl shell --instance colima stat  ~/.claude/projects/.../xxx.jsonl
limactl shell --instance colima sudo /bin/chmod 600 ~/.claude/projects/.../xxx.jsonl

5초간 모니터링하면 이런 ssh 연결이 15개 정도 생긴다.
대부분 claude code 대화 기록(~/.claude/projects/*.jsonl)이다.
claude code 작업중이면 이 파일이 계속 변경돼 위 ssh limactl 를 실행해 vm cpu 를 사용하게 된다.

# 마운트된 파일 변경 알림 끄기
mountInotify: false 
# 또는 mounts 에 필요한 디렉터리만 지정해 감시 범위 좁히기
mounts: 
  - location: ~/workspace/colima

# 재시작
colima restart

$HOME 이라도 클로드 사용할때 파일 몇개만 변경되는거라 cpu 사용율 저하에는 영향이 거의 없었다. 

[시도2]
# vCPU 10 -> 4 로 줄이고 재시작(colima restart)
cpu: 4

어차피 스파이크고 200%(cpu 2)내라 cpu 사용율 저하에는 영향이 거의 없었다.

[시도3]
harbor, tekton 등을 하나씩 내려(삭제)봤지만 cpu 스파이크 발생한다.
 
[시도4]
# kube-system > metrics-serever pod 를 비활성화해 재시작(colima restart)
k3sArgs:
    - --disable=metrics-server

어느정도 cpu 스파이크가 줄었지만 아직도 발생한다.

[시도5]
kubelet 에서 10초마다 다음과 같은 조회를 수행하는것으로 보인다.
이미지 전체 목록 (/images/json?all=1&shared-size=1)
컨테이너 목록 (getContainersJSON)
이미지 상세 (getImagesByName)

이미지들 중 컨테이너가 쓰는 건 20개 정도 뿐이고 80개는 사용되지 않는다.
exited 상태의 container 도 30개가 남아 있었다.

# dangling image, exited container 제거
docker system prune --all

이미지와 컨테이너수가 주니 cpu 스파이크가 줄었다.
colima 는 재시작할 때마다 exited 컨테이너가 생기고 이미지도 사용하다 보면 쌓이게 되니 주기적으로 잘 정리해야겠다.

#####

[참고]
현재 runtime: docker 설정에선

k3s(kubelet) -> cri-dockerd(k3s 에 내장) -> dockerd -> containerd -> runc
docker CLI -> dockerd -> containerd -> runc

kubelet 은 cri-dockerd 를 통해 dockerd 에 요청한다.
kubelet 이 매초 상태(metric 같은)를 확인할 때마다 이 단계를 거친다.

runtime: containerd 로 바꾸면

(k3s)kubelet -> containerd(k3s 에 내장) -> runc
nerdctl -> containerd -> runc

dockerd 와 cri-dockerd 단계가 빠진다.
하지만 docker cli 와 docker compose 를 사용하지 못하고 nerdctl(docker 호환 cli) 를 사용해야 한다.
# 설치
colima nerdctl install

ego lite

요즘 ai 용 브라우러저로 aside, ego lite 를 많이 쓰는 추세인것 같다.
aside 는 브라우저내에 자체 ai 를 탑재하고 유료인 반면 ego lite 는 별도 claude code, codex 등에서 스킬로 연결하고 무료다.
내 claude code 작업 환경에 ego lite 가 딱이다.

ego lite 설치
brew cask 가 없어 수동으로 다운로드 받아 설치해야 한다.

claude 스킬 설치(-g --global, -a --agent, -y --yes)
bunx skills add https://github.com/citrolabs/ego-lite --skill "ego-browser" -g -a claude-code -y

chrome -> ego lite 데이터 마이그레이션할 수 있다.(ego lite 메뉴 > import from another browser)
ego lite 의 로그인등의 데이터는 로컬에만 저장된다고 한다.

ego lite 에서 로그인된 상태면 claude code 로 사람과 똑같이 웹 브라우징이 된다.
좋은게 내가 웹을 사용하고 있어도 별도의 워크스페이스 환경에서 처리돼 마우스/키보드 포커싱을 뺏기지 않는다.
chromium 기반이라 기본 단축키는 chrome 과 같고
alt+s 워크스페이스 목록화면이 보이고 여기서 alt + 방향키로 워크스페이스 선택할 수 있다.

알뜰폰 요금제 변경하기

KT M 모바일(KT 알뜰폰(MVNO, Mobile Virtual Network Operator) 통신사)에서 1만원 정도의 요금제 사용하고 있었다.
모요(모두의 요금제, 알뜰폰 요금제를 검색)를 가입하고 같은 가격에 데이터가 2배고 혜택도 더 많아서 요금제 변경을 했다.

쉐이크 모바일 통신사의 쉐이크 LTE 15GB+1Mbps, 매월 네이버페이 5,000 지급, 사은품 3개월마다 20GB 쿠폰등, 7개월까지만 9천원 요금이다.

모요에서 esim 사용(2~3,000원정도 발급 비용 발생), 번호이동으로 개통 절차
- EID(esim 식별번호, esim 저장할 칩(eUICC)에 새겨진 번호), IMEI(단말기 식별번호, 갤럭시s25는 IMEI2까지 있어 둘다 입력해야한다.)를 핸드폰에서 찾아 입력해야 한다.
- pass 인증앱으로 주민등록증 or 운전면허증 + 얼굴 인증이 필요하다
- 은행 자동 이체(시간이 자정 30분 전후로는 안된다.) or 카드 결제 정보를 입력한다.
- 이전 통신사(KT M 모바일) 문자를 받고 문자에 적힌 ARS 로 전화해 번호이동을 선택한다.
- 이전 통신사에서 해지가 됐다는 문자를 받고 개통이 진행중이었다. 이때 집에 정전이돼 wifi 를 사용하지 못하는 상황이였다. 개통은 완료되지 않은 상태라 네트워크, 전화도 안됐다. 다시 전기가 들어온 후 개통 완료와 add esim 이 뜨면 esim을 설치할 수 있었다.

개통 후 필요한 작업
- 기존 sim은 비활성화, 새로 받은 esim 으로 전화번호,문자,데이터를 사용하도록 설정해야 한다.
- 통신사/esim 이 변경돼 pass 앱을 실행하면 초기화하라고 뜬다. 초기화 후 이름, 생년월일, 계좌확인으로 인증서를 새로 생성해야 한다.
- 통신사/esim 이 변경돼 삼성페이 인증을 다시 해야 한다.

사용량 조회 확인하기
- 쉐이크 모바일 통신사는 앱이 없다. 통신사 홈페이지를 찾아 가입했는데 사용량 조회 기능이 없다. KT 회선을 이용하는 통신사들은 KT마이아뜰폰 이라는 앱을 사용하라고 하는데 s25같은 최신폰에선 설치가 안된다고 나온다.
- https://ktmyr.com/ 웹 사이트를 가입(네이버 로그인 연동도 해둬야 편하다.)하니 사용량을 볼 수 있었다. 폰에 홈페이지 바로가기 링크 추가

요금이 저렴해서 좋긴 한데 할인이 끝나는 7개월 안에 다른 요금제로 변경해야 한다. 또 이런 과정을 거쳐야 한다고 생각하니 좀 귀찮을것 같긴 하다.

Prev