0
coreutils yes(1) 명령어를 175GiB/s로 최적화한 커밋
open-source
요약
기사 전체 정리
- coreutils의
yes명령어를 175GiB/s까지 끌어올린 커밋이 올라옴 - 핵심은 vmsplice/splice를 활용한 제로카피 I/O임.
SPLICE_F_GIFT플래그로 커널에 페이지를 넘겨서 복사 없이 데이터를 전달함 - 버퍼 채우기에는 더블링 복사 패턴을 사용함. 초기 데이터를 복사한 뒤 채워진 크기만큼 반복 복사해서 버퍼를 빠르게 채움
- 파이프 크기는 경험적으로 512KB가 최적이었고, 실제 전송에는 파이프 용량의 1/4을 사용하는 게 vmsplice 처리량의 스윗스팟이었음
- 페이지 정렬된 버퍼를
alignalloc으로 할당하고, stdout이 파이프가 아닌 경우에는 중간 파이프를 만들어서 splice로 전달함 - stdout이 파이프가 아닌 경우에는 기존
full_write방식으로 폴백함
핵심 포인트
인사이트
관련 기사
open-source
Microsoft가 공개한 Rust 트레이닝 자료 — 초급부터 전문가까지 7개 코스
open-source
RK3588 GPU 안에 숨어있는 Cortex-M7 MCU를 뜯어보고 Rust/gdb/MicroPython까지 올려본 이야기
open-source
오픈소스가 전부를 줬고, 줄 것이 남지 않을 때까지 — Requests 창시자의 고백
open-source
IBM Z/LinuxONE 오픈소스 2월 리포트 — Cassandra부터 Terraform까지 27개 검증
open-source
1년간 OS를 밑바닥부터 만든 개발자 — 부트로더에서 Doom 포팅까지
댓글
댓글
댓글을 불러오는 중...