▲GN⁺ 2023-11-17 | parent | ★ favorite | on: 실시간 사전 차단의 최종 목표(lwn.net)Hacker News 의견 QNX 마이크로커널의 장점 QNX 마이크로커널은 수십 년 전부터 모든 작업에 상한선을 두어 신뢰성을 보장함. 마이크로커널 코드는 수만 줄에 불과하며, 메모리 할당, CPU 디스패치, 프로세스 간 메시지 전달만 담당함. 드라이버와 로거를 포함한 모든 기타 기능은 사용자 공간에 있어 높은 우선순위 스레드에 의해 선점될 수 있음. QNX 커널은 문자열 작업을 전혀 하지 않아, 문자열 파싱, 포매팅, 메시지 전달에서 발생하는 문제가 없음. 리눅스의 실시간 처리 문제 리눅스는 실시간 처리에 적합하지 않은 구조로, 커널 코드가 수백만 줄에 달하며 모든 코드를 선점 가능하게 만들어야 함. 실시간 아키텍처로서의 부적합성 때문에 이를 수정하는 데 수십 년이 걸림. 커널 문제에만 초점을 맞추는 것은 CPU 수준의 문제를 간과하는 것일 수 있음. 커널의 로깅 기능과 실제 사용 사례 시스템이 다운되는 상황에서도 로그 메시지를 출력하기 위해 커널이 얼마나 노력하는지에 대한 예시가 실제 배포에서 어떻게 활용되는지 설명함. 실시간 하드웨어/소프트웨어 조합의 대체 가능성 실시간 처리가 필요한 하드웨어/소프트웨어 조합이 저렴하고, 저전력, 고클럭의 ARM 및 x86 칩으로 대체될 수 있는지에 대한 의문 제기. 클럭 속도가 높아지면서 완벽한 실시간 처리의 중요성이 감소할 수 있음을 언급. "하드" 대 "소프트" 실시간 애플리케이션의 구분 "하드" 실시간 애플리케이션에서는 리눅스와 같은 범용 OS를 사용하지 않는 것이 바람직함. "소프트" 실시간 애플리케이션(예: 비디오컨퍼런싱, 오디오 재생)에서는 약간의 지연이나 프레임 손실이 큰 문제가 되지 않음. 리눅스를 실시간 OS로 만들고자 하는 논의는 이미 가능한 "소프트" 실시간 사용 사례에 초점을 맞춤. 커널을 완전히 선점 가능하게 만들고 스케줄링에 대한 제어를 높이는 것은 실시간 OS나 베어메탈 코드를 대체하려는 목적보다는 시스템의 건전한 관리에 더 큰 의미가 있음. 리눅스 커널의 실시간 처리와 하드웨어의 한계 리눅스 커널이 실시간 처리를 지원하더라도, 캐시와 CPU 내부의 복잡한 기능 때문에 하드웨어가 실시간을 지원하지 못할 수 있음. 진정한 실시간 처리를 위해서는 복잡한 하드웨어 대신 단순한 CPU 아키텍처가 선호됨. 동기 로깅의 문제점 GLOG(구글의 로깅 라이브러리)와 같은 동기 로깅이 디스크 I/O에 블록되어 서비스가 지연되는 문제를 경험함. 특정 프로세스의 응답성 보장 방법 특정 프로세스의 응답성을 중요시한다면, 해당 프로세스에 전용 CPU 코어와 연속된 메모리 영역을 할당하고, OS의 나머지 부분과 분리된 네트워크 카드에 직접 접근할 수 있도록 해야 함. 리눅스의 실시간 선점 기능과 과거 경험 과거에 리눅스 커널에 RT_PREEMPT 패치를 적용하여 과학 장비에 사용했던 경험과 그로 인해 개선된 지연 시간과 지터에 대한 인상을 공유함. 일반 사용자에게 미치는 영향 실시간 처리 기능이 일반 사용자에게 어떤 의미가 있는지, 특정 상황에서만 활성화할 것인지, 일반적인 시스템의 반응성 향상에도 도움이 될 수 있는지에 대한 질문 제기.
Hacker News 의견
QNX 마이크로커널의 장점
리눅스의 실시간 처리 문제
커널의 로깅 기능과 실제 사용 사례
실시간 하드웨어/소프트웨어 조합의 대체 가능성
"하드" 대 "소프트" 실시간 애플리케이션의 구분
리눅스 커널의 실시간 처리와 하드웨어의 한계
동기 로깅의 문제점
특정 프로세스의 응답성 보장 방법
리눅스의 실시간 선점 기능과 과거 경험
일반 사용자에게 미치는 영향