koenjafrdeiteshizh-CNvith





FreeBSD 개발에 대한 1년 간의 후원

1 week ago 4

  • Amazon의 후원을 받아 1년 동안 FreeBSD 릴리스 엔지니어링과 FreeBSD/EC2 개발을 진행함
  • 릴리스 관리와 EC2 관련 개선을 병행하며 월 평균 50시간의 작업 시간을 투입함
  • Graviton 인스턴스 전원 관리, 핫플러그 지원, 부팅 성능 개선 등 주요 기능 문제와 품질 향상을 달성함
  • AMI 종류 확장 및 빌드 자동화로 FreeBSD AMI 배포의 다양성과 효율성을 높임
  • 후원 종료 후에는 개발 속도 둔화와 일부 기능 개발 정체 현상이 예상됨

FreeBSD 개발 후원 1년 회고

# 시작 배경 및 후원 과정

  • FreeBSD/EC2 플랫폼을 2010년부터 관리해왔으며, 2023년 11월부터 FreeBSD 릴리스 엔지니어링 리드 역할도 수행함
  • Antithesis, Patreon 등에서 소액 후원 중이었으나, 릴리스 엔지니어링 업무가 FreeBSD/EC2 개발 시간을 크게 잠식하는 상황에 직면함
  • Amazon 측과 수년 간 EC2 작업에 대한 스폰서 논의를 이어왔으며, 2024년 4월에 예산 확보 담당자와 연결되어 1년간 후원을 받게 됨
  • 후원은 GitHub Sponsors 경로로 집행됐으며, Amazon 의도한 기간과 실제 입금 시점은 다를 수 있음

# 후원과 작업 시간 분배

  • Amazon의 요청으로 매월 40시간의 FreeBSD 릴리스 엔지니어링 및 EC2 개발 시간을 제공하기로 약속함
  • 실제로는 월별로 50시간 정도를 투입했으며, EC2 이슈에 20시간, 릴리스 작업에 20시간, 기타 엔지니어링에 10시간을 분배함
  • 월별로 작업 시간이 크게 변동함

# FreeBSD 릴리스 관리

  • FreeBSD 분기 릴리스 일정을 도입·관리하면서 1년간 4차례 릴리스를 수행함: FreeBSD 13.4(2024.9), 14.2(2024.12), 13.5(2025.3), 14.3(2025.6 예상)
  • 각 릴리스에는 개발자 코드 마감 독려, 머지 요청 승인 및 조율, 이미지 빌드·테스트, 안내문 작성, 각종 릴리스 빌드 오류 수정이 포함됨
  • 릴리스 엔지니어링 소요 시간은 분기마다 33.5~79시간 수준이며, 후반부로 갈수록 안정화로 작업량이 감소하는 패턴임

# 주요 EC2 기능 개선 및 품질 향상

Graviton 인스턴스 전원 드라이버, 핫플러그 지원

  • Graviton 인스턴스에서 EC2 API의 정상 종료 신호를 FreeBSD가 인지하지 못하던 문제를 해결

    • ACPI _AEI 오브젝트를 활용, GPIO 기반 "power button" 신호와 드라이버 로직을 연결
    • EC2 제공 ACPI 테이블의 Pull Up 플래그 설정 불일치로 인한 장치 비활성화 문제는 FreeBSD/EC2 AMI에 ACPI_Q_AEI_NOPULL 설정 추가로 대응
  • EC2 Graviton 및 x86 인스턴스의 장치 핫플러그(특히 핫 언플러그) 문제들을 복합적으로 진단 및 수정

    • IRQ 누수, PCI 전원 상태와 OS 신호 불일치, "유령" PCI 장치 등 다양한 유형의 버그에 대응
    • 임시 방편으로 ACPI 퀴르크(예: ACPI_Q_CLEAR_PME_ON_DETACH, ACPI_Q_DELAY_BEFORE_EJECT_RESCAN) 적용, EC2 쪽 버그는 수정 예정

핫플러그 테스트 자동화 및 품질 개선

  • EC2 환경에서 반복적으로 EBS 볼륨을 연결·해제하는 스크립트를 개발, 300회 연속 테스트를 통한 안정성 검증
  • PCIe 핫플러그의 불필요한 5초 지연(물리 시스템에서만 의미 있음)을 EC2에서는 0초로 설정하여 품질 향상

부팅 성능 개선

  • FreeBSD/EC2 부팅 속도 이슈를 데이터 수집 및 분석으로 체계적으로 개선
  • 2024년 초 루트 디스크 용량 증설로 부팅 3배 지연, Graviton2 인스턴스의 커널 엔트로피 시딩 지연, ZFS 부팅 시간 증가, IMDSv2 관련 IPv6 지원 문제 등을 순차적으로 해결
  • 파일시스템별 부팅 성능 격차, 엔트로피 수급 비효율, 네트워크 초기화 지연 등 다방면에서 최적화 이루어짐

# FreeBSD AMI 다양성 확대 및 빌드/배포 자동화

  • 기존 base, cloud-init AMI 외에 small AMI(불필요한 디버깅·테스트 코드/툴 제거, 1GB 크기) , builder AMI(사용자 커스텀용 빌더) 를 추가
  • 4종류 AMI * 2파일시스템(UFS/ZFS) * 2아키텍처(amd64/arm64) * 3버전(13, 14, 15)으로 이미지 조합이 확대되면서 오래된 이미지 자동 삭제 및 스크립트화 진행, 336TB EBS 스냅샷 정리

# 엔지니어링 일반 개선

  • FreeBSD AMI/릴리스 빌드의 병렬화로 전체 빌드 시간을 약 22시간→13시간으로 단축, 더 많은 AMI 종류 추가에 여유 확보
  • EC2 인스턴스 기반 자동화 테스트 및 diffoscope 비교로 빌드 재현성(리프로듀서블 빌드) 문제 진단 및 해결 진행
  • ENA 드라이버 패치 리뷰, OCI 컨테이너 빌드 및 레지스트리 업로드, AWS 관련 툴 개선, 보안 이슈 리포트 등 다양한 소규모 업무 병행

# 앞으로의 전망 및 한계

  • FreeBSD 릴리스 엔지니어링 및 EC2 플랫폼 유지 역할은 유지하나, 이전보다 투입 가능한 시간이 줄어들 전망
  • FreeBSD 15.0(2024년 12월), 14.4/15.1/14.5/15.2(2026년) 릴리스는 예정대로 진행, 단 기능 추가/버그 수정 속도는 저하될 것으로 보임
  • 자동 파일시스템 확장, 다중 NIC 및 핫플러그 자동화, 미리 패치된 AMI 배포, EC2 사용자 웹툴, FreeBSD/Firecracker 지원 등 미완 과제는 장기적으로 정체 예상

# 맺음말

  • Amazon의 위 후원은 오픈소스 개발자에겐 극히 드문 기회이며 그 동안의 성과에 자부심과 감사를 느낌

Read Entire Article