싱글 스레드의 미학

인간은 멀티 코어가 아니다

by TAFO

오른쪽 모니터에는 코드가, 왼쪽 모니터에는 슬랙이 떠 있다. 귀에는 노이즈 캔슬링 이어폰으로 유튜브 플레이리스트가 흐르고, 내 의지보다 손가락이 먼저 Alt+Tab을 실행하며 브라우저와 터미널 사이를 오간다.


우리는 이것을 ‘멀티태스킹’이라 부르며 능력이라 착각한다. 동시에 여러 일을 처리하는 유능한 현대인의 초상. 하지만 공학적으로 말하자면, 이것은 명백한 오류다.


인간의 뇌는 최신형 멀티 코어 프로세서가 아니다. 오히려 90년대에 나온 구형 싱글 코어에 가깝다. 우리가 ‘동시에’ 한다고 믿는 일들은 사실, 눈에 보이지 않을 만큼 빠르게 전환하고 있는 것에 불과하다.


운영체제에서 하나의 작업을 멈추고 다른 작업으로 넘어가는 것을 컨텍스트 스위칭이라 한다. 문제는 이 전환이 공짜가 아니라는 점이다.


CPU가 A라는 작업을 하다가 B로 넘어가려면, A의 상태를 어딘가에 저장하고 B의 상태를 새로 불러와야 한다. 이 과정에서 필연적으로 오버헤드가 발생한다. 코딩에 깊게 몰입해 있던 뇌가 메신저 알림 하나를 확인하고 다시 코드로 돌아오기까지, 우리의 뇌는 문맥을 복구하느라 엄청난 에너지를 낭비한다.


퇴근길, 아무것도 한 게 없는 것 같은데 머리가 뜨겁고 녹초가 된 기분을 느낀 적이 있을 것이다. 그것은 일의 총량이 많아서가 아니다. 하루 종일 문맥만 바꾸느라 CPU 점유율이 100%를 찍었기 때문이다.


컴퓨터 과학에서는 이를 스래싱이라 부른다. 프로세스가 실제 일은 하지 못하고, 페이지를 교체하는 데만 모든 자원을 쏟아붓다 멈춰버리는 현상. 번아웃은 종종 감정의 문제처럼 보이지만, 많은 경우 과도한 컨텍스트 스위칭이 만든 시스템적 발열에 가깝다.


개발자들은 효율을 위해 비동기 방식을 선호한다. 데이터를 요청해놓고, 응답이 올 때까지 기다리지 않고 다른 일을 처리하는 것. 우리의 삶도 이 비동기 처리를 닮아 있다. 밥을 먹으며 뉴스를 보고, 걸으면서 카톡을 하고, 대화를 나누면서 다음 스케줄을 계산한다. 기다림을 낭비라 여기며 틈새를 빽빽하게 채운다.


하지만 역설적으로, 삶에서 가장 아름다운 순간은 완전한 블로킹 처리에서 온다.


함수가 리턴값을 줄 때까지 다음 줄로 넘어가지 않고, 프로세스를 통째로 멈춘 채 기다리는 것. 그것은 비효율이 아니라, 하나의 대상이 나라는 시스템의 모든 자원을 독점하는 몰입의 상태다.


주말 아침, 에스프레소 머신 앞에 설 때 나는 잠시 싱글 스레드가 된다.


곱게 갈린 원두를 수평으로 템핑하고, 포터필터를 그룹헤드에 단단히 체결한다. 기계가 웅웅거리며 최대 압력에 도달하면, 원두의 저항을 뚫고 나온 고밀도의 액체가 무겁게 떨어지는 것을 응시한다. 타이머의 숫자가 올라가고 황금빛 크레마가 차오르는 그 30초 남짓한 시간 동안, 내 뇌의 모든 연산 능력은 오직 ‘추출’이라는 하나의 프로세스에 할당된다. 스마트폰도, 걱정도, 어제 못한 일도 끼어들 틈이 없다.


누군가의 말을 들을 때도 마찬가지다. 상대방의 말이 끝나기도 전에 내 대답을 준비하는 ‘비동기 리스닝’을 멈추고, 그저 듣는다. 입력이 완전히 끝날 때까지 출력을 보류하는 것. 그 순간 상대의 말이 ‘내용’이 아니라 ‘온도’로 들어온다. 그 단순한 블로킹이 관계의 깊이를 만든다.


물론, 나는 안다. 이 글을 마치는 순간 나는 다시 스마트폰을 켤 것이다. 밀린 메시지에 답장을 보내며 유튜브를 켤 것이고, 밥을 우겨넣으며 코드를 짤 것이다. 나는 어쩔 수 없는 레거시 시스템이니까. 효율이라는 중력에 끌려 다시 멀티태스킹의 늪으로 들어갈 것이다.


하지만 가끔은 그 완벽한 로직을 동경한다.


복잡하게 꼬여버린 날, 문득 모든 백그라운드 프로세스를 종료하고 main(); 함수 하나만 남겨두는 상상을 한다. 오직 한 번에 하나씩. 입력이 오면 처리하고, 처리가 끝나면 출력한다.


그 단순하고 우아한 싱글 스레드의 커서가, 내 복잡한 머릿속에서 조용히 깜빡이고 있다.


Leica CL / Summicron-C 40mm f2 / Ektachrome 100 (Monochrome Conversion)
이전 06화아날로그의 무한 비트레이트