로그에도 나타나지 않고, 오류도 발생시키지 않으며, CPU 사용량도 높이지 않는 아주 특유의 문제가 있습니다. 조용히 기분만 상하게 만드는 문제죠. 저는 바로 그 지점에 서 있었습니다. 겉보기엔 완벽하게 멀쩡해 보이지만 이상하게 느껴지는 시나몬(Cinnamon) 데스크톱 앞에 앉아 말입니다.
극적으로 느린 것은 아니었습니다. 아무것도 멈추거나 충돌하지 않았지만, 모든 동작에 은은한 거부감이 따라붙었습니다. 시스템이 뭔가 하기 전에 아주 살짝 더 고민하는 듯한 느낌이랄까요. 애니메이션은 더 이상 매끄럽게 흘러가지 않고 화면 위를 협상하듯 기어갔습니다. 타이핑한 글자도 작은 의심의 버퍼를 통과한 뒤에야 화면에 나타나는 것 같았습니다. 창을 열 때조차 데스크톱이 감정적으로 준비할 시간이 필요한 듯한 미세한 망설임이 있었습니다.
그래서 저는 합리적인 사람답게 모든 것을 점검했습니다. 시스템 모니터를 띄워놓고 마치 설명해 준다는 듯 노려봤습니다. CPU 사용량은 거의 움직이지 않았고, 메모리는 여유로웠으며, 디스크 활동은 휴일을 보내는 듯 조용했습니다. 측정 가능한 모든 지표만 놓고 보면 이 시스템은 분명 빨라야 했습니다. 그제야 의심이 스며들기 시작합니다. 시스템이 느린 게 아니라면… 대체 내가 느끼는 이 감각은 뭘까?
범인으로 의심됐지만 결국 무죄였던 용의자들
확인할수록 오히려 혼란스러워질 때

이 지점부터 문제 해결은 심리 훈련처럼 변합니다. 절차대로 움직입니다. 시스템을 재시작하고, 백그라운드 앱을 닫고, 평소와 다른 프로세스가 없는지 살펴봅니다. 어느새 본인도 더 이상 완전히 믿지 못하는 도구들을 열어 대고, 누군가 범인을 손가락질해 주기만 바랍니다. 그런데 아무도 가리키지 않습니다. 모든 것이 수상할 정도로 정상입니다. 그러면 추적할 단서라도 만들기 위해 갖가지 이론을 세우기 시작합니다. 드라이버가 잠깐 삐걱였거나, 업데이트가 미묘한 무언가를 가져왔을지도 모른다고요. 아니면 내가 보지 않는 사이 시스템 깊숙한 곳에서 낯선 설정 하나가 바뀌었을지도 모른다고요.
하지만 모든 경로는 같은 곳에서 끝납니다. 깨끗하고, 조용하고, 철저하게 무용지물입니다. 그리고 데스크톱은 여전히 시럽 속을 달리듯 느긋합니다. 작업을 못 할 정도는 아니지만, 끊임없이 짜증을 유발할 만큼은 됩니다. 고칠 구체적인 대상이 없으니 인내심만 서서히 깎여 나가는 종류의 문제죠. 어느 순간에는 진지하게 환각이 아닌가 생각하기도 했습니다. 어쩌면 이게 새로운 평상 상태이고 제 뇌가 아직 적응하지 못한 것은 아닐까요. 이런 문제가 사람을 얼마나 지치게 만들 수 있는지 보여주는 대목입니다.
모든 것을 일으킨 아주 작은 설정
시나몬 컴포지터가 몰래 부드러움을 갉아먹고 있었다

해결책은 통찰력에서 나온 게 아니라 짜증에서 나왔습니다. 확인할 논리적인 항목이 바닥나자, 원인과 결과를 더 이상 믿지 않는 사람의 에너지로 설정을 이리저리 클릭하기 시작했습니다. 패널을 열고, 옵션을 뒤집고, 뭐라도 반응해 주기를 바라면서요.
그러다 시나몬의 컴포지터(compositor) 설정 앞에 도착했습니다. 원래 컴포지터는 데스크톱을 더 좋게 느끼게 만들어 주는 존재입니다. 애니메이션과 시각 효과, 그리고 실용적인 인터페이스를 매끄럽고 현대적으로 만들어 주는 모든 광택을 담당하죠. 이론상으로는 유동성을 더해 주는 계층입니다.
그런데 그날 실제로는 부드러움을 조용히 빨아들이는 계층이었습니다. 그래서 가장 과학적인 조치를 취했습니다. 컴포지터를 꺼버린 겁니다. 한순간 화면이 약간 투박해 보였습니다. 광택이 덜하죠. 그런데 즉시, 그리고 분명하게, 시스템의 느낌이 달라졌습니다. 더 빨랐습니다. 직접적이었습니다. 그 망설임이 루프에서 잘려 나간 것 같았습니다.
그리고 다시 켰습니다. 그런데 이상하게도… 그걸로 해결됐습니다. 세세한 조정도, 깊은 설정 작업도 없이, 마치 컴포지터의 성격을 재부팅하듯 껐다 켠 것뿐입니다. 지연은 사라졌고 애니메이션은 제자리로 튕겨 돌아왔습니다. 타이핑은 다시 즉각적으로 반응했고, 창을 열 때 그 작고 화나는 딜레이도 사라졌습니다. 저는 잠시 그 자리에 앉아 화면을 바라봤습니다. 이게 해결책이라니, 살짝 억울하기까지 했습니다.
생각보다 자주 발생하는 문제
부드러움은 시스템 모니터가 보여줄 수 없는 방식으로 깨진다
짜증나는 부분은 기술적으로 아무것도 고장 나지 않았다는 점입니다. 컴포지터는 충돌하지 않았고, 시스템에는 부하가 없었으며, 발견되기를 기다리는 오류도 없었습니다. 시스템 관점에서는 모든 것이 정확하게 작동하고 있었습니다.
하지만 현대 데스크톱은 하나의 프로그램이 아니라, 하나처럼 위장한 여러 계층의 집합체입니다. 데스크톱 환경 자체가 있고, 그 위에 컴포지터가 앉아 있으며, 그 아래 디스플레이 서버가 있고, GPU 드라이버가 모든 것을 번역하며, 디스플레이 파이프라인이 전체를 동기화하려 애씁니다. 우리 뇌가 그 결과를 "매끄럽다"고 해석하려면 이 모든 것이 완벽하게 정렬되어야 합니다.
구성 요소 중 하나라도 아주 살짝 동기화에서 벗어나면, 측정 가능한 문제가 생기지 않을 수도 있습니다. 대신 마찰이 생깁니다. 미세한 스타터가 생기죠. 뭔가 미묘하게 어긋났다는 그 이상하고 파악하기 힘든 감각이요. 그리고 이 모든 것이 높은 CPU 사용량이나 메모리 압박으로 나타나지 않기 때문에, 시스템은 결백해 보입니다. 이런 문제가 그토록 짜증나는 이유가 바로 이것입니다.

시스템이 거짓말한다면, 질문 자체를 바꿔라
이런 종류의 문제에 부딪히면 전통적인 문제 해결 방식은 한계에 부딪힙니다. 하루 종일 그래프를 노려봐도 문제는 보이지 않습니다. 문제는 부하가 아니라 동작 방식에 있기 때문입니다. 제 경우 해결책은 민망할 정도로 단순했습니다. 컴포지터를 초기화하면 끝. 심층 분석 같은 건 필요 없었습니다. 성능 수치가 아니라 '느낌'에 영향을 주는 시스템 부분을 들여다볼 의지만 있으면 됐습니다.
여기서 얻을 교훈이 하나 있다면 이것입니다. 시스템이 멀쩡해 보이는데 이상하게 느껴진다면, "무엇이 자원을 쓰고 있나?"라고 묻는 것을 멈추고 "무엇이 경험을 만들고 있나?"라고 물어보세요. 때로는 답이 폭주하는 프로세스가 아닙니다. 완전히 정상적인 구성 요소가 살짝 컨디션이 안 좋은 날일 수도 있습니다. 때로는 시스템이 고장 난 게 아닙니다.
그냥 작은 자극으로 다시 제자리에 놓이면 되는 것뿐입니다. 리눅스가 저를 배신한 게 아니었습니다. 다만 흐트러졌을 뿐이죠. 고치는 데 필요한 것은 스택의 작은 조각 하나를 다시 정렬하는 자잘한 조정이었습니다. 이게 바로 리눅스의 아름다움이자 동시에 좌절의 원천입니다. 유연하고, 계층적이고, 놀랄 만큼 강력한 시스템을 얻게 됩니다. 하지만 가끔은 그 계층들이 미묘한 방식으로 서로 불협화음을 냅니다. 그럴 때 꼭 '수리'가 필요한 건 아닙니다. 때로는 올바른 스위치를 한 번 뒤집어서 모든 구성 요소에게 원래 어떻게 동작해야 하는지 상기시켜 주기만 하면 됩니다.