나무 책상 위 14인치 맥북 프로에서 채팅 창을 띄워 두고 타이핑하는 손. 옆에 검정 외장 키보드와 트랙패드가 놓여 있다

맥북 프로가 타이핑을 놓치기 시작했다, 범인을 찾기까지

난 10년 넘게 맥북으로 먹고살고 있다. 특히, 명동 애플스토어에 들어가 “지금 당장 살 수 있는 맥북 14인치 중 가장 좋은 거 주세요.”를 당당히 외치고(사실, 그때도 600만원 짜리 i9 인텔 맥북에 100MB 사진 100장을 노이즈 리덕션 걸고 빡이 쳐서 그랬던거다…) 데려와 지난 3년 동안 빡세게 굴려 온 내 M2 Max. 32기가 메모리에 1TB SSD 그리고 5K 모니터 두 대를 물려서 한 대는 세로로 세워 놓고 쓰는데, 4K 영상 소스를 4~500기가 씩 던져도 군말이 없던 놈이다.(이번 양평랠리 450GB짜리 다큐 한 편도 이 녀석으로 만들었다.)

그런 놈이 어느 날부터 밀리기 시작했다. 흔히 맥북 타이핑 렉이라고 부르는 그 증상이다. 렌더링을 돌릴 때도 아니고 타임라인을 긁을 때도 아니었다. 그냥 글을 칠 때. 한 글자를 누르면 반 박자쯤 뒤에 화면에 나타나고, 심하면 두세 글자가 뭉쳐 있다가 한꺼번에 튀어나왔으며 마우스 커서는 움직임을 전혀 쫒아오지 못했다.

처음엔 그러려니 했다. 맥이 좀 지쳤나 보다, 재부팅하면 되겠지. 그런데 이게 며칠을 가더니 나중엔 문장 하나를 치는 동안 커서가 어디쯤 있는지 눈으로 좇아야 하는 지경이 됐다. 편집이야 손이 익어서 어찌어찌 하는데, 글이 안 써지니 일이 안 됐다. 좌우간 범인을 찾기로 했다. 그게 2주짜리 삽질의 시작이었다.

맥북 타이핑 렉, 제일 먼저 의심한 건 키보드였다

키 입력이 밀리니 키보드를 건드리는 놈부터 의심하는 게 인지상정이다. 내 맥에는 카라비너 엘리먼츠(Karabiner-Elements)가 깔려 있다. 키를 리맵하는 물건이고, 시스템 아주 깊은 곳에 드라이버를 하나 심어 두는 방식이라 뭔가 이상하면 제일 먼저 눈총을 받는 처지다.

카라비너 엘리먼츠의 이벤트 뷰어. 키를 누를 때 실제로 어떤 신호가 오가는지 여기서 볼 수 있다.
카라비너 엘리먼츠의 이벤트 뷰어. 키를 누를 때 실제로 어떤 신호가 오가는지 여기서 볼 수 있다.

그래서 껐다. 아무 변화가 없었다. 프로파일을 비우고, 데몬을 내리고, 나중엔 아예 dext까지 확인했는데도 밀리는 건 똑같았다. 생각해 보면 이 물건을 몇 년을 아무 탈 없이 써 왔는데 하필 지금 갑자기 배신할 이유가 없었다. 여기서 하나 배운 게 있는데, ‘제일 수상해 보이는 놈’과 ‘실제로 그 짓을 한 놈’은 대개 다르다는 것이다. 애먼 놈에게 누명을 씌우고 시작하면 진짜 범인은 그동안 편하게 숨어 있는다.

오래된 용의자, 한국식 보안 프로그램

다음 타자는 뻔했다. 홈택스에 한 번 들어갔다가, 인터넷뱅킹 한 번 하겠다고 깔린 그 물건들 말이다. 위즈베라 델피노, 라온 터치엔 엔엑스키, 유니크루스… 목록을 뽑아 보니 로그인할 때마다 조용히 올라오는 에이전트가 넷이나 됐다. 키보드 입력을 가로채는 게 본업인 놈들이니 이번엔 정황도 그럴듯했다.

전부 내렸다. launchctl로 사용자 도메인과 시스템 도메인 양쪽에서 죽여 놨으니 이제 인터넷뱅킹도 정부24도 못 쓴다. 그 대가로 얻은 건 조금 빨라진 부팅이었다. 타이핑은 그대로였다.

지우면 나아질 것 같다는 착각

이쯤 되니 진단이 아니라 청소가 되기 시작했다. 안 쓴 지 오래된 소프트웨어 신디사이저를 지웠고(1기가쯤 나왔다), 그 김에 딸려 있던 아이락 디알엠 프레임워크도 걷어냈다. 로지텍 지허브는 로그인 항목에서 꺼도 자꾸 살아나기에 런치디 레벨에서 아예 막았다. 11테라짜리 외장 레이드는 스포트라이트 색인을 꺼 버렸다. 재부팅한 뒤마다 색인 프로세스가 씨피유를 물고 늘어지던 게 사라졌으니 이건 그 자체로 남는 장사였다.

청소를 하는 김에 진단 리포트도 날짜순으로 늘어놓고 하나씩 열어 봤다. 스포트라이트, 디스크 쓰기, 원드라이브… 범인처럼 보이는 이름은 많았지만 타이핑이 밀린 시각과 겹치는 건 하나도 없었다.

진단 리포트를 날짜순으로 늘어놓고 하나씩 열어 보던 흔적. 이름은 요란한데 타이핑이 밀린 시각과 겹치는 건 없었다.
진단 리포트를 날짜순으로 늘어놓고 하나씩 열어 보던 흔적. 이름은 요란한데 타이핑이 밀린 시각과 겹치는 건 없었다.

맥은 확실히 깨끗해졌다. 그리고 타이핑은 여전히 밀렸다. 지름신 대신 청소신에게 어루만짐을 당한 셈이다.

6일 만에 재부팅했더니 좋아졌다, 이틀 동안은

터미널에 uptime을 쳐 보고 조금 놀랐다. 6일이었다. 맥은 원래 안 끄고 쓰는 물건이라고 믿고 살았는데, 화면을 그리는 윈도우서버 프로세스가 며칠에 걸쳐 메모리를 야금야금 쥐고 안 놓는다는 이야기를 어디선가 봤다. 5K 두 장에 한 장은 세로로 돌려 놨으니 그릴 것도 많다.

믿고 넘어가는 대신 한번 재 봤다. 아무 작업도 하지 않는 상태에서 윈도우서버가 씨피유를 37.6퍼센트 물고 있었고, 메모리 발자국은 3기가를 넘겼다. 활성 모니터에 뜨는 235메가와는 열세 배 차이다. 압축 메모리는 10기가, 스왑은 4기가 가까이 차 있었다.

가동 9일 7시간째, 아무것도 하지 않는 상태에서 잰 값이다. 겉으로 보이는 숫자와 실제 발자국이 이렇게 다르다.
가동 9일 7시간째, 아무것도 하지 않는 상태에서 잰 값이다. 겉으로 보이는 숫자와 실제 발자국이 이렇게 다르다.

재부팅했다. 확 좋아졌다. 아, 이거였구나 싶었다. 그런데 이틀 뒤에 똑같이 밀리기 시작했다. 범인을 잡은 게 아니라 알리바이가 하나 늘었을 뿐이었다. 재부팅으로 좋아진다는 건 뭔가가 시간이 갈수록 쌓인다는 뜻인데, 그 쌓이는 게 시스템 전체인지 그 위의 무엇인지는 여전히 모르는 상태였다.

범인은 시스템이 아니라 창 하나였다

돌파구는 엉뚱한 데서 나왔다. 밀리는 게 지긋지긋해서 같은 문장을 브라우저 주소창에 쳐 봤다. 안 밀렸다. 메모장에도 쳐 봤다. 안 밀렸다. 그리고 원래 글을 쓰던 그 앱으로 돌아와 다시 쳤더니, 밀렸다. 같은 키보드로, 같은 순간에, 창만 바꿨는데 결과가 달랐다.

같은 키보드로 같은 순간에 창만 바꿨더니 결과가 달랐다. 이 세 줄이 2주를 끝냈다.
같은 키보드로 같은 순간에 창만 바꿨더니 결과가 달랐다. 이 세 줄이 2주를 끝냈다.

그때까지 나는 “맥이 느려졌다”를 전제로 2주를 뒤진 것이었다. 전제가 틀렸으니 아무리 뒤져도 안 나올 수밖에.

문제의 앱은 일렉트론으로 만든 물건이었다. 쉽게 말해 브라우저 한 통을 통째로 안고 도는 앱이다. 이런 앱은 화면을 다시 그리는 동안 들어온 키 입력을 버리지 않고 줄을 세워 두는 옵션을 켤 수 있는데, 이게 켜져 있으면 렌더가 무거워질수록 내 손가락이 그 뒤에 서게 된다. 대화가 길어질수록, 창 안에 쌓인 내용이 많아질수록 렌더는 무거워진다. 재부팅하면 좋아졌던 것도 이걸로 설명이 된다. 재부팅하면 그 창도 같이 비워졌으니까.

내 맥이 늙은 게 아니었다. 창 하나가 무거웠던 것이다. 32기가에 30코어 지피유를 물린 장비를 놓고 2주 동안 키보드 드라이버를 의심했다니, 허탈한 생각이 들 정도였다.

그래서 지금은 원인을 안 만드는 쪽으로 쓴다

고친 게 아니라 안 생기게 하는 쪽으로 정리했다. 두 가지뿐이다.

첫째, 전체화면인 채로 며칠씩 방치되는 창을 만들지 않는다. 무거워지는 건 맥이 아니라 그 창 안에 쌓인 내용과 시간이라, 하루를 넘겨 켜 둘 것 같으면 그전에 앱을 재시작하고 대화를 새로 시작한다. 새 대화창을 열어도 작업 조건을 다시 불러 줄 필요가 없는 건 스킬에 적어 뒀기 때문이다. 참고 계속 쓰면 점점 나빠지기만 한다. 글을 길게 써야 하는 일은 아예 웹 브라우저로 옮겨서 하고, 같은 서비스인데도 브라우저 쪽이 확실히 가볍다.

둘째, 작업에 여유가 생길 때 한 번씩 재부팅한다. 처음엔 2~3일에 한 번은 해야 하는 줄 알았는데, 첫째를 지키고 나니 그럴 일이 없어서 요즘은 보통 주 단위를 넘긴다. 재부팅 주기를 부지런히 줄인 게 아니라 줄일 필요가 없어진 쪽이다.

그래도 생기면 재부팅이다, 그런데 안 생긴다

증상이 도지면 순서는 단순하다. 재부팅으로 일단 털어 내고, 그다음에 로그를 뒤져 무엇이 쌓였는지 추적한다. 앞에서 2주를 태운 건 이 순서를 몰라서였다.

그런데 솔직히 말하면 요즘은 두 번째 단계까지 갈 일이 없다. 원인을 안 만들기 시작한 뒤로 증상 자체가 안 나온다. 대응을 잘하게 된 게 아니라 대응할 일이 사라진 것이다(이게 제일 허탈하면서도 제일 확실한 해결이었다).

남은 것들은 이렇게 정리했다. 지우는 김에 라이브러리 폴더를 뒤지다 9.6기가짜리 가상머신 번들을 하나 발견했는데, 안 쓰는 기능이라 그것도 지웠다. 타이핑과는 상관없지만 에스에스디는 정직하게 늘어났다. 카라비너는 그대로 쓴다. 애초에 죄가 없었다. 인터넷뱅킹 에이전트들은… 필요할 때 다시 켜기로 하고 그냥 뒀다.

맥북 타이핑 렉을 두고 2주 동안 의심하고 내린 것들과 그 판정. 맨 아래 한 줄을 먼저 해 봤으면 나머지 넷은 할 필요가 없었다.
맥북 타이핑 렉을 두고 2주 동안 의심하고 내린 것들과 그 판정. 맨 아래 한 줄을 먼저 해 봤으면 나머지 넷은 할 필요가 없었다.

돌아보면 이번 삽질에서 남는 건 결론보다 순서였다. 증상이 “시스템이 느리다”로 보일 때 시스템부터 뒤지면 안 된다. 같은 동작을 다른 앱에서 한 번만 해 봤으면 2주가 반나절이었다. 다음에 또 뭔가 밀리기 시작하면 난 제일 먼저 창을 바꿔 볼 생각이다.

즐거운 작업 되시기 바란다.

이 글 공유하기X페이스북스레드네이버 블로그

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다