io_uring vs epoll

io_uring은 Facebook의 Jens Axboe가 만든 Linux용 새로운 비동기 I/O API로, 유저스페이스와 커널스페이스간에 매핑되는 SQ(요청 큐), CQ(완료 큐) 두가지의 링 버퍼를 사용한다. 애플리케이션은 SQ를 통해 커널에게 완료하길 원하는 작업을 SQE(SQ 엔트리)라는 포맷으로 제출한다. CQ를 통해서는 완료된 결과를 확인한다. SQ와 유사하게 완료된 결과도 CQE(CQ 엔트리)

2 min read

More issues

파이썬이 메모리를 관리하는 방법

C, C++ 같은 언어와는 달리 파이썬은 메모리의 할당과 해제가 파이썬 인터프리터에 의해 자동으로 관리됩니다. 이 글에서는 파이썬, 정확히는 가장 많이 사용되는 파이썬 인터프리터인 CPython(이하 "파이썬")이 메모리를 어떻게 관리하는지 그 세부 구현에 대해 소개합니다. 파이썬의 메모리 구조 파이썬에서 메모리에 할당되는것은 AST 객체와 일반 데이터 객체, 크게 두가지로
21 min read

SD카드 없이 라즈베리 파이 부팅하기

여러대의 라즈베리 파이들로 구성된 도커 스웜 클러스터를 구성하면서 가장 귀찮았던 점은 일일히 여러개의 SD 카드를 플래싱하고 부트 파티션 수정을 통한 ssh 활성화 등 제한적인 헤드리스 설정만 가능한 문제 때문에 직접 파이들에 접속해 추가 설정을 진행해야 했던 점이다. 처음에는 패브릭을 사용해 절반 정도의 자동화를 수행해 봤지만 그래도 중앙화된 관리는 아니라 불편한
14 min read

모나드, 그리고 모나드 트랜스포머와 함께하는 비동기 파이썬

간단한 서버 프로그램을 생각해 봅시다. 사용자로부터 입력을 받고, 입력받은 데이터를 가지고 무언가 IO를 한 후 결과물에 무언가 처리를 해 돌려주는 것이 일반적인 서버의 로직입니다. 하지만 현실 세계에서는 글로 보듯이 선형적인 흐름이 이루어지지 않습니다. 악의적인 사용자로부터 위험한 입력이 들어올 수도 있고, 비가 와서 인터넷이 느려서 IO가 실패할수도 있고, 결과물이 이상해서 처리를
7 min read

리얼월드 파이썬 메타클래스

이 글은 파이콘 한국 2019에서 파이썬 메타클래스에 대해 발표한 리얼월드 메타클래스 발표의 텍스트 버전입니다. 슬라이드와 영상 또한 공개되어 있습니다. 이 글에서는... * 파이썬의 핵심적인 부분이지만 잘 모르고, 심오하게만 느껴지는 파이썬 메타클래스를 객체와 타입의 정의를 찾아가며 메타클래스에 대한 개념을 정리 * 파이썬의 클래스 생성 과정에서 메타클래스가 어떻게 사용되는지 알아본 후, 메타클래스를 유용하게 사용할
21 min read