디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

kqueue와 epoll의 시스템 아키텍처 및 설계 철학 비교

나르시갤로그로 이동합니다. 2025.11.24 05:46:11
조회 94 추천 0 댓글 0

kqueue와 epoll의 시스템 아키텍처 및 설계 철학 비교 (Linux vs BSD)

서버 백엔드 개발에서 리눅스 환경은 epoll을, macOS 및 FreeBSD 등 BSD 계열은 kqueue를 I/O 멀티플렉싱 기술로 사용합니다. 본 글에서는 두 기술의 단순 성능 비교를 넘어, 시스템 아키텍처 관점에서의 설계 철학 차이를 분석합니다.

1. 모든 것은 파일이다(Everything is a File) 범용 이벤트 서브시스템의 차이

리눅스(epoll)는 유닉스의 모든 것은 파일이다라는 철학을 따릅니다. 이에 따라 소켓 외의 시스템 자원도 파일 디스크립터(File Descriptor, FD)로 추상화하여 관리합니다. * 타이머: timerfd * 시그널: signalfd * 이벤트: eventfd

이 방식은 read, close 등 표준 파일 API를 일관되게 사용할 수 있다는 장점이 있습니다. 그러나 파일이 아닌 객체를 관리하기 위해 FD를 생성해야 하므로 커널 메모리를 소비하고 FD 테이블의 슬롯을 점유하게 됩니다.

반면, BSD의 kqueue 범용 이벤트 통지 시스템(Generic Event Notification)으로 설계되었습니다. 파일 소켓, 타이머, 시그널, 프로세스 상태 변경 등을 모두 독립적인 '이벤트(kevent)'로 취급합니다. 따라서 파일이 아닌 이벤트를 감지하기 위해 별도의 FD를 생성할 필요 없이, 해당 이벤트에 맞는 필터(EVFILT_READ, EVFILT_TIMER, EVFILT_PROC)를 설정하여 처리합니다.

2. 상태 변경 시 시스템 콜 호출 구조: O(N) vs O(1)

다수의 감시 대상 상태를 변경해야 할 때, 두 시스템은 API 호출 구조에서 차이를 보입니다.

  • epoll: 기본적으로 epoll_ctl 시스템 콜을 사용하여 감시 대상을 추가하거나 수정합니다. 여러 대상을 수정하려면 대상의 수(N)만큼 시스템 콜을 호출해야 합니다. (단, epoll_wait는 이벤트 수신만 담당)
  • kqueue: kevent 함수는 이벤트의 등록과 수신(Poll)을 동시에 수행할 수 있도록 설계되었습니다. 변경 사항(changelist)을 배열로 구성하여 kevent 호출 시 한 번에 전달할 수 있으므로, 다수의 상태 변경 시 시스템 콜 호출 횟수를 최소화할 수 있습니다.

3. 자원 효율성: 타이머 처리 방식

타이머 구현 방식에서 자원 관리의 차이가 발생합니다.

  • epoll (Linux): 고해상도 타이머를 사용하기 위해 timerfd_create를 호출하여 FD를 생성해야 합니다. 대량의 클라이언트(예: 1만 개)에 대해 개별 타이머를 설정할 경우, 1만 개의 추가적인 FD가 생성되어 ulimit 제한에 도달하거나 커널 구조체 오버헤드가 발생할 수 있습니다.
  • kqueue (BSD): EVFILT_TIMER를 사용합니다. 이는 FD를 생성하지 않고 커널 내부의 타이머 기능을 직접 참조합니다. 따라서 사용자 프로세스는 FD 소모 없이 다수의 타이머 이벤트를 등록 및 관리할 수 있습니다.

4. 인터페이스 통합 수준 (Unified Interface)

이벤트 감지를 위한 API 구성에서도 차이가 있습니다.

  • Linux: 감시 대상에 따라 서로 다른 API를 사용해야 하는 경우가 많습니다.
    • 파일 변경 감지: inotify
    • 프로세스 상태 감지: waitpid 또는 signalfd
    • 소켓 I/O: epoll
  • BSD: kqueue 하나의 인터페이스로 다양한 이벤트를 통합 처리합니다.
    • 파일 변경 감지: EVFILT_VNODE
    • 프로세스 종료 감지: EVFILT_PROC
    • 시그널 감지: EVFILT_SIGNAL

5. 결론: 설계 접근 방식의 차이

kqueue struct kevent 구조체와 다형적인 필드(data, fflags)를 사용하여 초기 학습 비용이 높을 수 있습니다. 그러나 이는 다양한 이벤트를 단일 메커니즘으로 처리하기 위한 설계의 결과입니다.

요약하자면, 리눅스는 기존의 파일 디스크립터 모델을 확장하여 새로운 기능을 수용하는 방식으로 발전해 왔으며, BSD는 별도의 통합된 이벤트 서브시스템을 구축하는 방식을 택했습니다. 이러한 설계의 차이는 대규모 동시성 처리 및 자원 관리 효율성 측면에서 서로 다른 특성을 보입니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이제는 의미 없어진 것 같은 시상식은? 운영자 25/12/01 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
2905619 아 서비스회사 오니까 주말에도 자꾸 찾네 ㅅㅂ ㅇㅇ(1.244) 11.30 60 0
2905617 냥덩 발명 없는 새로운 프갤 뉴프로로 와라 헬마스터갤로그로 이동합니다. 11.30 59 1
2905613 물론 러스트로 작성해도 sql인젝션 못막는거 맞아 [7] 프갤러(42.18) 11.30 113 0
2905612 ㅉㅉ 러스트로 개발했으면 짱개가 못털어갔을것을 [1] 프갤러(223.63) 11.30 65 1
2905600 인지과학조져라 손발이시립디다갤로그로 이동합니다. 11.30 41 0
2905599 중국인이 아니라 오픈소스 때문에 털린거겠지 [1] ㅇㅇ(114.30) 11.30 99 1
2905598 요즘드는 의문 [2] 슈퍼막코더(126.253) 11.30 85 0
2905597 아레나 할당기 설계 구현 gg침 [3] 나르시갤로그로 이동합니다. 11.30 54 0
2905595 [애니뉴스] 깃허브 애니뉴스 모바일버전 지원 ㅇㅇ(121.172) 11.30 28 0
2905594 [애니뉴스] pienovel.web.app 코드 수정 ㅇㅇ(121.172) 11.30 24 0
2905592 ㅈ소에서 이 경험해본적 있나 [2] ㅇㅇ(118.235) 11.30 88 0
2905581 국비신입 받아본적 있냐 [20] 프갤러(222.96) 11.30 156 0
2905579 무능극좌 폭동배급견 4050 범죄자세대 ♥멘헤라냥덩♥갤로그로 이동합니다. 11.30 47 1
2905578 vscode에서 파이썬 인터프레터가 안 뜨는데 왜 그런거야? [2] 프갤러(203.249) 11.30 62 0
2905576 쿠팡 개인정보 유출은 중국인 전직원의 소행 [8] chironpractor갤로그로 이동합니다. 11.30 131 1
2905575 낙상홍 ㅇㅅㅇ [4] 헤르 미온느갤로그로 이동합니다. 11.30 61 0
2905574 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 11.30 39 0
2905573 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 11.30 57 0
2905572 Ada: 사용자 정의 메모리 관리 (Storage Pools) 나르시갤로그로 이동합니다. 11.30 43 0
2905570 내가 퇴물이 되어감을 느낄때 [1] 프갤러(45.150) 11.30 79 0
2905554 프갤 XSS 아직도 되나 [2] ㅇㅇ(119.197) 11.30 77 0
2905553 이거 왜 스크립트 실행이 안되냐 [2] ㅇㅇ(119.197) 11.30 94 0
2905552 바카라 사이트 디시 먹튀 없는곳 ㅇㅇ(122.26) 11.30 31 0
2905547 일본 취업 유학 워홀 여행 관련모임 ㅇㅇ(106.146) 11.29 89 0
2905546 30초중반 직딩인데 여기서 뭘 더 따야 승승장구 가능? 관세사는 안될듯. ㅇㅇ(203.232) 11.29 125 0
2905543 탑 명문대 정시 입결!J 프갤러(121.142) 11.29 89 2
2905537 나님은 미래를 걷는당⭐ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 105 0
2905535 졸리당.. ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 80 0
2905534 발정난 멍퀴벌레 회생방안 [3] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 81 0
2905531 왜 나님께 이런일이.. [7] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 85 0
2905517 지금껏 다녀본 업소들 유형별 특징.txt ㅇㅇ(118.235) 11.29 79 0
2905505 요즘 내가 너무 발전이 없어.. [3] cvs.갤로그로 이동합니다. 11.29 82 0
2905493 모처럼 모진말들을 뱉어내고 나면 [6] 개멍청한유라갤로그로 이동합니다. 11.29 85 0
2905491 외국계 it support 테크니션이면 어떤 일임?? [2] 프갤러(121.138) 11.29 49 0
2905490 나님 끙야하면서 트림했어양⭐+ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 105 0
2905489 나님 달밤의 끙야즁⭐+ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 78 0
2905488 이태원 모욕죄 벌금 100이면 인생 하드모드 입갤임? 취업, 이민 종결? ㅇㅇ(118.235) 11.29 49 0
2905486 저 애미뒤진새끼는 아직도 있노 ㅇㅇ(223.38) 11.29 89 0
2905482 뿡야하면 냥덩이 한번 털어줘야함❤+ [4] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 78 0
2905475 이태원모욕죄100만원 정식재판청구? 걍내고끝내? 인생에 별 지장 없? [2] ㅇㅇ(118.235) 11.29 64 0
2905472 35살 모욕죄 전과자+좆견인인데, 관세사따면 결혼 가능 스펙임? [1] ㅇㅇ(203.232) 11.29 105 0
2905471 우왓, 연회중에 피분수가..ㅡㅡ;; [2] 박정희대통령갤로그로 이동합니다. 11.29 77 4
2905465 모기로 프린터를 만들어 발명도둑잡기(211.235) 11.29 38 0
2905464 청소년이 밤 10시 이후에 발명도둑잡기(211.235) 11.29 36 0
2905463 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 71 0
2905461 사람인하고 점핏하고 다른 회사임? ㅇㅇ(182.228) 11.29 40 0
2905460 경력 1년이상, 3년이상 뽑는 회사 [2] ㅇㅇ갤로그로 이동합니다. 11.29 81 0
2905456 유관순은 3.1운동할 때 인공기 흔들었냐? [2] chironpractor갤로그로 이동합니다. 11.29 64 0
2905454 중·일 갈등 ‘패싱’ 미국에···일본은 불안하다 발명도둑잡기(118.216) 11.29 52 0
2905453 ‘한미일 vs 북중러’ 구도 위험성 더 커진다 [2] 발명도둑잡기(118.216) 11.29 56 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2