Gentoo를 사용하여 가상 머신을 게스트로 실행할 때 tik_periodic 함수가 상당한 오버헤드를 발생시키는 것을 발견했습니다. (이것은 모든 타이머 인터럽트에서 실행되는 기능입니다.) 이 함수는 write_seqlocks를 사용하여 오버헤드가 발생하는 전역 jiffy를 업데이트합니다.
내 구성 파일에 HZ 및 관련 항목이 있습니다.
sharan013@sitmac4:~$ cat /boot/config | egrep 'HZ|TIME'
# CONFIG_RCU_FAST_NO_HZ is not set
CONFIG_NO_HZ=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
# CONFIG_MACHZ_WDT is not set
CONFIG_TIMERFD=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_X86_CYCLONE_TIMER=y
CONFIG_HPET_TIMER=y
분명히 구성이 1000으로 설정되어 있지만 이렇게 하면 sysconf(_SC_CLK_TCK)
타이머 빈도가 100입니다. 그렇다면 내 시스템 타이머 주파수는 무엇입니까?
내가 원하는 것은 빈도를 100으로 낮추거나 가능하다면 더 낮추는 것입니다. 이는 폴링/선택 및 스케줄러 시간 분할의 상호 작용 및 정확성에 영향을 미칠 수 있지만 타이머 중단을 줄이기 위해 이러한 사항을 희생할 준비가 되어 있습니다. VM 속도가 빨라지기 때문입니다.
내가 무엇을 해야 하는지 알아내려고 할 때 구성 파일을 변경하여 수행할 수 있다는 내용을 읽었고, 다른 곳에서는 실행 매개변수에 Divider=10을 추가하면 작업이 수행된다는 내용을 읽었습니다. 다른 곳에서는 다음과 같은 내용을 읽었습니다. (CONFIG_HIGH_RES_TIMERS)
타이머 빈도를 높이지 않고도 낮은 대기 시간을 달성하도록 타이머를 설정할 수 있고 틱 없는 시스템으로 동일한 효과를 얻을 수 있는 경우에는 이러한 기능이 필요하지 않습니다 CONFIG_NO_HZ
.
올바른 접근 방식이 무엇인지 매우 혼란 스럽습니다.
내가 원하는 것은 타이머 인터럽트를 가능한 한 낮게 줄이는 것입니다.
이 작업을 수행하는 올바른 방법을 알 수 있습니까?
고마워요, 시아란