이번 주 UringMachine 개발은 다음과 같은 주요 성과를 거두었습니다:
지난주 주요 개발 성과
-
핵심 문제 해결: GVL 해제 시
#io_pwrite훅 호출로 인한#pwrite중단 문제를 Samuel Williams가 해결했습니다. -
새로운 기능 추가:
- UringMachine 인스턴스 설정 시 SQPOLL 모드 지원이 추가되었습니다 (성능 영향 검토 예정).
- `IO
close의 복잡성에도 불구하고, IO 객체 대신 하위 FD를 전달하는 방식으로 #io_close` 훅을 성공적으로 구현하고 병합했습니다.
* 스레드 인터럽트 처리를 위한 `#yield` 훅과 파이버 스케줄러 메서드에 대한 문서가 추가되었습니다.
- 테스트 및 검증 강화:
- 파이버 스케줄러의 IO API(클래스 및 인스턴스 메서드) 전반에 걸쳐 광범위한 테스트 케이스와 통합 테스트가 작성되었습니다.
- 테스트 지원을 위한 `UM
await_fibers (파이버 종료 대기) 및 UM.socketpair` (원시 FD 반환) API가 추가되었습니다.
- 메트릭 및 프로파일링 개선: 링 크기, 총 작업 수, 파이버 전환 수 등 다양한 운영 지표와 총 CPU 시간, CQE 대기 시간과 같은 기본 시간 측정이 추가되었습니다. 이들은 `UM
profile(true)`로 활성화 가능합니다.
UringMachine의 향후 계획
-
등록된 버퍼 지원:
IO::Buffer클래스와 통합되는 등록된 버퍼 지원을 추가하여 현재의 커스텀 버퍼 구현을 대체할 계획입니다. -
성능 튜닝: UringMachine 저수준 API의 성능을 튜닝하여 I/O 작업 전 파이버 컨텍스트 스위치 수를 제어할 예정입니다.
-
API 문서화: UringMachine API 문서가 부족하여, 다른 개발자들이 쉽게 활용할 수 있도록 문서화 작업을 진행할 것입니다.