[SOSP'25] How to Copy Memory? Coordinated Asynchronous Copy as a First-Class OS Service

2025. 11. 12. 10:31·[ Laboratory ]/Paper review

How to Copy Memory? Coordinated Asynchronous Copy as a First-Class OS Service

https://dl.acm.org/doi/10.1145/3731569.3764800

https://sigops.org/s/conferences/sosp/2025/schedule.html

ACM의 SIGPOPS Symposium on Operating System Principles에서 Best paper로 선정된 논문이다.

summary

메모리 복사 최적화에 대한 연구는 계속 진행되어 왔지만 메모리 복사는 여전히 현대의 운영체제와 애플리케이션 전반에서 성능 병목의 메인 원인이다. 기존의 복사 최적화 기법들은 특정 환경이나 임계값 이상의 데이터 크기에서만 효과를 보여 일반적인 시스템 전반에 적용하기는 어렵다는 한계가 있었다.

 

이 논문은 기존에 라이브러리 함수 형태로 제공되던 메모리 복사 기능을 운영체제의 first class 서비스로 재구성한 copier를 제안한다. copier는 비동기로 복사 작업을 수행하기 때문에 copy-use window를 활용해 애플리케이션 계산과 복사 작업을 오버랩할 수 있다. 또한 운영체제의 서비스로 재구성했기 때문에 전역적인 관점에서 시스템 전반의 복사 작업을 관리하고 최적화 할 수 있다.

 

기존 복사 최적화 기술들이 하드웨어 자원을 충분히 활용하지 못했던 한계를 해결하기 위해 piggyback based dispatcher를 설계하여 cpu와 dma 엔진을 병렬로 활용한다. 병렬적으로 두 엔진을 활용하기 때문에 다양한 크기와 패턴의 복사에도 성능 향상 효과를 얻을 수 있다. 또한 리소스 관리와 fairness 보장을 위해서 cgroup controller를 도입했고 스케쥴링은 cpu 슬라이스가 아닌 copy 작업의 length를 기준으로 동작한다.

 

프로그래밍 인터페이스 측면에서 비동기 복사 요청을 수행하는 amemcpy()와 데이터 사용 직전에 동기화를 수행하는 csync()를 제공하여 기존 memcpy와 동일하게 데이터 손상 없이 동일한 결과를 보장하면서도 비동기 처리로 얻는 성능 향상도 함께 보장한다. 비동기 복사 환경에서도 데이터 일관성을 유지하기 위해서 copier는 order dependency와 data dependency를 추적하여 복사의 정확성을 보장한다. 또한 copy absorption을 통해 복사 과정 중 커널과 유저 스페이스 사이에서 발생하는 중간 단계의 불필요한 복사를 제거하여 데이터 이동 경로를 최적화한다.

 

strengths

- 기존의 연구들이 라이브러리로 제공되는 복사 함수에서 최적화를 진행했던 것과 달리 copier는 복사 기능 자체를 운영체제의 서비스로 재구성하여 시스템 전반에서 전역적인 관점으로 복사를 관리할 수 있도록 했다.

 

- 복사 엔진을 하나만 사용하던 기존 대부분의 최적화 연구와 달리 cpu와 dma를 병렬적으로 활용할 수 있도록 piggyback based dispatcher를 도입하여 다양한 크기와 패턴에도 일관된 성능을 보장할 수 있도록 했다.

 

- order dependency와 data dependency 추적을 모두 활용하여 비동기 복사에서 발생할 수 있는 데이터 일관성 문제를 해결해서 일관되게 높은 성능만 보장한 것이 아니라 correctness 또한 보장하였다.

 

- amemcpy와 csync처럼 비동기 복사를 추상화한 프로그래밍 인터페이스와 툴체인, 가이드를 제공해서 별도로 복잡한 코드 작성 없이 기존의 memcpy처럼 사용할 수 있다는 장점이 있다.

 

weakness

- Figure 1은 동기적 복사와 비동기적 복사에서 각각 애플리케이션의 계산과 메모리 복사가 blocking인지, overlap 관계인지를 보여주는 그림이다. 다만 복사와 애플리케이션의 계산은 블록만으로도 overlap인지 blocking 되는지 확인할 수 있기 때문에 논문 본문에서는 copy-use window를 ‘복사 완료 시점과 데이터 사용 시작 시점 사이의 구간’으로 정의하고 있음을 고려하여 그림에서 빨간 점이 데이터 사용 시점을 의미하는 것처럼 파란 점 또한 복사의 시작 시점이 아니라 완료 시점을 나타내도록 표현하는 편이 정의와 더 일관되었을 것으로 보인다.

 

- copy-use window를 사용할 수 있는 경우라면 커널 복사는 0.3KB 이상, 유저 스페이스 복사는 0.5KB 이상일 때 동기적 복사보다 유리하지만 copy-use window가 불충분하다면 하드웨어 가속에 의존해야하기 때문에 커널 복사는 2KB 이상, 유저 스페이스 복사는 12KB 이상이어야 한다. copy-use window가 불충분한 경우의 임계값은 생각보다 작지 않으며 충분하더라도 임계값 미만의 매우 작은 복사에 대해서는 copier가 오히려 성능을 악화시킬 수 있다. 또한 32KB 이상의 큰 데이터에 대해서는 zero-copy 기반의 처리가 메모리 공유를 통해 복사 자체를 제거하기 때문에 더 효율적일 수도 있다.

 

- 복사를 amemcpy를 통해 비동기적으로 처리하면 복사된 데이터를 실제로 사용하기 전에 반드시 csync를 호출해서 복사 작업의 완료 여부를 확인해야한다. 하지만 개발자가 수동적으로 csync를 삽입해야하기 때문에 개발의 복잡성이 증가한다. 개발자가 수동으로 복사 완료 확인 지점을 지정해야하는 것이 번거로울 것임을 고려하여 논문은 프로그래밍 primitive들에 대한 가이드라인을 구체적으로 제공하는데 이 네 가지 지침을 개발자가 직접 확인하고 정확하게 추가해야한다. 물론 논문은 정확하게 csync를 추가하면 amemcpy도 memcpy처럼 semantic equivalence를 보장할 수 있다고 검증했지만 잘못 추가하는 경우 오류가 발생할 수 있다. 이와 유사하게 abort 또한 개발자가 수동으로 명시적 abort를 진행해야한다는 부담이 있다.

 

detailed comments

라이브러리 함수로 처리되는 것이 당연하게 여겨졌던 메모리 복사를 운영체제의 서비스로 올린 것이 가장 인상적이었다. 이를 통해 비동기적으로 처리해서 애플리케이션 계산과 복사를 오버랩하는 방법으로 속도를 높이는 것 외에도 하드웨어 가속 기능을 유저 애플리케이션이나 커널이 개별적으로 사용할 때 발생하는 문제들 없이 하드웨어 기능을 완전히 활용할 수 있게 piggyback 기반의 디스패처를 도입하고 DMA에서 VA를 PA로 변환하는 오버헤드를 줄이기 위해 지역성을 활용한 AT캐시와를 활용한 것 모두 인상적이었다.
기존의 최적화 방식과 달리 운영체제의 서비스로 올리면서 발생하는 여러 문제들을 언급하며 그에 대해 구체적이고 자세한 해결책을 제시하고 있어서 처음에는 조금 복잡하고 많다고 느껴졌지만 재미있게 읽었다.

728x90

'[ Laboratory ] > Paper review' 카테고리의 다른 글

[SIGCOMM'25] ByteScale: Communication-Efficient Scaling of LLM Training with a 2048K Context Length on 16384 GPUs  (0) 2025.11.14
[VLDB'25] VStream: A Distributed Streaming Vector Search System  (0) 2025.11.12
[SOSP'25] HedraRAG: Co-Optimizing Generation and Retrieval for Heterogeneous RAG Workflows  (0) 2025.11.12
[IEEE '25] Accelerating Page Migrations in Operating Systems With Intel DSA  (0) 2025.03.25
[FAST ' 24] MiDAS: Minimizing Write Amplification in Log-Structured Systems  (0) 2025.03.11
omnicache  (0) 2025.02.04
[Fast '24] Baleen: ML Admission & Prefetching for Flash Caches 세 줄 핵심 요약  (0) 2024.12.31
'[ Laboratory ]/Paper review' 카테고리의 다른 글
  • [VLDB'25] VStream: A Distributed Streaming Vector Search System
  • [SOSP'25] HedraRAG: Co-Optimizing Generation and Retrieval for Heterogeneous RAG Workflows
  • [IEEE '25] Accelerating Page Migrations in Operating Systems With Intel DSA
  • [FAST ' 24] MiDAS: Minimizing Write Amplification in Log-Structured Systems
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • [ Laboratory ] N
        • Paper review N
        • Advanced Operating System N
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      프로그래머스 코테
      프로그래머스 c++
      자바스크립트
      코딩 인강
      소프트웨어 공학
      프로그래밍 언어론
      현대오토에버
      티스토리챌린지
      데이터베이스
      싸피 13기
      MySQL
      코딩 교육
      ACM
      SSAFY
      오블완
      프로그래머스 입문
      프로그래머스
      현대오토에버 스마트모빌리티
      hotstorage
      대학생 대외활동
      ssafy 13기
      스마트모빌리티공학체험교육
      SQL
      백준
      비전공자 코딩
      공대생 대외활동
      spdk
      싸피
      현대오토에버 스마트 모빌리티
      코드잇
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [SOSP'25] How to Copy Memory? Coordinated Asynchronous Copy as a First-Class OS Service
    상단으로

    티스토리툴바