메모리 계층화는 페이지를 이동하고 애플리케이션은 객체를 접근합니다. 4KB 페이지 안에서 자주 읽는 인덱스 노드 하나와 거의 읽지 않는 값 여러 개가 함께 있을 수 있습니다. 운영체제는 페이지 접근을 보고 전체를 DRAM에 남기므로 거의 모든 바이트가 차가워도 회수하지 못합니다. OBASE는 이를 온도 조각화라고 부릅니다.

Google 작업 추적 여섯 개는 관찰 창에서 전체 바이트의 1.7%에서 21.3%만 접근했고, 네 작업은 3% 미만이었지만 페이지 활성 비율은 훨씬 컸습니다. 한 예시는 바이트 3.2%를 읽으면서 페이지 91.8%를 건드렸고, 작업에 따라 활성 페이지 안 바이트의 최대 97%가 차가웠습니다. 이 차이는 이론상 차가운 바이트가 80%에서 98%여도 실제 압축 메모리 배포의 오프로딩이 약 20%에서 32%에 머무는 이유를 설명합니다.

OBASE는 비슷한 접근 강도의 객체가 같은 페이지를 공유하도록 가상 주소 배치를 바꿉니다. 일반 페이지 회수와 계층화 앞의 전단으로 남습니다. Kswapd, TMO, TPP, AutoNUMA, Memtis가 어떤 페이지를 옮길지 계속 결정하지만, 객체 인식 커널 인터페이스 없이 더 좋은 페이지 후보를 받습니다.

이동 가능한 객체 경계를 만드는 포인터 계측

비관리 언어의 원시 포인터는 함수 호출 뒤에도 남을 수 있습니다. 다른 스레드가 주소를 잡은 동안 객체를 옮기면 읽기나 쓰기가 해제한 메모리로 향합니다. 따라서 OBASE는 개발자가 이동 가능한 포인터 기반 자료구조를 표시하고 현재 객체 위치를 해석하는 가이드로 접근하도록 요구합니다.

컴파일러 계측은 스레드별 경량 메타데이터에 접근을 기록하며, 객체는 신규 힙에서 시작해 런타임이 동작을 관찰합니다. 자주 접근하면 고온 힙, 충분히 비활성이면 저온 힙으로 옮깁니다. 힙을 분리하면 객체 온도가 공간 배치가 되어 고온 페이지 안 접근 바이트 비율이 높아지고 뜨거운 승객이 없는 차가운 페이지가 생깁니다.

이동은 에포크와 활성 스레드 수를 사용합니다. 스레드는 객체에 들어갈 때 상태를 증가시키고 이동이 동시에 시작되지 않았는지 확인합니다. 수집기는 활성 접근자가 없는 객체만 복사해 새 위치를 공개하며, 가이드가 포인터를 다시 해석합니다. 원자적 비교·교환이 실패하면 전체 스레드를 멈추지 않고 이동을 중단하거나 미룹니다.

OBASE는 두 입도를 맞춥니다. 일반 크기 기반 할당기는 고온 및 저온 객체를 섞어 페이지 접근 하나가 차가운 바이트도 DRAM에 남깁니다. 계측한 가이드가 객체 온도를 관찰하고 잠금 없는 수집기가 접근 없는 객체를 고온 및 저온 힙으로 옮깁니다. 기존 페이지 회수기는 균일한 고온 페이지를 남기고 균일한 저온 페이지를 압축·CXL·저장 계층으로 이동합니다. 이 글을 위해 새로 만든 도판입니다.

고정 수명 대신 승격률을 목표로 하는 제어기

객체 온도는 바뀝니다. 한 구간에서 차가운 키가 배포나 트래픽 변화 뒤 인기를 얻을 수 있습니다. OBASE는 힙을 스캔하고 저온에서 고온으로 돌아오는 승격률이 약 1%가 되도록 저온 임계값을 조절합니다. 승격률이 높으면 임계값을 올려 객체를 DRAM에 더 오래 두고, 낮으면 더 공격적으로 분류합니다.

평가한 자료구조에서는 일반적으로 세 번에서 네 번의 스캔 구간 뒤 수렴했습니다. 읽기 전용 작업은 거의 모든 접근 객체를 고온에 두어 페이지 활용률이 약 80%가 됐습니다. 쓰기 5%인 작업은 약 70%, 쓰기 50%인 작업은 신규 및 변경 객체가 더 오래 섞여도 활용률이 약 40%로 두 배가 됐습니다.

목표값은 운영 위험 조절기이며, 객체 승격률 1%가 요청 1%의 중단을 직접 뜻하지는 않습니다. 승격 객체의 크기와 임계 경로가 다르고 느린 계층 지연이 비용을 정합니다. 운영자는 승격 바이트, 동기 페이지 폴트, p99 요청 지연, 작업 단계 변화 뒤 제어기 회복을 측정해야 합니다.

보수적인 회수기를 공격적으로 만드는 페이지 배치

회수 평가는 13GiB를 사용하는 CrestDB와 MassTree, 활성 객체 4GiB를 사용했습니다. Kswapd만 사용하면 처리량 손실 없이 RSS가 7GiB로 줄었습니다. 더 강한 cgroup 압력은 약 4GiB까지 줄였지만 섞인 페이지에서 고온 객체도 밀어내 처리량이 38% 떨어졌습니다. TMO는 압력 신호가 혼합 활성을 봐서 약 6.5GiB에서 멈췄습니다.

OBASE를 붙이면 백엔드는 처리량을 유지하면서 RSS를 65%에서 72% 회수했습니다. 저온 페이지에 거의 비활성 객체만 있어 페이징이 스왑인 폭주를 만들지 않았습니다. 더 빠른 페이저를 만든 것이 아니라 같은 페이저가 안전하게 고를 수 있는 페이지를 바꾼 결과입니다.

계층화 시험은 MassTree 키 5천만 개로 67GiB를 채우고 DRAM과 Optane 비율을 1:4부터 1:16까지 바꿨습니다. 재배치가 없으면 겉보기 작업 집합이 활용률 21%인 페이지 16.3GiB를 차지해 1:4의 DRAM 14.8GiB보다 컸습니다. OBASE는 이를 활용률 57%인 6.33GiB로 모았습니다.

OBASE를 붙인 TPP는 CXL/Optane 전용 기준 대비 1:4에서 1.85배, 1:16에서도 1.45배를 유지했습니다. Memtis는 1:4에서 1.8배가 1.95배로, 1:16에서 1.55배가 1.7배로 좋아졌습니다. 1:8의 OBASE와 TPP는 더 큰 1:4 DRAM에서 TPP만 사용한 성능과 같아 해당 작업의 빠른 계층 용량을 절반으로 줄였습니다.

인기 변화에서도 유지된 운영 추적의 절감

Meta CacheLib과 Twitter 캐시 추적 두 개가 CrestDB의 ART를 구동했습니다. OBASE는 페이지 활용률을 1.8배에서 3.4배 개선했습니다. 힌트 기반 회수는 회수하지 않은 기준보다 RSS를 36%에서 58% 줄였고, OBASE와 TMO는 TMO만 쓴 경우보다 15%에서 30%를 더 절감했습니다.

한 작업 변화는 승격률을 잠시 14%까지 올렸습니다. 적응형 임계값은 수분 안에 1% 목표 아래로 회복했습니다. 이 급등은 재배치가 새로운 고온 집합을 예측하지 못하고 관찰 뒤 회복을 제한한다는 뜻입니다. 전환 중 승격 페이지가 현재 고온 데이터를 밀어내지 않도록 충분한 DRAM 여유가 필요합니다.

계층이 없을 때 평균 오버헤드는 처리량 2.5% 감소와 p90 지연 5% 증가였습니다. 해시 테이블은 1.5%에서 3%, 스킵 리스트·B+ 트리·ART는 3%에서 5%를 지불했습니다. 스레드 2개에서 32개까지 오버헤드는 1%에서 8%에 머물렀고 수집기는 CPU 하나의 1% 미만을 사용했습니다.

이 값은 지원하는 객체 형상을 전제로 합니다. 연속 배열, 행렬, 압축 배치, 포인터 산술, 여러 가이드가 공유하는 별칭, 접근 규율 밖에서 보존한 주소는 안전한 이동을 막을 수 있습니다. 컴파일러가 일부 패턴을 거부하지만 포팅 작업과 놓친 별칭도 배포 비용입니다.

투명하지 않은 주소 공간 엔지니어링

OBASE는 운영체제를 바꾸지 않지만 애플리케이션은 바꿉니다. 자료구조가 소유권을 선언하고 직접 포인터 역참조를 가이드로 바꾸며 객체 이동을 허용해야 합니다. 제3자 라이브러리, 언어 런타임, 장치 DMA, 커널 인터페이스, 영속 포인터는 이 조건을 만족하지 않을 수 있습니다.

객체 이동은 바이트를 복사하고 가상 주소를 바꿉니다. 고온 객체를 모으면 캐시 지역성은 좋아질 수 있지만 포인터 해석 명령과 메타데이터가 추가됩니다. 여러 페이지에 걸친 큰 객체나 슬랩에 들어간 작은 객체는 다른 처리가 필요합니다. 고온 및 저온 힙 내부의 할당 조각화도 객체 분류가 페이지 균일성으로 이어지는 정도를 정합니다.

정확성 시험은 조회, 삽입, 삭제, 반복자 보존, 회수와 이동을 경합시켜야 합니다. 검사 도구는 전달 상태를 이해해야 이동 후 사용 오류를 숨기지 않습니다. 장애 덤프와 프로파일러도 원래 객체 정체성과 현재 위치를 함께 표시해야 합니다.

보안과 격리는 좋아지거나 나빠질 수 있습니다. 온도별 객체 모음은 주소 배치에 작업 신호를 노출해 관찰자가 부채널로 사용할 수 있습니다. 반대로 테넌트나 민감도별 객체를 모으면 페이지 격리를 강화할 수 있습니다. 분류 메타데이터는 정책 없이 보안 영역을 넘어서는 안 됩니다.

용량 판단 지표인 회수 가능한 저온 페이지

장치군 계획은 차가운 바이트를 보고 이를 저비용 계층 용량으로 간주하는 경우가 많습니다. OBASE는 실제 값이 할당과 객체 혼합 뒤의 차가운 페이지임을 보여 줍니다. 메모리 계층화 평가는 바이트 온도, 페이지 온도, 페이지 활용률, 승격 바이트, 회수 RSS, 백엔드 폴트, 애플리케이션 지연을 함께 공개해야 합니다.

가장 잘 맞는 대상은 규율 있는 접근 래퍼로 객체를 옮길 수 있는 C/C++의 큰 포인터 기반 캐시나 인덱스입니다. 배열, 공유 별칭이 많은 그래프, 커널 고정 버퍼, 소스를 바꿀 수 없는 소프트웨어에는 적합성이 낮습니다. 관리형 런타임은 이미 객체를 옮기지만 OBASE의 비관리 포인터 기법 대신 온도 인식 배치가 필요합니다.

보고된 메모리 36%에서 70% 절감과 일반 오버헤드 2%에서 5%는 배치가 이미 설치한 하드웨어의 효과를 열 수 있음을 보여 줍니다. 느린 계층 지연을 없애는 것이 아니라 고온 객체가 차가운 이웃을 빠른 계층으로 끌고 가는 문제를 막습니다. DRAM이 서버 자본 비용의 절반에 이를 수 있는 데이터센터에서는 이 입도 보정이 다른 페이지 선택 휴리스틱보다 가치가 클 수 있습니다.

출처와 저작권 안내

이 글은 Silicon & Systems의 편집 분석입니다. 설계, 측정값, 한계를 자체 문장으로 재구성했습니다. 원문의 문장, 표, 도판을 복제하지 않았으며 본문 도판은 이 글을 위해 새로 만들었습니다. 논문은 USENIX OSDI 2026 발표 페이지에서 확인할 수 있습니다. 저작권은 저자에게 있으며 연도는 2026년입니다.