Linux 커널에는 설정이 없습니다 CONFIG_NO_HZ
. 그러나 예비적인 내용을 읽어 보면 성능 측면에서 이 옵션을 설정하는 것이 좋을 것으로 나타났습니다. 하지만 좀 읽어봐이런 게시물다시 생각하게 만들었어요.
CONFIG_NO_HZ
기본적으로 설정되어 있지 않거나 활성화한 후에도 성능이 향상되지 않는 이유 는 무엇입니까 ?
답변1
틱은 하드웨어 타이머에 의해 생성된 인터럽트이며 CONFIG_HZ 커널 구성에 의해 결정된 정기적인 간격으로 발생합니다. 이는 대부분의 아키텍처에서 커널이 컴파일될 때 구성될 수 있습니다. 틱 인터럽트는 CPU별 인터럽트입니다. Linux 2.6.21부터 유휴 동적 클럭 기간 기능은 CONFIG_NO_HZ 커널 구성 옵션을 사용하여 구성할 수 있습니다. 목표는 더 깊은 절전 모드로 들어갈 수 있도록 유휴 상태일 때 틱 인터럽트를 제거하는 것입니다. 이는 랩톱의 경우 중요하지만 서버실의 전기 요금을 줄일 수도 있습니다. Linux 3.10.0에는 CPU에서 단일 작업을 실행할 때 틱 중단을 제거하기 위한 완전한 동적 틱 기능이 도입되었습니다. 여기서 목표는 스레드가 중단 없이 실행되도록 보장하여 고성능 컴퓨팅 및 실시간 사용 사례를 더 효과적으로 지원하는 것입니다. 이전 구성 CONFIG_NO_HZ는 CONFIG_NO_HZ_IDLE로 이름이 바뀌었고 새로운 기능에는 새로운 구성 옵션 CONFIG_NO_HZ_FULL이 추가되었습니다.
귀하의 질문에 대한 대답은 CONFIG_NO_HZ(_IDLE)가 유휴 상태에 들어가고 나가는 비용을 증가시켜 유휴 CPU가 작업을 재개하는 데 걸리는 시간을 약간 증가시킨다는 것입니다. 대기 시간에 매우 민감한 환경에서는 이 비용이 너무 높은 것으로 간주될 수 있습니다. 다른 사람들에게는 유휴 CPU의 타이머를 비활성화하는 것이 배터리 구동 시스템의 경우 거의 확실하게 옳은 일이며 이는 두 배로 사실입니다.
답변2
성능 향상은 모든 사람에게 표시되는 것이 아니라 DSP, 오디오/비디오 처리 등 RT 코어가 정말 중요한 사용자에게만 표시됩니다. 따라서 이 구성 옵션은 일반적으로 유익하지 않으므로 비활성화됩니다.