hyojeonglee / osfall2019

Undergraduate Operating Systems course (2019 fall)
17 stars 8 forks source link

프로젝트2 디자인리뷰 FAQ #30

Open hyojeonglee opened 5 years ago

hyojeonglee commented 5 years ago

Q1. WRR은 priority를 어떻게 줘야 하나요? A1. rt_prio 부근을 수정하셔서 priority에 관계 없이 동작하게 만드시면 됩니다.

Q2. Hotplug에 대한 처리는 어떻게 해야 하나요? A2. CPU를 굳이 꺼가면서 테스트 하지는 않겠습니다. 따라서 비우는 run queue를 하드코딩하셔도 상관 없습니다.

Q3. Load balancing은 어떤 CPU를 써야 하나요? A3. Load balancing만은 hotplug가 일어나는 상황에서 잘 돌아가는지 코드를 확인해서 채점하겠습니다. 실제로 hotplug를 해보지는 않겠지만, 특정 CPU가 꺼지더라도 load balancing은 되어야 합니다 (arm64 환경만 고려합니다).

Q4. 디버깅은 어떤 식으로 해야 하나요? A4. kernel/sched/debug.c를 적당히 고친 후, cat /proc/sched_debug를 입력하시면 scheduling 관련 디버깅 정보가 나옵니다. 일반 계정 테스트의 경우 ID: owner, PW: tizen을 사용하시면 됩니다.

Q5. wrr 스케줄러가 적용되는 시점이 언젠가요? A5. 부팅때부터 모든 태스크가 wrr로 실행되는 방식이 아닙니다. (과제 명세의 ‘Tasks will manually be switched to use SCHED_WRR using system call sched_setscheduler().’ 부분 참고) 즉, 유저레벨에서 sched_setscheduler 시스템콜을 사용해 wrr로 policy를 변경해주시면 됩니다.

Q6. CPU 하나의 wrr_rq를 비우도록 구현할 때 setscheduler의 동작 A6. (1) 가용한 다른 CPU가 있으면 "태스크를 그 CPU에서 실행"되게하고 정책을 wrr로 바꿈 (2) 가용한 것이 없을 때는 에러를 리턴 이 때, "태스크를 특정한 CPU에서 실행"되게하는 시스템콜이 있으니 활용하시면 됩니다.

(기타) 데모 영상 예시: https://drive.google.com/open?id=1K-4x7ILSbdfcH0IovhOqrxnL1OzOWlOG