작업이 시간 조각을 먹은 후에는 빨강 - 검정 나무에 다시 삽입됩니다. 작업이 이전에 오랜 시간 동안 잠자기 상태가되어 실행 대기열의 다른 작업과 비교하여 매우 작은 vruntime이 발생하면 빨간색 - 검은 색 트리의 맨 왼쪽 노드로 반복적으로 다시 삽입됩니다. 맞습니까? 결과적으로 실행을위한 다음 작업으로 항상 선택됩니다. core.c와 fair.c에서 소스 코드를 확인 했으므로이 작업이 다른 작업에 양보해야하는 곳을 찾지 못했습니다. funciton pick_next_entity()에서는 cfs_rq-> next, cfs_rq-> last 등의 태스크를 보았지만 실행 우선 순위가 더 높을 수도 있습니다.이 태스크가 매우 작은 태스크를 막는 올바른 위치라고는 생각하지 않습니다. vruntime에서 프로세서를 너무 오랫동안 사용하지 않았습니까? 누구는 단서가 있습니까? 감사합니다,리눅스 CFS 스케줄러는 매우 작은 vruntime을 가진 작업이 프로세서를 굶는 것을 어떻게 막을 수 있습니까?
2
A
답변
3
답변을 찾았습니다. 작업이 실행 큐에서 디큐 경우 가이 호출됩니다 SE-> vruntime - = cfs_rq-> min_vruntime 작업을 다시 실행 큐의 대기열에 포함되면이 호출됩니다 SE-> vruntime + = cfs_rq-> min_vruntime 실제로 작업이 잠자기 상태 일 때 vruntime의 오프셋 만 저장되고 잠자기에 깨어 났을 때 오프셋이 다시 추가됩니다.
관련 문제
- 1. CFS 스케줄러 : 느려지도록 작업의 vruntime을 변경하십시오.
- 2. UI가 멈추는 것을 어떻게 막을 수 있습니까?
- 3. 자바 스크립트와 CSS가 엉망이되는 것을 어떻게 막을 수 있습니까?
- 4. 파이썬 모듈이 다른 모듈을 호출하는 것을 어떻게 막을 수 있습니까?
- 5. Mercurial (또는 Git) 브랜치가 잠기는 것을 어떻게 막을 수 있습니까?
- 6. ARM 프로세서를 사용할 수 있습니까?
- 7. Github의 개발 브랜치가 AppHarbor과 동기화되는 것을 어떻게 막을 수 있습니까?
- 8. iOS 앱이 금이가는 것을 어떻게 막을 수 있습니까?
- 9. mysql에 중복 정보가 업로드되는 것을 어떻게 막을 수 있습니까?
- 10. 물체가 올바르게 폐기되는 것을 어떻게 막을 수 있습니까?
- 11. 콘텐츠를 변경하면 버튼의 크기가 변경되는 것을 어떻게 막을 수 있습니까?
- 12. iOS 앱에서 Xcode가 CoreLocation.framework를 무시하는 것을 어떻게 막을 수 있습니까?
- 13. 반복하는 동안 파이썬이 공백을 추가하는 것을 어떻게 막을 수 있습니까?
- 14. 클릭하면 특정 요소로 자동 스크롤되는 것을 어떻게 막을 수 있습니까?
- 15. WP7에서 화면이 어둡게되는 것을 어떻게 막을 수 있습니까?
- 16. 대기열에 닿기를 막을 수 있습니까?
- 17. 작은 학습 곡선을 가진 C++ 그래픽 API - 리눅스
- 18. 크론 작업이 시작되었거나 완료되었다는 것을 어떻게 알 수 있습니까?
- 19. Hibernate가 문자열을 자르는 것을 어떻게 막을 까?
- 20. lucene * .cfs 수 증가율
- 21. 복합 작업이 아닌 동안 공사를 막을 수있는 방법이 있습니까?
- 22. 안드로이드가 내 앱을 죽이는 것을 막을 수 있습니까?
- 23. VxWorks 스케줄러는 어떻게 실행됩니까?
- 24. html로 요소의 추락을 어떻게 막을 수 있습니까?
- 25. 클릭하면 퀵타임 비디오가 멈추는 것을 막을 수 있습니까?
- 26. 파이썬에서, 함수가 KeyboardInterrupt와 SystemExit을 잡는 것을 막을 수 있습니까?
- 27. 단추 탭 이벤트가 목록보기로 버블 링되는 것을 어떻게 막을 수 있습니까?
- 28. 폼이 포커스를 훔치는 것을 막을 수 있습니다.
- 29. 라이트 박스가 click.how에서 닫히는 것을 막을 수 있습니까?
- 30. window.history.forward 후에 추가 자바 스크립트가 실행되는 것을 막을 수 있습니까?
나는 수면 후에 프로세스가 깨어 난 경우에 당신의 요점을 이해했습니다. 하지만 http://stackoverflow.com/questions/24947547/linux-cfs-scheduler에서이 질문을 설명 할 수 있습니까? 이런 식으로 cfs가 두 프로세스 p1과 p2가있는 경우 기아를 방지하는 방법은 p1이 꽤 오랜 시간 실행되어 프로세스 p2가 시작되면 vruntime이 커지므로 vruntime이 0이되면 새 작업은 p1에 대해 예약됩니다. vruntime은 적습니다. –