본문으로 건너뛰기
0
r/jeffnews HN 약 2분

coreutils yes(1) 명령어를 175GiB/s로 최적화한 커밋

open-source

요약

coreutils의 yes 명령어를 vmsplice/splice 제로카피 I/O로 175GiB/s까지 최적화한 커밋. 페이지 정렬 버퍼, 더블링 복사 패턴, 경험적으로 결정된 512KB 파이프 크기 등이 핵심 기법임.

기사 전체 정리

  • coreutils의 yes 명령어를 175GiB/s까지 끌어올린 커밋이 올라옴
  • 핵심은 vmsplice/splice를 활용한 제로카피 I/O임. SPLICE_F_GIFT 플래그로 커널에 페이지를 넘겨서 복사 없이 데이터를 전달함
  • 버퍼 채우기에는 더블링 복사 패턴을 사용함. 초기 데이터를 복사한 뒤 채워진 크기만큼 반복 복사해서 버퍼를 빠르게 채움
  • 파이프 크기는 경험적으로 512KB가 최적이었고, 실제 전송에는 파이프 용량의 1/4을 사용하는 게 vmsplice 처리량의 스윗스팟이었음
  • 페이지 정렬된 버퍼를 alignalloc으로 할당하고, stdout이 파이프가 아닌 경우에는 중간 파이프를 만들어서 splice로 전달함
  • stdout이 파이프가 아닌 경우에는 기존 full_write 방식으로 폴백함

핵심 포인트

  • vmsplice/splice와 SPLICE_F_GIFT를 활용한 제로카피 I/O로 대폭 성능 향상
  • 512KB 파이프 크기의 1/4을 전송 단위로 사용하는 것이 최적
  • 파이프가 아닌 stdout에는 full_write 폴백 처리

인사이트

단순한 yes 명령어 하나에도 이 정도 시스템 레벨 최적화가 가능하다는 점이 인상적. 제로카피 I/O 패턴의 좋은 학습 사례임

댓글

댓글

댓글을 불러오는 중...

open-source

Microsoft가 공개한 Rust 트레이닝 자료 — 초급부터 전문가까지 7개 코스

Microsoft가 배경 언어별 입문서 3권과 심화/전문가/실무 과정 4권으로 구성된 Rust 트레이닝 자료를 GitHub에 공개했다. 각 권마다 15-16개 챕터, Mermaid 다이어그램, Playground 연습문제를 포함한다.

open-source

RK3588 GPU 안에 숨어있는 Cortex-M7 MCU를 뜯어보고 Rust/gdb/MicroPython까지 올려본 이야기

RK3588의 Mali-G610 GPU 내부에 990MHz로 동작하는 Cortex-M7 MCU가 있으며, 이 펌웨어가 커널 대신 GPU 작업을 관리함. 메모리 접근의 3단 계층 구조, 인터럽트 시스템, 펌웨어 이미지 포맷을 분석하고, 실제로 Rust 정적 라이브러리, gdb 디버깅, MicroPython까지 MCU 위에서 구동하는 과정을 상세히 다룸.

open-source

오픈소스가 전부를 줬고, 줄 것이 남지 않을 때까지 — Requests 창시자의 고백

Python Requests 라이브러리 창시자 Kenneth Reitz가 오픈소스가 준 커리어, 정체성, 그리고 진단되지 않은 양극성 장애와 맞물린 정신건강 위기를 솔직하게 회고한 에세이.

open-source

IBM Z/LinuxONE 오픈소스 2월 리포트 — Cassandra부터 Terraform까지 27개 검증

IBM이 s390x 메인프레임에서 27개 오픈소스 소프트웨어 호환성을 검증한 월간 리포트. upterm, Python websockets 등이 새로 s390x 지원을 시작했고, Open Mainframe Project가 Mainframe Software Hub를 발표함.

open-source

1년간 OS를 밑바닥부터 만든 개발자 — 부트로더에서 Doom 포팅까지

MONOLITH이라는 OS를 처음부터 만든 1년간의 개발 일지. GDT/IDT 초기화부터 시작해 메모리 관리, 유저스페이스, IPC, 데스크톱 환경까지 구현하고 최종적으로 Doom 포팅에 성공함.