최근 리눅스 x32 ABI(Application Binary Interface)를 활용하여 64비트 시스템의 성능을 유지하면서 32비트 포인터의 메모리 효율을 얻는 실험이 주목받고 있습니다. 이 기술은 64비트 CPU에서 32비트 주소 공간을 사용하여, 특히 포인터 사용이 많은 애플리케이션에서 메모리 사용량을 크게 줄일 수 있습니다. Janet 언어를 대상으로 한 실험에서는 평균 21%의 RAM 절감 효과가 확인되었으며, 일부 작업에서는 속도 향상도 관찰되었습니다.
이번 실험은 우분투 20.04(Ubuntu 20.04) 환경에서 진행되었으며, Janet의 값 레이아웃 판별 로직을 수정하고 FFI(Foreign Function Interface)를 비활성화하는 등의 작업이 필요했습니다. 네 가지 주요 작업(단어 집계, 레코드 집계, PEG 파싱, 트리 순회)을 비교한 결과, 메모리 사용량은 모두 감소했지만 속도 변화는 엇갈렸습니다. 레코드 집계와 PEG 파싱은 빨라진 반면, 단어 집계와 트리 순회는 다소 느려지거나 비슷한 수준을 보였습니다. 이는 Janet이 이미 NaN 박싱(NaN boxing) 기법으로 값을 효율적으로 저장하기 때문에, x32의 주된 이점이 객체 헤더 크기 축소에서 비롯되었음을 시사합니다. 실제로 마스토돈(Mastodon) 배포 실험에서는 메모리 사용량이 650MB에서 350MB로 절반 가까이 줄어드는 인상적인 결과가 나오기도 했습니다.
x32 ABI의 가장 큰 장점은 32비트 포인터를 사용함으로써 포인터가 차지하는 메모리를 거의 절반으로 줄일 수 있다는 점입니다. 이는 캐시에 더 많은 데이터를 담을 수 있게 하여 전반적인 실행 속도 향상에도 기여할 수 있습니다. 하지만 현재 리눅스 배포판들의 x32 지원은 제한적입니다. 데비안(Debian)은 기본적으로 비활성화되어 있고, 아치 리눅스(Arch Linux)는 커널에 해당 지원이 컴파일되어 있지 않아 직접 커널을 재컴파일해야 하는 등 실용화에는 여전히 많은 제약이 따릅니다. 대부분의 소프트웨어를 직접 빌드해야 하는 번거로움도 큰 걸림돌입니다.
그럼에도 불구하고, x32 ABI는 유휴 상태의 시스템 자원 사용을 효율화하고 데몬(daemon)이나 유틸리티 같은 백그라운드 프로세스의 메모리 발자국(memory footprint)을 줄이는 데 큰 잠재력을 가지고 있습니다. 특히 클라우드 환경에서 서버 비용 절감이나 더 많은 컨테이너를 단일 서버에 배포하는 데 기여할 수 있습니다. 배포판 차원의 적극적인 지원과 소프트웨어 패키징 개선이 이루어진다면, x32는 미래 컴퓨팅 환경에서 자원 효율성을 높이는 중요한 기술로 자리매김할 수 있을 것입니다.