startlink   2년 전

안녕하세요.

BOJ 게시판, 블로그, 다른 사이트 게시판 또는 슬랙, 디스코드를 보면서 자주 보이는 글 또는 댓글에 대한 답변을 여기에 작성합니다.

1. 사이트 이용자가 많으면 수행 시간에 영향을 미친다.

아닙니다. 웹 서버와 채점 서버는 분리되어 있습니다. 사이트에 아무리 많은 인원이 접속해 있다고 하더라도, 채점 서버는 한 번에 하나의 제출만 채점하기 때문에 실행 속도에는 영향이 없습니다.

채점 서버는 평균 14개 정도를 켜고 있습니다. 이용자가 많으면 "기다리는 중"에서 머무는 시간이 길어질 수는 있습니다.

2. "채점 준비 중"에 오래 걸려 있으면 수행 시간에 시간에 영향을 미친다.

아닙니다. "채점 준비 중'은 채점을 하기 위해 준비하는 과정이라 수행 시간에는 영향을 미치지 않습니다.

3. 같은 소스를 여러 번 제출하면 수행 시간이 변한다.

맞습니다. 같은 소스를 여러 번 실행했을 때 수행 시간이 변하지 않는 것이 더 이상하다고 생각합니다. 채점 서버는 채점 프로그램 이외에 채점에 필요없는 별도의 프로그램을 추가로 실행시켜놓지는 않습니다.

컴퓨터에서 웹 브라우저를 실행했을 때, 폰에서 앱을 실행했을 때도 켜지는데 걸리는 시간이 매번 다른 것 처럼 제출한 소스 코드도 마찬가지입니다. 접속자가 많거나, 채점 대기 중이 많은 것과는 아무런 관계가 없습니다.

추가로 시간은 4ms 단위로 측정합니다. 시간은 getrusage를 사용합니다. https://man7.org/linux/man-pag...

자세한 내용은 https://man7.org/linux/man-pag... 의 The software clock, HZ, and jiffies 항목을 참고하세요. 기본값이 250Hz 이기 때문에, 4ms 단위로 측정합니다.

따라서, 같은 소스의 실행 시간이 실제로는 변했어도, 위의 이유 때문에 같은 시간으로 보여질 수는 있습니다.

4. 내 요청이 무시되었다.

아닙니다. 게시판 글은 69732번 글 (2021년 6월 15일) 이후로 현재 순서대로 처리하는 것을 멈추었습니다. 글 하나를 처리하는데 생각보다 오랜 시간(평균 5-10분)이 걸립니다. 빠르게 처리할 수 있는 데이터 추가만 먼저 처리하고 있습니다. 또는, 재채점 대상 제출이 너무 많아서 재채점에 오래 걸리는 경우도 미리 재채점 하고 있습니다.

4달 글을 몰아서 2주일 동안 처리하고, 다시 4달 밀리고, 다시 몰아서 2주 동안 처리하고, 다시 밀리고 이 무한 반복을 해결하기 위해서 좀 다른 방법으로 접근하려고 합니다.

5. 재채점을 돌리느라 기다리는 중에 오래 걸려있다.

모든 채점 서버가 재채점을 처리하지는 않고, 평균 1-2개 정도가 재채점을 처리하고 있습니다. 기다리는 중이 긴 이유는 여러가지가 있는데, 보통 채점 시간이 오래 걸리는 제출에 제출이 갑자기 몰리는 경우, 정말로 제출이 갑자기 많아진 경우 등이 있습니다.

원래는 채점 현황에서 기다리는 중이 2페이지를 넘지 않아야 한다는 기준을 가지고 있었는데, 1페이지에 담기는 제출의 수가 2021년 오후 4-5시에는 30초, 2022년 오후 4-5시 정도에는 10초 정도로 크게 차이가 납니다.

현재는 기다리는 중인 제출이 5분 동안 늘어나는 추세를 보일 때 채점 서버를 임시로 더 켜서 해결하고 있습니다.

댓글을 작성하려면 로그인해야 합니다.