저는 최근까지 4코어 CPU에서 완벽하게 실행되던 4개의 작업자 스레드가 있는 멀티스레드 애플리케이션을 가지고 있습니다.
시스템에서 Ubuntu 16.04.3 LTS를 실행 중입니다.
오늘은 운영체제를 업데이트했어요sudo apt-get dist-upgrade
그런데 갑자기 내 애플리케이션의 성능이 크게 저하된 것을 발견했고, 이를 작업자 스레드의 무의식적인 컨텍스트 전환으로 추적했습니다.
/proc/xxx/status의 작업자 스레드를 보면 초당 80개의 비자발적 컨텍스트 전환에 의해 영향을 받는 것을 알 수 있습니다.비자발적_ctxt_switch그 분야가 빠르게 늘어나고 있습니다.
초당 최소 30회 이상 대기열에 작업이 없으며 작업자 스레드는 자발적으로 절전 모드로 전환됩니다.
스레드 NICE 값은 0이고 PRIORITY는 20입니다.
비자발적인 컨텍스트 스위치가 나타나는 이유는 무엇입니까? Ubuntu가 최근에 커널의 스케줄러나 다른 내용을 변경했습니까? 왜 그리고 누가 스레드를 충돌하는지 알아낼 수 있는 방법이 있습니까?
플러스: 페달을 교체할 뿐만 아니라 다시 수리하는 데도 꽤 시간이 걸립니다.